2017년 7월 2일 일요일

Google I/O 2017 Extended in Seoul

Google I/O 2017 Extended in Seoul에 다녀옴.



거의 자발적으로 행사를 진행하는 것 같아 이런 행사가 매년 있음에 감사하다.
비록 외부 시스템으로 인한 등록 이슈, 애매한 시간 공지가 있긴했지만
전반적인 진행과 내용도 다 괜찮았던 것 같다. 발표자에 따라서 좀 차이는 있지만..

행사 주소
https://io-extended-seoul-17.firebaseapp.com/

발표 세션들
https://io-extended-seoul-17.firebaseapp.com/schedule/


Google I/O 주요 내용이야 기사를 통해서 알 수 있겠지만
이런 행사를 통해서 한번에 직접 들으면서 정리를 하는게
게으른 나에게는 큰 도움이 되고 있다.

대충 적어두고 아 그렇구나 하고 말겠지만
아무것도 몰라서 사용하지 못하는 것보다
대충은 알고 있다가 필요할 때 바로 가져다 쓸 수 있는것도 유익하다.


주로 관심이 많았던 Track A를 듣다가 내게 필요한 부분만 대충 정리함.
아래 사이트에 동영상이 올라와 있어 이를 보는게 좋겠음.
https://www.youtube.com/playlist?list=PLF_OUznA3RTRSTDdjnlzyC-rKVq6nq4S7


[Architecture Components, 김상일]


Google IO 2017에서 첨 소개됨.
함께 아키텍처 가이드가 제공되고 있음
https://developer.android.com/topic/libraries/architecture/index.html

4가지로 구분
. Handling life cycle
. Live data
. ViewModel
. Room

추후 support library로 나올 예정

=Handling life cycle
. Lifecycle, Lifecycle owner, Lifecycle observer로 구성
. Observer 구현하고 등록 삭제하여 사용하면 됨.
. Custom Activity를 사용하려면 owner를 직접 구현하면 된다.

=Live data
Live Data = Observeable data holder
Live data 상속 시 onActive(active onserver가 있을 때). OnInactive(active onserver가 없어질 때)를 구현해야 함.
: https://developer.android.com/topic/libraries/architecture/livedata.html 설명이 명확하지 않았는데 구글 문서를 봐도 명확하지 않음.

=Viewmodel
. View가 변경되어도 configuration을 유지할 수 있음.
. Androidviewmodel은 Viewmodel과 달리 application instance를 인자로 받으므로 필요하면 선택해서 사용하면 된다.
. ViewModel은 뷰와 생명주기가 다르므로 메모리릭 등을 유의해야 함.
 : View, Activity context, Resources를 참조하면 안 됨

=Room

Sqlite ORM이며 아래 클래스로 구성
. Entity
. DAO
. Database

Entity 선언 시 어노테이션 필요
: class내 pojo class들을 의해 embedded 어노테이션 제공
: typeconverter 제공

. DAO interface는 쿼리 작성을 할 수있음.
 : Insert, delete, update는 기본 쿼리로 제공
. Database =sqlite open helper


Data insert는 main thread에서 불가. 런타임 에러 발생

.RXjava vs lifecycle
 : Lifecycle은 rxjava를 잘 사용하고 있다면 굳이 변경할 필요 없고 간단하게 적용해보고자 할 경우


.Room vs greenDAO vs realm
 : Realm이 가장 성능도 좋고 지원하는 feature가 많음(relation지원 강력).
 : Room은 아직 초반이고 feature도 부실한 상황임.

[Kotlin: Make Android Great Again, 김태호]


2011년부터 시작하여 2016년 1.0 공개 2017년에 공식 안드로이드 언어로 추가됨.

Java 1.8은 jack toolchain을 사용하면 가능
https://developer.android.com/guide/platform/j8-jack.html?hl=ko
Retro lamda를 사용하는 것도 방법

안드로이드 기기도 바뀌고
IDE도 바뀐 상태에서
언어는 java 그대로임.

Kotlin에서는
. 람다 지원, it으로 single argument생락 가능
. No getter.setter > property 지원
. Builtin  nullable check > ?
. ?. 지원
. 타입 선언 필요 없음.
. Kotlin android extension응 사용하면 findviewby... 사용할 필요없음.
. Intent도 Anko을 사용하면 간편함
  : https://blog.jetbrains.com/kotlin/2015/05/advanced-features-of-anko/
. Pair > to 사용
. Data class에는 getter setter equal 등을 자동 생성
. 자바코드를 코틀린 코드로 변환해주는 플러그인 있음.

[주의]
. 새로운 코틀링 문법이 최적이 아님
. 자바에서 넘기는 객체는 주의해서 보자.
. 메서드 카운트가 늘어나 multi dex 사용 시 주의

