Qos(API 29)

2021. 4. 23. 18:44Android/Google 버전 업데이트

반응형

앱은 API 수준 29를 타겟팅해야 함

APK를 업로드하는 경우 Google Play의 타겟 API 수준 요구사항을 충족해야 합니다. 새로운 앱은 2020년 8월 3일까지 Android 10(API 수준 29) 이상을 타겟팅해야 하며 업데이트되는 모든 앱은 2020년 11월 2일까지 Android 10(API 수준 29) 이상을 타겟팅해야 합니다. 이 날짜 이전의 새로운 앱 및 앱 업데이트는 Android 9(API 수준 28) 이상을 타겟팅해야 합니다.

 

 

  • 비 SDK 인터페이스 제한
    • 공식적으로 제공하는 SDK 메소드가 아닌 경우 사용 제한(@hide annotation 지우거나 reflection 이용 막음)
    • Android 10(API 레벨 29)을 타겟팅하지 않을 경우, 이러한 변경사항 중 일부는 즉시 영향을 미치지 않을 수 있습니다. 그러나 현재 앱의 타겟 API 레벨에 따라 그레이리스트에 속한 비 SDK 인터페이스를 사용할 수는 있지만, 비 SDK 메서드나 필드를 사용하면 앱이 중단될 위험성이 높아집니다.
    • 참고 url : https://developer.android.com/about/versions/10/non-sdk-q
  • 공유 메모리 액세스 방식 변경
    • Ashmem(/dev/ashmem)은 Dalvik map 형식(/proc/<pid>/maps)으로 변경 → Dalvik map 형식 의존 시 test 필요
    • 직접적인 ashramem 접근을 막아 NDK의 AsharedMemory class를 통해 접근해야 함

*Ashmem(Anonymous Shared Memory)

*JDK(Java Develop Kit) - Java 기반 소프트웨어 개발 툴킷

*NDK(Native Develop Kit) - C/C++ 이용한 Native 애플리케이션, 미들웨어 개발 툴킷

*JNI(Java Native Interface) - C/C++과 Java 호환 제공 Framework

  • 신뢰할 수 없는 앱은 home directory에서도 exec() 호출 불가
    • home directory는 writable하므로 실행을 호출하면 W^X 위반이며, 반드시 APK file에 내장된 binary code만을 로드해야 함
    • 공유객체(.so)를 포함해 dlopen()으로 열린 파일의 in-memory executable code를 수정할 수 없음
  • 시스템이 생성한 OAT 파일만 ART 허용
    • 더 이상 애플리케이션 프로세스에서 dex2oat 호출하지 않음
  • ART에서의 AOT 정합성 강화
    • 기존에 ART에서 AOT 컴파일이 진행되었을 때, 컴파일과 런타임 시 classpath가 동일하지 않은 경우 런타임 충돌이 발생
    • custom class loader(by app not Dalvik.system package)는 AOT 컴파일 진행하지 않음(런타임 시, customized class가 실제 구현되었는지 조회할 수 없기 때문에)
    • 보조 dex파일(기본 APK 포함되지 않고, 앱에 의해 수동으로 로드되는 dex파일)은 백그라운드에서 AOT 컴파일 진행(설치 시 실행여부 결정되지 않은 파일의 컴파일에 따른 시간지연 방지) → 앱의 경우 보조 dex 활용보다 분할 권장
    • 공유 라이브러리(Android manifest의 <library> 및 <uses-library> 항목)은 이전 플랫폼과 다른 클래스 로더 계층을 사용해 컴파일 됨

*ART(Android Run Time) - VM(기존 Dalvik)이 아닌 런타임 시 사용하는 라이브러리

*AOT(Ahead-Of-Time) Compiler - 설치 시 컴파일러를 제외 소스코드만 로드

*OAT - 기계어 포함 elf(executable file) 확장자

  • fullscreen intent는 USE_FULL_SCREEN_INTENT permission 필요
  • foldable 지원
    • onResume()/onPause()가 다르게 동작(single-window 또는 single-display mode에서 하나의 activity만이 resume 상태였다면, multi-window나 multi-display mode라면 보여지는 focusable top activities는 모두 resume 상태이고, topmost activity만이 focus를 가질 수 있음)
    • onTopResumedActivityChanged()를 통해 topmost activity에 대해 알 수 있음
    • Manifest 속성인 resizableActivity 동작이 변경(false인 경우, 멀티 윈도우 지원하지 않는 호환성 모드로 작동)
    • android:minAspectRatio라는 새로 등장한 속성을 이용해 앱이 지원하는 AspectRatio를 명시할 수 있음

 

 

 

반응형

'Android > Google 버전 업데이트' 카테고리의 다른 글

APK에서 AAB로  (0) 2023.11.07
Android 14 동작 변경 사항  (0) 2023.08.02
SDK 30(11, Ros) 동작변경 사항  (1) 2021.06.03