시작 프로필 최적화 확인

Android 스튜디오를 사용하거나 R8 빌드 메타데이터를 확인하여 시작 프로필이 작동하는지 확인할 수 있습니다.

Android 스튜디오에서 확인

DEX 레이아웃 최적화를 확인하려면 Android 스튜디오를 사용하여 APK를 열고 DEX 파일의 클래스를 확인합니다. 기본 classes.dex가 완전히 채워지지 않았는지 확인합니다. 앱이 단일 DEX 파일로 구성된 경우 시작 프로필을 사용 설정한 후 앱에 DEX 파일이 두 개 포함되어 있는지 확인할 수 있습니다.

시작 클래스가 단일 DEX 파일에 맞지 않으면 Android 스튜디오에서 경고를 표시합니다. 시작 클래스의 시작 외 메서드 수가 포함된 진단 정보를 가져오려면 시작 프로필을 적용할 때 settings.gradle 파일을 다음과 같이 변경하여 R8 컴파일러가 최소 버전 8.3.36-dev로 업데이트되었는지 확인하세요.

Kotlin

pluginManagement {
    buildscript {
        repositories {
            mavenCentral()
            maven {
                url = uri("https://storage.googleapis.com/r8-releases/raw")
            }
        }
        dependencies {
            classpath("com.android.tools:r8:8.3.6-dev")
        }
    }
}

Groovy

pluginManagement {
    buildscript {
        repositories {
            mavenCentral()
            maven {
                url uri('https://storage.googleapis.com/r8-releases/raw')
            }
        }
        dependencies {
            classpath 'com.android.tools:r8:8.3.6-dev"
        }
    }
}

Gradle로 빌드할 때 다음 명령어에서 assembleRelease 뒤에 --info를 추가해야 합니다.

./gradlew assembleRelease --info

그러면 진단이 터미널에 출력됩니다.

앱 또는 라이브러리가 디슈가링된 API를 참조하는 경우 이러한 클래스의 번들로 묶인 호환성 구현은 항상 마지막 DEX 파일에 포함됩니다. 이 디슈가링된 마지막 DEX 파일은 DEX 레이아웃 최적화에 참여하지 않습니다.

번들 메타데이터로 확인

AGP 8.8부터 R8은 DEX 레이아웃 최적화가 성공적으로 이루어졌는지 확인하는 데 사용할 수 있는 메타데이터를 Android App Bundle (AAB)에 출력합니다. 최적화가 작동하는지 확인하려면 다음 단계를 따르세요.

  1. 앱의 AAB를 빌드합니다.

    ./gradlew app:bundleRelease
    
  2. "startup": true 텍스트가 포함된 DEX 파일이 하나 이상 있는지 확인합니다.

    1. 메타데이터를 엽니다.

      unzip -j -o path-to-aab BUNDLE-METADATA/com.android.tools/r8.json && jq .dexFiles r8.json
      

      AAB의 경로는 app/build/outputs/bundle/release/app-release.aab과 같을 수 있습니다.

    2. 출력을 확인합니다. 다음과 같이 표시됩니다.

          inflating: r8.json
      [
        {
          "checksum": "f0b4b0ddb295812607f44efe03cf7a830056ccfddbdb81db3760d2281940e951",
          "startup": true
        }
      ]
      

    메타데이터에 "startup": false만 표시되면 시작 프로필을 사용 설정하고 시작 프로필이 난독화되지 않았는지 확인해야 합니다.

  3. 메타데이터의 SHA-256 값이 AAB의 값과 일치하는지 확인합니다. 모든 DEX 파일의 SHA-256 값을 가져오려면 다음을 실행합니다.

    unzip -o path-to-aab */dex/*.dex && sha256sum */dex/*
    

    출력은 다음과 같이 표시됩니다.

    Archive: app/build/outputs/bundle/release/myapp-release.aab
      inflating: base/dex/classes.dex
    f0b4b0ddb295812607f44efe03cf7a830056ccfddbdb81db3760d2281940e951  base/dex/classes.dex
    

    해시 값을 1단계의 'checksum' 값과 비교합니다. SHA-256 값이 일치하지 않으면 컴파일 단계가 R8의 DEX 파일 출력 기능을 방해하는 것일 수 있습니다.