북극곰의 개발일기

Google IO Extended Seoul 2018 - What's new in android





posted by purplebeen on Sun Jun 10 2018 14:48:46 GMT+0900 (KST) in 컨퍼런스


What’s new in Android

개발자가 알면 좋은 (너무) 많은 변화들

Android P

Android P changes

  • DP3까지 나와서 API 개발이 마무리됨.
  • DP4 또한 이번달 안에 나올 예정
  • Battery : 배터리 최적화를 위해서 머신 러닝을 이용해서 버킷을 나누고, 사용자의 패턴을 계속 학습하면서 가중치를 두고 가중치에 따라서
  • 백그라운드 작업이 많이 제한됨 (프라이버시를 위해)
  • Location, Location, Location
    • 건물 내에서 위치를 파악하는 것이 공식 API에 들어감
    • ACCESS_FINE_LOCATION 권한
  • 접근성 API 추가
  • BiometricPrompt 추가 (지문인식을 받기 위한 UI가 추가됨)
  • PrintFingerManager가 Deprecate됨
  • Display Cutout 지원 (노치, M자 탈모) -> 픽셀 3 노치 예상
  • 앱을 외부에 노출할 수 있는 기능 (Actions) : Google Search를 통해서 노출할 수 있도록 (앱의 특정 기능)
  • Notification…
    • 여러 사용자가 대화를 나누는 것을 알림에서 표현 가능
    • 답장을 쉽게 할 수 있는 API
  • Google Play Store 정책 변경
    • Target API가 26 이상이어야함

Android P Runtime : ART와 Clould Profile

  • Dalvik Runtime 시절보다 17배 빨라짐
  • Oreo들어서 Garbage Collector 개선
  • Kotlin Performance를 개선시키기 위해서 여러 요소가 들어감 (런타임 개선, 컴파일시의 개선 등)
  • Android 내부에서 돌아가는 Dex 파일이 변화됨
  • Android P부터 완전히 덱스를 정렬해서 메모리에 올라갔을때 더 작은 메모리를 사용하도록 최적화 시킴
  • 10%정도 최적화가 더 증가
  • 프로파일링 정보를 플레이스토어에 업로드 (어떤 메소드가 자주 실행되는지 등) 후 초기 앱 설치시에 프로파일링 정보를 전달함
  • 실제로 프로파일링이 적용된 앱들은 속도 개선이 평균 20%정도 이루어짐
  • 알파, 베타 출시시 프로파일을 받아서 실제 릴리즈시 프로파일을 반영시킬 수 있음
    -> 실제 릴리즈시 성능 개선
  • 15명 정도의 데이터만 수집해도 충분히 좋은 성과를 낼 수 있음

Android Build

  • 빌드 시간 개선
  • 이전 빌드 방식 (gradle 3.0 이하)
    • Start
    • Javac/Kotlinc
    • DX (DEX)
    • APK
  • 현재 빌드 방식 (gradle 3.0+)
    • Start
    • Javac/Kotlinc
    • DX
    • DX Merging
    • APK
  • Gradle 3.0 / 3.1 +
    • JavaC
    • Desugar (jdk 8코드 -> 7. x 코드)
    • DX
    • APK
  • D8
    • 새로운덱서
    • 빠른 컴파일
    • 작은 코드
    • 다양한 코드 분석
    • Start -> Compiler -> D8 -> APK
  • 이것을 적용하면서 빌드 속도가 16%증가
  • Android Studio 3.2 +
  • R8
    • D8 작업 + Proguard
    • 프로가드 설정을 그대로 사용할 수 있음
    • Proguard가 적용된 dex 파일이 나옴
    • 속도 변화 64초 -> 23초
    • 아직은 개발중...
  • Gradle 4.7이들어서 Annotation Processor 증분 빌드

Android App Bundle

  • 앱을 개발하다 보면 기능이 많아지고 앱의 사이즈가 커짐
  • 사이즈가 커질수로 꺼려하는 사람들이 많아짐
  • 구글이 제시한 첫번째 방법 : multiple APK
    • 개발자가 화면, 디바이스 마다. apk를 새로 만듬
    • 개발자가 관리하기 귀찮음
  • Android App Bundle
    • 앱 번들을 만들어 놓으면 구글이 알아서 상황에 맞는 파일을 받을 수 있도록
    • 리소스를 필요한 것들만 받아옴
    • 트위터의 경우 Android App Bundle로 바꾼 이후 사용자가 받아야 하는 APK 파일이 35%가 용량이 줄어듬
    • Build -> Build Bundles/APKs -> Build Ap Bundle (*aab)
    • 새로운 기능을 특정 사용자만 사용할 수 있도록?
      • Dynamic Feature로 구분
      • 특정 사용자만 필요할때 받아서 쓰도록
      • 현재 지원중
      • Android APP Bundle + Google Play Instant