2015년 7월 12일 일요일

Google I/O Extended 2015 서울, Android track

Google I/O Extended 2015 서울 참가 후
세션 내용 중 생각 나는 것 대충 정리

Google I/O Extended 2015 서울
: http://festi.kr/festi/2015-io-extended-seoul/

시간 : 2015년 7월 12일 13시~18시
장소 : 세종대학교 광개토관 컨벤션홀


안드로이드 track을 들었음.

- 구글 I/O 에서 전해진 새로운 안드로이드 소식들, 양찬석
 : http://www.slideshare.net/chansukyang/m-50490336?from_m_app=android

- Veni, Vidi, Built, 김용욱
 . 발표자료 : https://github.com/dalinaum/veni-vidi-built

- 안드로이드 측정 도구, 차영호

- Android Design Support Library, 김태호
 . 발표자료 : http://www.slideshare.net/jyte/20150712-support-designlibrary

* 아직 동영상은 안올라온듯 GDG Korea 쪽 참고하시길.


[듣다가 대충 기록한 것들]

* 자세한 것은 동영상이나 발표자료를 참고.
* 발로 메모한거라 오타 작렬.


[구글 I/O 에서 전해진 새로운 안드로이드 소식들, 양찬석]

참고로 상세한 내용은 아래 링크에서 확인 가능함.
: http://developer.android.com/intl/ko/preview/behavior-changes.html

[런타임 앱 권한]

- 기존에 설치 시 권한을 요청하고 일괄 승인 했던 것을
M target app에서는 이전처럼 manifest에 권한을 명시하더라도
권한을 사용할 때 사용자에게 다시 물어보도록 함.
또한 환경설정에서 앱별 권한을 설정할 수 도 있음.

- Runtime 시 개별적으로 권한을 요청 할 때 시스템 프로세스 상에서 권한 요청이 실행 됨.
- 액티비티 뿐만 아니라 서비스에서 Runtime시 permission 요청을 해야 할 수 있음.

- 콜백으로 사용자 응답 받게 되므로 기존 권한을 사용하던 부분을 callback trigger를 전후로 나눠 처리 해야 함.

- M 이전 Android 버전들 타겟 앱은 이전 방식 처럼 권한을 수락하게 됨.

- M 버전 기반 앱의 권한이 거부되면 안드로이드에서는 가짜 데이터를 제공할 예정이고 앱의 동작은 가늠할 수 없으므로 앱이 권한 거부 상황을 잘 처리하도록 만들어야 함.

- 권한이 변경되더라도 자동으로 업데이트 가능함. (설치 시 권한 수락이 필요 없으니)


[Doze, 엡 대기 모드]

Active -> In-active -> IDLE-Pending -> Sensing(유휴상태확인)
IDLE <-> IDLE maintenance

-대기모드에서는
. 네트워크 작업 불가
. 백그라운드 작업 불가
. Wake lock 무시
. Wi-Fi scan 멈춤

- 추후 GCM 을 통해 앱을 깨울 수 있게 하려 함.


[오토 백업]

25MB가 넘지 않으면 M 타겟 앱의 데이터가 사용자 구글 드라이브로 백업 됨.
추후 앱이 다시 설치 되면 기존 데이터가 업데이트 됨.

-백업 조건
. 백업은 24시간 내, 충전 중, 유후, Wi-Fi 연결
- M타겟일 때는 자동으로 백업
- XML 파일을 사용해 선택적 백업 가능

. 개인적인 생각으로 M은 사용자에게 도움이되는 방향으로 가는 것 같다.



[Veni, Vidi, Built, 김용욱]

* 발표 자료내 동영상이 좀 제대로 안나와서 초고수님이 좀 긴장을 하시며 발표를 하신듯.

- Gradle은 그루비를 사용 중
- Task 간 dependency 를 지정 할 수 있음.

안드로이드 gradle 에서

Build.gradle => 전체 빌드 설정
App/build.gradle => app 모듈 빌드 설정
Settings.gradle => Import app module

- JCenter vs Maven Central
. Maven central 은 최초 접곡시 다소 시간이 소요 되고 HTTPS 지원 안함. 모듈 올리기 어렵다.

- Type: exec를 상속 받고 PreBuild.dependsOn으로 지정하면 외부 스크립트 사용 가능

[New android plugin experimental]

- Gradle wrapper 앱 빌드 환경에서 버전 2.5로 변경하고 Build.gradle 변경

- App/build.gradle 에서
. Com.android.model.application 로 변경 됨 -> Component model mechanism의 영향
. 변수처럼 설정입력
. 설정명 들이 좀 변경 됨

