2011년 9월 25일 일요일

2011 안드로이드 개발자 랩 코리아 - 노트



2011 안드로이드 개발자 랩 코리아 - 노트
- Softgear Ko, 2011

2011년 9월 22일에 구글에서 “2011 안드로이드 개발자 랩”을 열었습니다. 작년에 이어 두 번째로 열리는 이벤트이며,  안드로이드 개발자를 대상으로 하는 이벤트입니다. 신청자 중 200여명만 선정되어 참석할 수 있었습니다.
(안드로이드 개발자 랩 홈페이지: https://sites.google.com/site/adlinkorea/home)
이번 이벤트의 주요 내용은 허니콤이었습니다. 이미 허니콤의 특징 등은 인터넷 및 다른 이벤트에서 많이 알려져 있는 내용이지만, 개발자 측면에서 다시 바라볼 수 있는 기회가 되었습니다. 그리고, 결정적으로 참석자 전원에게 갤럭시탭 10.1인치를 나누어 주었습니다.
참고로, 이벤트의 발표자료는 공개하지 않는다는 군요. 구글IO 의 발표자료를 참고하라고 합니다.
안드로이드 개발자 랩의 내용을 개조식으로 정리해 봅니다.

= 인사말 =
- 구글코리아 조원규 사장

* 안드로이드는 1억3500만대 이상 개통
* 점유율 33% 에서 48%로 1위
* 태블릿은 연초 1천7백만에서 연말에는 4천5백만대로 늘어날 것으로 예상
* 아직 태블릿용 앱은 부족한 상탱
* 안드로이드의 성공원인은 개방성 덕택
* 태블릿이 성장하려면, 좋은 앱이 많아야 생태계가 살아난다. 여러분들(개발자들)의 적극적인 지원이 필요하다.



= 허니콤 특징 =
- 유스케 마츠오치,일본 

* 이벤트간 질문은 모더레이터 사이트를 이용할 수 있음: https://www.google.com/moderator/#16/e=af6e7
#허니콤 특징
* 시스템바 - 화면 방향에 맞게 돌아감. 우리는 이를 “Orientation Agnostic”이라 함
* Notifications - 미디어 플레이어 포함 등 기능 보강
* Action Bar - 대부분의 앱이 필요하는 UI로, 통일된 인터페이스 제공
* Fragments - 스마트폰용 코드와 공유할 수 있음.
* Loaders - Async Task API 보다 더 편리하게 만듬. 네트워크로부터 비동기적으로 데이터를 다운받을 수 있음
* Drag and Drop - 쉽게 구현 가능
* RenderScripe API - 쉽게 그래픽 랜더링을 가능하게 해줌
  - 스폰지 가루 애니매이션 데모
* Propery Animation Framework - 뷰 애니메이션 기능. 화면 전환 효과 제공
* 엔터프라이즈를 위한 - 암호화 Storage, 패스워드 보호기능, 분실방지
* Media 관련 HTML5 Video 지원
#허니콤 개발 어프로치 어떻게 할 것인가
* 화면이 크다. 화면크기도 다양
 - 픽셀보다는 dp 사용 권장
 - 홀로그래픽 테마에서 어플을 시험해보라
 - 허니콤용으로 작성하고 Compatibility Library를 이용하여 하위 버젼에서 돌게 할 수 있음

= 프로그래밍 팁스 =
- 켄 리우 (작년에도 발표했었음)
* http://j.mp/adl-protips-code
* http://j.mp/adl-protips-apk

#Compatibility(호환성)
* OS의 버젼을 알아내서 그에 맞게 동작하게 하는 방법 설명
* 센서의 종류를 검출하고 그에 맞게 동작하게 하는 방법 설명(자이로스코프 내장여부)
* Orientation 검출방법 - getOrientation()
* 최신 SDK를 사용하라. 하위 호환성이 있으니 더 낫다.

#Tracking
* 자신의 어플을 얼마나 설치하느냐 사용하느냐 추적
* 그를 위한 장치 식별 방법
- TelephonyManager 통한 디바이스아이디
- Settings.Secure.ANDROID_ID
* UUID  (PREP_UNIQUE_ID)
* Google Analytics SDK 이용 가능
- http://j.mp/adl-protips-ga
- 각종 통계 제공

#Location
* 기존 LocationManager는 어플별로 관리되어 시간이 많이 걸리고 배터리 많이 먹음
* Passive Location Provider 제공.
- 위치정보가 어플간 공유
- PASSIVE_PROVIDER
- intent를 받을 수 있음
* http://j.mp/adl-protips-location

#Monitor
* 디바이스의 상태를 알아내 그에 맞는 동작을 취할 수 있음
- wifi냐 3G냐 배터리 상태는 어떤가
- ConnectivityManager : 연결상태 확인
- BatteryManager : 도킹상태, 충전상태 확인 가능

#Service
* 서비스 재시작 행동 설정 가능
- shared preference 에 저장하고 이어서 동작 가능

#Loader
* CursorLoader - 쉽게 데이터를 가져올 수 있음
* BackupManager - Cloud에 데이터 백업

#Misc
* IntentFilter를 사용하여 browsing 편하게 할 수 있음
* 사용자 편의를 위해 키입력시 숫자만 나오게 할 수 있음
* 허니콤은 USB host 기능 가짐
- 관련 API 있음. UsbManager
- ADK. 액세서리 개발 킷
- 로봇데모 : 폰의 자이로스코프 센서를 이용하여 균형을 유지하는 간단한 로봇을 보임(토니)
- ADK에 USB_DEVICE_ATTACH, API 소개
*Heap Memory를 아끼기 위해 자주 호출되는 함수에서는 object를 생성하지 마라. view 최적화 방법
* invalide(rect)로 화면 일부만 refresh하면 성능향상
* 개발자모드일때 켤수 있는 옵션 소개
* http://android-developers.blogspot.com

= 폰 및 태블릿의 UI 디자인 =
- 아니루드 (Anirudh Dewani, 인도)
* UI pattern
- 패턴 : 반복적으로 나타나는 케이스, 해결책
* Action Bar
- 자주 사용되는 형태라 허니콤에 추가됨
- App icon, view detail, action button, 길게 누르면 전환(action mode)
- http://j.mp/customizing-action-bar
* Multi pane Layout
- email 과 같이 여러개의 서브 화면(fragment)으로 구성
- fragment는 Fragment class 또는 XML을 이용할 수 있음
- 태블릿 방향에 따라 배치를 적절하게, 기능성은 모두 유지되어야 함
- intent, event listener 이용하여 parent로 가야함.  fragment 간 connecting이 필요함
* App Navigation
- Back 과 Up : Back은 이전 activity로 감. Up은 같은 activity내 상위 카테고리로 간다는 의미
* 리스트
- 카르셀뷰(3D) 사용 가능 (회전목마)
- http://j.mp/io2011-carousel-sample
- view pager (2D)
* Do
- 초보스럽게 폰용, 타블렛용 따로 만들지 말고, 하나의 apk로 만들어라
- visual design을 custimize하라. Holo theme에 맞게.
- drawable-large-mdpi-v11 에서 large,v11이 타블렛용
* Don't
- API level이 11이상이면 타블렛이라고 가정하지 마라. 12는 아닐수 있다.
- xlarge 는 타블렛이라고 가정하지 마라.
- 작은 폰트를 사용하지 마라.
- 타블렛은 큰 전화기가 아니다. 타블렛은 다른 것이다.
* http://code.google.com/p/iosched

= 안드로이드 마켓의 새로운 기능 =
- 토니 찬
* 안드로이드의 시장 점유율 48%, iOS는 19%
* 한국은 특히 높음 85%, 타이완 70%
* 마켓에 25만개 앱, 60억 다운로드. 폭발적인 다운로드 증가율
* 하루에 55만개가 개통됨 - 잠재적인 고객
* 허니콤 - 다운로드 비율이 진저브레드등 다른 버젼보다 높음. 특히 paid app 비율이 높음
- 허니콤 타블렛 사용자의 구매율이 높음

#안드로이드 마켓 기능
* 29개국에서 유료 개발자 등록 가능. 버그 리포트, 통계 확인 가능
* review process 없어서 빠르게 업데이트 가능
* 131 국가에서 유료앱 다운 가능
* Application Licensing 기능
* 웹에서도 마켓 사용 가능
* 14개 통화지원
* 월별 판매 리포팅 제공
* google checkout 통해 원화로 한국계좌로 입금 받을 수 있음.
- 계정을 다시 만들어야 함. 기존 가입한 경우 가입비 면제
* In-app billing - 디지털컨텐츠 추가 구입. 아이템 구매. 환불이 어려움
* multiple apk 지원
* device availability 지원 - 특정 모델에서는 동작하지 않음을 표시할 수 있음. 궁극적으로 개발자는 그 모델에서 돌아가도록 노력해야 함
* localized listing - 국가별 다른 랭킹 표시
* 새로운 추천  기능
* Badges
- Editor's choice, Top developer
* 큰 app 지원

#팁
* recent changes를 잘 작성하라. 이는 사용자와 커뮤케이션 채널이다.
* 무료로 하기전에 한번더 생각하라. 유료에서 무료 전환후 다시 유료로 전환할 수 없다
* details를 localize하라 - 여러 국가 언어로
* 사진, 아이콘에 신경 쓰라
* 동영상 리뷰를 활용하라
* manifest를 잘 작성하라
* permission 부분이 왜 필요한지 기술하라
* 적절한 가격
* 사용자 comment 등 feedback 에 충실하라
* 성공적인 앱
- 우수한 품질
- 사용자에 대한 지원, 커뮤니케이션
- 지속적 업데이트

= 코드랩 =
* 핸폰용으로 작성된 코드를 타블렛으로 바꾸는 작업.. 생각보다 복잡하다.
* 유스케 마츠오치의 진행을 따라서 참석자가 같이 따라서 코딩해 봄.

*Activity 와 Fragment
언제 XML or Code
- 항상 나타나는 경우 :XML
- 동적인 경우:Code

*fragment와 과 차이점
- include는 기능을 재사용할수는 없다

*fragment와 activity 차이점
- fragmet는 UI가 없을수 있다.

= 질문답 =
*안드로이드 마켓의 광고,스팸 어플 차단 정책?
- 사용자들의 보고에 따라서 처리한다.

* 개별 카테고리별 랭킹 계획이 있는가?
- 랭킹방법이 여러가지가 있어서 순위를 보여주지는 않을 것이다.

* C2DM 디바이스 토큰이 재설치시 사용 가능한가
- 아니두: 브로드캐스트 리시버를 활용하여 예전 토큰을 삭제할 수 있다.

* C2DM 쿼타 limit 및 안정성
- 메일을 통해 필요량 알려달라
- 안정성을 위해 계속 노력하고 있다.

* 큰 DEX 오류, 65000메소드
- android-custom-class-loading-sample 나눠서 만들고 자체 로더를 만들어야 함

* 허니콤 에뮬레이터 속도가 느린데 개선될지? 어떤 기술로 개선할 것인지?
- 예.
- 에뮬레이터는 느리고,개선에는 시간이 걸린다. 그래서 갤탭을 나눠준 것이다.

* C2DM 에서 3rd party 서버 없이 사용자끼리 가능?
- 3rd party 가 반드시 서버 필요한 구조이다.

= 마치며 =
* 이날 참석자 전원에게 갤탭에 추가로 티셔츠와 에코가방을 사은품으로 전달
* 선착순(?) 이벤트로 애드몹에서 몇가지 선물을 주기도 했으나, 저는 못 받았네요.
* 아무튼 구글개발자들도 직접 만날 수 있고, 구글의 개발자를 아끼는 모습을 느낄 수 있었던 유익한 시간이었습니다.

- 끝 -