Konfirmasi pengoptimalan Profil Startup

Anda dapat memeriksa apakah Profil Startup berfungsi menggunakan Android Studio atau melihat metadata build R8.

Mengonfirmasi dengan Android Studio

Untuk mengonfirmasi pengoptimalan tata letak DEX, gunakan Android Studio untuk membuka APK dan memverifikasi class dalam file DEX. Pastikan classes.dex utama tidak terisi penuh. Jika aplikasi Anda terdiri dari satu file DEX, Anda dapat memeriksa apakah aplikasi berisi dua file DEX setelah mengaktifkan Profil Startup.

Android Studio akan memperingatkan Anda jika class startup tidak sesuai dalam satu file DEX. Untuk mendapatkan informasi diagnostik yang mencakup jumlah metode non-startup di class startup, pastikan compiler R8 diupdate ke setidaknya versi 8.3.21 dengan melakukan perubahan berikut pada file settings.gradle saat Anda menerapkan Profil Startup:

Kotlin

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

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"
        }
    }
}

Pastikan Anda menambahkan --info setelah assembleRelease dalam perintah berikut saat membangun dengan Gradle.

./gradlew assembleRelease --info

Diagnostik kemudian dicetak ke terminal.

Jika aplikasi atau library apa pun mereferensikan API yang di-desugar, implementasi kompatibilitas yang di-bundle dari class ini selalu ada dalam file DEX terakhir. File DEX terakhir yang di-desugar ini tidak berpartisipasi dalam pengoptimalan tata letak DEX.

Konfirmasi dengan metadata paket

Mulai AGP 8.8, R8 akan menghasilkan metadata di Android App Bundle (AAB) yang dapat Anda gunakan untuk memeriksa apakah pengoptimalan tata letak DEX berhasil. Untuk memeriksa apakah pengoptimalan berhasil, lakukan hal berikut:

  1. Buat AAB aplikasi Anda:

    ./gradlew app:bundleRelease
    
  2. Periksa apakah ada setidaknya satu file DEX yang berisi teks "startup": true.

    1. Buka metadata:

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

      Jalur ke AAB Anda mungkin seperti app/build/outputs/bundle/release/app-release.aab.

    2. Periksa output, yang akan terlihat seperti ini:

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

    Jika hanya melihat "startup": false dalam metadata, Anda perlu mengaktifkan profil startup dan memastikan bahwa profil startup Anda tidak di-obfuscate.

  3. Periksa apakah nilai SHA-256 dari metadata cocok dengan nilai dari AAB. Untuk mendapatkan nilai SHA-256 untuk semua file DEX Anda, jalankan perintah berikut:

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

    Outputnya kurang lebih akan seperti ini:

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

    Bandingkan nilai hash dengan nilai "checksum" dari langkah 1. Jika nilai SHA-256 tidak cocok, mungkin ada langkah kompilasi yang mengganggu kemampuan R8 untuk menghasilkan file DEX.