DEX 코드 최적화

DEX 코드 최적화는 앱의 컴파일 품질, 크기, 성능을 모니터링하고 개선하는 데 도움이 되는 Android vitals 발견 사항입니다. R8 또는 대체 도구 (예: ProGuard 호환 옵티마이저 또는 보조 DEX 후처리기)를 사용하여 코드를 최적화하고 난독화하면 앱의 DEX 크기가 줄어들고, 런타임 성능이 개선되며, 메모리 사용 공간이 최소화됩니다.

DEX(Dalvik Executable) 파일에는 앱을 실행하는 데 사용되는 컴파일된 코드가 포함됩니다. 여기에는 일반적으로 컴파일된 C++ 코드나 .so 파일이 아닌 Java 및 Kotlin 코드가 포함됩니다.

Android vitals는 모든 앱과 게임의 DEX 코드 최적화 측정항목을 보고하지만 특정 크기 요구사항을 충족하는 앱과 게임에만 기준점을 적용합니다.

문제 감지

앱의 DEX 코드 최적화 수준이 낮으면 Android vitals에서 알림을 보낼 수 있습니다. 여기에는 R8을 사용하는 앱과 게임의 난독화, 축소, 최적화가 포함됩니다. R8을 사용하지 않는 앱의 경우 Android vitals는 최적화, 축소, 난독화 비율을 확인하려고 하지만 필요한 경우 난독화 휴리스틱으로 대체됩니다.

최적화 상태 모니터링

Android vitals를 사용하면 앱이 코드 최적화에 정의된 최소 비율을 충족하지 않는 경우 Play Console을 통해 알림을 보냄으로써 앱 성능을 개선할 수 있습니다. 축소, 최적화, 난독화에 관한 자세한 정의는 R8 구성 분석기 사용을 참고하세요.

AGP 버전 8.10 이상의 최신 패치로 빌드된 앱의 경우 이러한 비율은 포함된 r8.json 파일에서 가져옵니다.

AGP 버전이 낮거나 r8.json 파일이 포함되지 않은 경우, 포함된 경우 mapping.txt 파일에서 백분율이 계산되거나 매핑 파일을 사용할 수 없는 경우 DEX 휴리스틱을 사용하여 계산됩니다.

대체 코드 최적화 프로그램으로 최적화된 앱의 경우 Android vitals에서 분석을 실행하여 App Bundle에서 난독화된 클래스, 메서드, 필드의 비율을 추정합니다.

총 DEX 크기 최소값

Android vitals는 모든 앱의 코드 최적화 측정항목을 계산하지만 App Bundle이 다음 총 DEX 크기 요구사항을 충족하는 경우에만 알림을 받게 됩니다.

  • : 번들에 압축되지 않은 크기로 측정된 DEX 코드가 10MB 이상 포함되어 있습니다.
  • 게임: 번들에 압축되지 않은 크기로 측정된 DEX 코드가 50MB 이상 포함되어 있습니다.

Android vitals는 앱의 DEX 크기를 표시하지만 명령줄을 사용하여 로컬로 측정할 수도 있습니다.

  unzip -l <yourapp>.aab | grep -E '\.dex$' | awk '{sum+=$1} END {print sum}'

Android vitals에서 점수를 계산하는 데 사용하는 정확한 메타데이터를 검사하려면 App Bundle에서 r8.json 파일을 추출하세요.

unzip -p <yourapp>.aab BUNDLE-METADATA/com.android.tools/r8.json