[장점]
. 코드 안정성
. LOC 감소
. Swift. scala 같은 새로운 언어에 적응 가능


[Application 용량줄이기 플레이윙즈 실적용을 중심으로, 신호석]


. Download size < Installed size
. 평균적잉 앱 사이즈큰 23M (Android 12M iOS 34M)
. 플레이윙즈 광고.. 성공적

어플 용량 분석 툴은 Android Studio의 Analyze APK를 사용하면 됨.
 : 용량 분석. Manifest 분석. Apk 비교 분석
 . Android Studio 3.0에서는 프로가드 난독화 확인 가능

줄이는 방법
1. Proguard
 . 코드 난독화
 . 코드 최적화
  : dead code elimination
  : resource shrinking

2. Vector drawables
 . 해상도별 이미지 말고 하나의 벡터 이미지로 모든 해상도 대응
 . support library 사용 필요. App:srcCompat 사용 필요.
 . sketch를 사용하여 벡터 이미지 제작하는 것을 추천
 . 안되면 png 용량을 줄여라.
 . Android Studio 3.0에서는 WebP변환 기능을 제공한다. (단 API 16.18제약)

3. Exclude space translation
 . 번역 중 비어있는 문자열들을 찾아서 주언어를 기준으로 압축함.

4. Set specific circumstance
 . 지원하는 해상도로만 추릴 수 있음.

5. Use downloadable fonts
 . font family에서 downloable google font들을 사용.
 . 구글 downloadble fonts sample앱이 있음.
 . 단 아직은 잘 안되더라...

시간 대비 효과적인 방법을 찾아보는 것이 필요함.

. 시간 대비 Proguard 적용 효과 있음.
. Exclude space translation도 해볼 만 함.
. Vector drawable 효과 좋음


. 벡터 이미지로 변환 시 해상도 제약이 있으니 확인 필요.
. 일러 사용으로 svg 추출 시 문제가 생겨 스케치를 사용함.
. 5.0에서 벡터 이미지 사용 시 메모리 릭이 있었으나 현재 테스트 중에서는 아직 발견되지는 않았음.
. Downloadable fonts 테스트 시 Play service v11 이상이어함.


[아주 주관적인 안드로이드 O 살펴보기, 양찬석]


주요기능은 좀 찾아보면 나올 거고..

. 현재 DP3. API 종료.
. Q3에 정식 릴리즈

http://d.android.com/preview

. 안드로이드 업데이트가 좀 자주 있긴 하지만
 더 좋은 안드로이드를 만들기 위해
 안드로이드 플랫폼 및 하위 layer들도 함께 업데이트하기 위함임

플랫폼에서 향상된 기능들

.런타임 업데이트
 : dex파일 layer 최적화
 : Forground 앱에대한 concurrent compaction, read barrier based GC
   > 적은 메모리. 빠른 메모리 할당. 부드러운 앱
 : project treble
   . 안드로이드.업데이트가 느린 것을 위한 프로젝트
   . 안드로이드 3단 분리(앱.프레임워크>앱.벤더인터페이스.프레임워크)
   . VTS (vender Test Suite)응 통과하면 안정성 보장됨
   . 안드로이드 O부터 시작

사용자에게 더 좋은 경험
.구글 플래이 프로텍트
 : Android O, 최신 플레이스토어 설치 시 사용 가능
.PIP지원
 : resizable activity를 지원했었어야 했지만...이젠 상관 없는듯?
. Autofill framework 지원
. Alert window
 : 다른 앱위에 경고창을 띄울 수 있음
 : type_application_overlay 윈도우 타입 추가
  . 시스템 layout 아래에서만 표시됨
  . 상단 notification창에 어떤 앱이 띄우는지 확인 가능함.

알림
. 알림 종류에 따른 배치 (중요한 알림 순으로)
. 알림 채널 (개별 알림별 설정>채널별 설정)
. 알림 표시 점(dot)
 : 채널별. 롤프래스로 알림 확인


개발자를  위해
.Android Studio 3.0
.Emulator
 : google play 탑재 바이너리 추가, 단 루팅 불가
.Kotlin
.Instant app
.architecitre component
.android support library 26
.폰트 리소스
.폰트 다운로드 by font provider

우리 모두를 위해
. Android vitals (d.android.com/vitals)
 : 플레이스토어에 메뉴가 추가 되어 있음.
 : anr, crash rate
 : 느린 렌더링, 프레임 멈춤
 : stuck wake lock
 : wakeup


[파이어베이스 무엇 달라지나, 남상균]


듣기는 했으나...




댓글 없음:

댓글 쓰기