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:
Build AAB aplikasi Anda:
./gradlew app:bundleRelease
Pastikan ada setidaknya satu file DEX yang berisi teks
"startup": true
.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
.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.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.