NHN DEVIEW 2013 모바일 트렉 주요 내용

KEYNOTE

NAVER LABS – 송창현

플랫폼 개발자들이야말로 진정한 개발자이며, 이름없는 영웅들이다. 현재 플랫폼 개발자보다 서비스 개발자들이 많다. 플랫폼 개발자들이 많이 활성화 되기위해 많은지원이 필요로 하고 있고 NAVER에서도 D2와 같은 개발지원센터를 만들어 운영중이다. 이런 플랫폼개발없이 서비스개발만 하게 된다면 내부적인 구조를 모르며 사용하기 때문에 결론적으로 퀄리티높은 서비스가 나오기 힘들다. 

High Performance Android App Development

Kandroid – 양정수

1. The history of Android’s Performance Features

2012년 젤리빈 나오기전

– 안드로이드는 아이폰 성능을 어떻게 따라잡을 수 있을까?

애플 vs 삼성

삼성은 자신들만의 구조를 바꾸고 최적화 해서 애플을 추격했다.(초기 4년) 

2012년 여름 젤리빈 발표 이후

성능을 높였는데 하드웨어와 관련 없는 것이다. 내부적으로 무었을 했는지 알아볼 만하다.

젤리빈의 성능 측정툴을 통해 이전 OS와 비교 하였는데 스크롤을 향상이 되지 않았고, 페이스북에서도 스크롤 포퍼먼스 향상법을 제시 했기때문에 다른 무언가가 있다고 생각해서 직접 측정을 했다.

2. Performance comparison of the Three Programming Model in Android

ListView

주 원인은 이미지 로딩 문제 

LRUCache는 작은 메모리의 기기에서는 문제가 있다. => FileCache 하는 방법이 경험적으로 추천.

– 항상 측정하기 전에 선급한 결론을 내리지 마라. 막연한 상식으로 해결하려 하지마라.

RenderScript(바이트의 중간 코드로 빌드되고 런타임시 디바이스 코드로 변환: 고성능을 유지): 고성능 앱을 위해서라면 필수.

:support v8을 통해 하위 호환성 유지

H/W를 이용해서 앱의 성능을 올려라.(GPU, 멀티코어)

쓰레드를 병렬해라.

3. Case study : Performance Features of Google Chrome Browser in Android

크롬 조직, 안드로이드 조직 두개 통합 => 크롬리더가 조직 관리

크롬과 안드로이드 둘다 생각 해봐야 할떄 

크롬만든이유 

보다안전한, 보다빠른, 보다안정적 =>센드박스 모델(cpp라이브러리 기반)

크롬 앱 분석: 

크롬에서 사용했던 쓰레드 분기 방법을 안드로이드에 적용

매니페스트에서 android:process=”:sandboxed_process:0″ android:isolatedProcess=”true” 자신의 앱에서 별도의 프로세스를 띄운다.

GPU Thread를 따로관리 한다.

VSync(젤리빈의 중요한 기술) 사용: 기존 인터벌로 그림을 그렸는데 프레임이 해당시간에 그려지지 않고 지연되어 끊금으로, 해당시간에 해당프레임을 그리기 위해 VSync로 변경

=>해결은 됐으나 문제가 있어 둘다 통합.

4. Questionnaire : Multi-Core vs. GPU, Android vs. Chrome, Beyond Android

피쳐폰: 기능경쟁

스마트폰: 하드웨어

직접의 한계에 도달(멀티코어가 끝나간다. 별도의 GPU와의 등과 인테그레이션으로 발전가능)

그와관련된 OpenGL등 관련된 기술

안드로이드 VS 크롬

통합 또는 두가지상태로 유지

혹시 통합되면??

1. 안드로이드 중심으로 크롬통합

=>크롬브라우저는 빌드하는 시스템을 가지고 있어야 됨

2. 크롬이 안드로이드를 통합

=>모든 안드로이드앱을 크롬에 실행 가능

안드로이드 앱의 성능테스트, 자동화가 가능할까?

LG전자 – 이경민

측정 할 수 없으면 개선 할 수 없다.

if you can’t measure it, you can’t message it.

소프트웨어 성능테스트는 소프트웨어 개발에 앞서 갖추어야 할 일.

안드로이드 버전별로 성능에 대한 특색이다르다.

안드로이드 앱 포퍼먼스 테스팅 

historical analytics w/kmemtracer

일반적으로 아웃오브메모리 시 heap dump로 분석하지만 이로 인해 문제점을 파악 하기 힘들다.  

앱의 중요한 시점마다 성능지표를 기록하고 히스토리를 분석해서 측정이 필요 하다.

activity의 성능측정은? 

oncreate(), onstart() (x)

instrumentation (o)

kemetracer-libs.jar

callActivityOnCreate() -> OnCreate() 거쳐 실행되는 구조

$> am instrumentation -e class \ 실행될 클래스명

/sdcard/kmemtracer 에 csv저장

고성능 WebView 만들기

SK Planet – 박창현

안드로이드의 웹뷰 문제점

OS 디바이스의 심한 파편화 

평준화 방법:

없는 기능을 새로 만든다.

느린것을 빠르게.

웹뷰 필요 기능:

웹뷰->JS 호출

webView.loadurl(“javascript:…..”);

JS->웹뷰 호출

addjavascriptInterface();

2D Canvas(느리다.)

@Override Canvas.getContext(“2d”)

@Override Cnavas Rendering2DContext()

=>2배 가까이 성능 향상.

Web Sockets(없다.)

onPageFinished()시 Script를 실행 한다.

=>된다.

웹뷰는 mainThread에서 작동 되기 때문에 Thread조심!

쫄지마, 글로벌! 평범한 개발자의 좌충우돌 글로벌 오픈소스 도전하기

카카오 – 심상민

이미만들어진 오픈소스가 있다면 내가 만들면 뭐가 다를까 라는 물음을 던져보자.

문서가 없는 라이브러리는 사용하지 않는다. => 사용자가 개발자인 서비스

라이브러리를 만들기 위해서는 일상에서 힌트를 얻자.

라이브러리도 서비스다.

오픈소스 운영 방법

http://groducubgoss.com

일본 컨퍼런스 – 0.79명의 트윗

한국 컨퍼런스 – 0.03명의 트윗

JsCamp-Asia 참가

영어를 못하지만 도전! 슬라이드도 영어로 번역

싱가포르에서 발표- 다양한 지역에서 들어온다. 

=>영어로 작성한다면 다양한 국가에서 들어오며 지속적인 해외 방문자 접속

이외에도…

검색엔진 최적화, 트위터 계쩡, 페이스북 메타테그 입력, 댓글알바, 기타 소셜 사이트 이용

Applines – 어도비에서 발행하는 웹 매거진 발행

영어가 가장 큰 장벽이지만, 영어가 원인은 아니다.