거의 자발적으로 행사를 진행하는 것 같아 이런 행사가 매년 있음에 감사하다.
비록 외부 시스템으로 인한 등록 이슈, 애매한 시간 공지가 있긴했지만
전반적인 진행과 내용도 다 괜찮았던 것 같다.
행사 주소
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
[파이어베이스 무엇 달라지나, 남상균]
듣기는 했으나...
댓글 없음:
댓글 쓰기