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 diisi sepenuhnya. 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 muat dalam satu file DEX. Untuk mendapatkan informasi diagnostik yang menyertakan jumlah metode non-startup di class startup, pastikan compiler R8 diupdate setidaknya ke versi 8.3.36-dev 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.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"
        }
    }
}

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

./gradlew assembleRelease --info

Diagnostik kemudian dicetak ke terminal.

Jika aplikasi atau library Anda mereferensikan API yang di-desugar, implementasi kompatibilitas yang dipaketkan dari class ini selalu terdapat 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 menghasilkan metadata di Android App Bundle (AAB) yang dapat Anda gunakan untuk memeriksa apakah pengoptimalan tata letak DEX berhasil. Untuk memeriksa apakah pengoptimalan berfungsi, lakukan hal berikut:

  1. Build AAB aplikasi Anda:

    ./gradlew app:bundleRelease
    
  2. Pastikan 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 di metadata, Anda harus mengaktifkan profil startup dan memastikan bahwa profil startup Anda tidak di-obfuscate.

  3. Pastikan nilai SHA-256 dari metadata cocok dengan nilai dari AAB. Untuk mendapatkan nilai SHA-256 untuk semua file DEX, jalankan hal berikut:

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

    Outputnya akan terlihat 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.