[NDK support]
- Local.property에서 ndk.dir 추가

- Build.Gradle 에서
Android.ndk 명시, Android.productFlavors에 cpu 타입 명시 필요

- App/src/main/jni에 c 파일 추가


[Jack and Jill]

- Jack : java android compiler kit
- Jill : jack intermediate library linker

- Build.gradle에서 useJack = true 설정 하여 사용
- 다만 개발 중이라 빌드 안되는 앱이 있을 수 있음.
- 동영상에서 후반 질의 내용 중 마지막 질문을 빙자한 해명을 꼭 들어봐야 함.




[안드로이드 측정 도구, 차영호]

[New in Android studio 1.3]
중에서 측정 도구 관련 눈 여겨 볼것이
New Allocation Tracker, New Heap Dump Viewer, NDK 지원

Battery historian, Systrace

[Systrace]
Ftrace로 데이터 가져옴.
크로미엄 trace를 parse 및 ....

Pros
. Low overhead
. 여러 process의 데이터를 수집하므로 dependency 확인 가능

Cons
. 찗은 시간만 확인 가능 5초
. Specific category나 function만 track 가능

- Cmd 상에서는 Platform-tools/sustrace/systrace.py 로 실행, 단 Mac linux 에서만

- DDMS 에서는 아이콘 클릭

- tracing 가능한 Caregory
. Component life cycle
. View inflate, layout, draw
. OpenGL
. Audio camera
. Input event delivery
. Cpu scheduling
. Disk. Kernel. Workqueue 등, 단 Android를 직접 빌드했다면 가능함.

Platform tool r23에서 많이 개선 됨
.프로세스별 그룹핑
. Interaction lane추가로 context 확인 편하게
.성능 alert 표시 및 설명 및 동영상 안내
. 60hz mode 표시 (사용자가 끊김을 인지할 수 있는 너비 표시)
. Script console 지원 (javascript로 수행 가능... 뭘?)


- trace의 로그는
Curils/trace.h 에서 trace marker 추가함 (traceing_mark_write)
시작 시 b, pid, process name 기록
종료 시 e 기록
* 만약 process가 시작되고 종료되는게 순서대로 짝이 맞아야 함. 안맞으면 tracing 불가



[Android Design Support Library, 김태호]

* Design support library가 정말 반가움..

- package : com.android.support:design:22.2.0

[CoordinatorLayout]

- 다양한 방법으로 자식 뷰들의 위치를 지정 할 수 있음.
- 자식의 뷰에서 Behavior(뷰와 상호작용). Anchor(특정위치에 붙는 행위 지정) 지정

- 스크롤에 특화된 레이아웃
- 아래 뷰만 전체 기능 지원
. RecyclerView
. NestedScrollView

- 스크롤이 가능한 부를 자식으로 추가 가능하나 nested scroll 지원 불가

[AppBarLayout]

- Toolbar + TabLayout 구성
- 형제뷰에 scrollFlags 지정

[CollapsingToolbarLayout]

- 일정 높이까지 늘어날 수 있는 Toolbar를 만들 때 사용
- 항상 AppBarLayout의 자식으로 사용

[TabLayout]

- ViewPager indicator
- 액션바에서 제공하던 탭 기능을 분리한 레이아웃

[NavigationMenu]

- App Drawer를 편리하게 구현
- 메뉴를 XML로 구성 가능
- DrawerView?를 Navigation으로 교체

- FitSystemWindows=true 설정으로 제대로 보이도록

- Memu list는 xml로
- Android checkableBehavior는 하나만 선택 되도록
- NavigationItemSelectedListener 구현


[TextInpitLayout]
- EditText의 기능을 확장.
- Hint text, error text 표시 및 애니메이션 지원
- Edittext와 1:1 매칭
- 색상이 틀어지는 문제로 인해 EditText 대신 AppCompatEditText 사용 권장
- 색상 미지원 시 colorAccent 노란색 색상
- ColorContolNormal, ColorControlActive


[FloatingActionButton, FAB]

사용자가 자주 사용하는 동작을 지원
- Inbox app의 compose 버튼
- 기본 배경색은 colorAccent

[Snackbar]

- 토스트와 다이얼로그의 중간
- 메시지 + 액션 버튼
- Dismiss listener는 아직 지원 안함. 이슈 제기되어 accept 된 상태
- Snakebar 생성 시 표시할 view를 인자로 넘김


생각대로 잘 안되면...
다음버전을 기다려 봐라.

버그 리포팅 b.android.com
AOSP 소스 s.android.com

http://androidhuman.com/m/post/561 참고

댓글 없음:

댓글 쓰기