Play Console sekarang menandai aplikasi Android Capacitor Optimasi aplikasi di bawah ambang batas kamiPeringatan Penggunaan Aplikasi Otomatisasi tetap ada 3%. Google setidaknya ingin otomatisasi, optimasi, dan pengecilan. 25% pengubahan, pengoptimalan, dan pengurangan. Penerapan dimulai di Februari 2027, dan gagalnya dapat mengurangi visibilitas dan pilihan publikasi.
Peringatan ini tampak seperti ini di Android vitals:

Ini adalah masalah DEX Android asli. Ini bukan tentang bundle Vue, React, atau Angular Anda. Capgo perubahan live update juga tidak akan mengubah skor ini. Anda perlu memperbaiki skor tersebut di Android Gradle release build, kemudian unggah aplikasi Bundle yang baru.
Apa yang diukur oleh Google
Google Play memeriksa 10 MB Dalam aplikasi Android Bundle Anda: kode Java dan Kotlin yang telah dikompilasi, termasuk Capacitor, plugin, dan AndroidX. Mulai Februari 2027, aplikasi dengan lebih dari 10 MB harus menabrak DEX 25% Artinya apa
| Metric | Obfuscation | Typical Capacitor cause of a low score |
|---|---|---|
| is masih | Nama kelas, bidang, dan metode diubah menjadi nama pendek | minifyEnabled diatasi false |
| Optimization | R8 mengintegrasikan, menggabungkan, dan mengubah bytecode | Default proguard-android.txt termasuk -dontoptimize |
| Shrinking | Kelas dan metode yang tidak digunakan dihapus | Pengurangan Ukuran Sumber/code tidak pernah diaktifkan |
Play membaca r8.json ketika Anda membangun dengan patch terbaru Android Gradle Plugin 8.10 atau lebih tinggi. mapping.txt, then DEX heuristics. A Capacitor app shipped with minification off has almost no mapping file, so Play sees readable names and reports a few percent obfuscation (often leftover from already-obfuscated library AARs). That matches a 3% Kebijakan resmi:
Kebijakan resmi: Kriteria Kualitas Teknis Console Play. Detail Implementasi: Optimasi DEX code dan aktifkan optimasi aplikasi dengan R8.
Mengapa aplikasi Capacitor gagal memenuhi tes ini
Template Android Capacitor masih mengirimkan rilis aplikasi tanpa R8:
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
Itu adalah default di android-template/app/build.gradle. Aplikasi debug harus tetap seperti itu. Aplikasi rilis tidak boleh, jika Anda menerbitkannya ke Play.
JavaScript Anda sudah di-minifikasi oleh Vite atau webpack. Play tidak menghitung itu. Hanya nama DEX native, code native yang tidak digunakan, dan optimasi R8 yang dihitung.
Langkah 1 — Aktifkan R8 untuk rilis
Buka android/app/build.gradle (Groovy adalah Capacitor default) dan ubah blok: Rilis Bagian:
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
Jika modul menggunakan Kotlin DSL (build.gradle.kts):
buildTypes {
getByName("release") {
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
Tiga hal yang penting:
minifyEnabled trueini yang sebenarnya menjalankan R8 (mengurangi + mengaburkan + mengoptimalisasi).shrinkResources truemenghapus sumber daya Android yang tidak digunakan. Ini memerlukan minifikasi.- Untuk pengaturan R8 ini, gunakan
proguard-android-optimize.txt.proguard-android.txtMengirim-dontoptimizeyang menghalangi optimasi R8 dan gagal AGP 9. Play memungkinkan penggunaan shrinker apa saja; Capacitor aplikasi harus menggunakan R8 dengan pengaturan default optimize. Capacitor Mengatasi Kesalahan Pembangunan Plugin AGP 9 jika plugin masih mengacu pada file lama.
Tidak atur minifyEnabled true di debug. Hanya menjalankan lokal tetap cepat dan tumpukan jejak dapat dibaca.
Langkah 2 — Jangan nonaktifkan R8 full mode
Open android/gradle.properties dan hapus baris ini jika ada:
android.enableR8.fullMode=false
AGP 8+ sudah mengaktifkan mode penuh. Mengganti flag tersebut akan mengurangi optimasi.
Juga cari android/app/proguard-rules.pro Juga cari (dan setiap tambahan -include file-file) untuk:
-dontobfuscate
-dontoptimize
-dontshrink
-keep class ** { *; }
Those rules will keep Play scores low even after you flip minifyEnabledHapuslah kecuali Anda memiliki alasan yang terdokumentasi dan sementara.
Langkah 3 — Simpan plugin Capacitor, bukan aplikasi seluruhnya
R8 menggunakan metadata refleksi. Plugin Capacitor ditemukan melalui annotasi, sehingga mereka memerlukan aturan-aturan. Biasanya Anda tidak menambahkannya sendiri. Sejak Capacitor 3.2.3, @capacitor/android mengirimkan aturan-aturan ProGuard konsumen yang menjaga:
@CapacitorPluginkelas,@PluginMethod, callback hak istimewa dan aktivitas- Kelas yang mengembangkan
com.getcapacitor.Plugin - Warisan
@NativePlugindan kelas plugin Cordova
Tetaplah pada garis Capacitor saat ini 6/7/8 agar aturan konsumen tetap berlaku.
Tambahkan aturan tambahan di android/app/proguard-rules.pro Hanya untuk crash yang dapat Anda reproduksi di build rilis. Lebih sempit lebih baik daripada lebih luas:
# Good: one misbehaving plugin package
-keep class com.mycompany.myplugin.** { *; }
# Bad: this will tank obfuscation and shrinking
-keep class com.getcapacitor.** { *; }
-keep class ** { *; }
Jika plugin pihak ketiga masih crash setelah aturan keep yang ditargetkan, update plugin tersebut, kemudian pertimbangkan alternatif yang dipelihara dari direktori plugin __CAPGO_KEEP_0__ Direktori plugin Capgoatau tanyakan Konsultasi Capgo mengpatchinya
Catatan resmi Capacitor: Menggunakan ProGuard.
Langkah 4 — Bangun bundle rilis nyata
APK debug akan masih menampilkan ~0% pengaburan. Play hanya menilai apa yang Anda unggah.
Dari root proyek:
npm run build
npx cap sync android
cd android
./gradlew bundleRelease
Tidak ada release signingConfig, these tasks still succeed but emit an unsigned .aabTanda tanganlah di Android Studio sebelum unggah ke Play.
Instal APK rilis pada perangkat ( kemudian APK di./gradlew assembleReleasesetelah itu, file APK tersebut app/build/outputs/apk/release/. Apa itu .aab adalah format unggah Play, bukan sesuatu yang disidik. Lakukan plugin-plugin native (kamera, push, file, billing, autentikasi). Masalah R8 tidak akan muncul di sesi debug. npx cap run android sesi debug.
Konfirmasikan apakah R8 telah berjalan: android/Konfirmasikan R8 telah berjalan:
app/build/outputs/mapping/release/mapping.txtapp/build/outputs/mapping/release/configuration.txt- Pada patch terbaru AGP 8.10 atau lebih tinggi,
r8.jsondi dalam Bundle Aplikasi
Those release folders are the default Capacitor variant. With product flavors, mapping is under the variant name (mapping/freeRelease/APK tersebut tersembunyi apk/<flavor>/release/ Contohnya apk/free/release/).
If mapping.txt tidak ada, Anda berada di folder varian yang salah, CI telah diatur debugatau R8 telah dijalankan dengan -dontobfuscate. Periksa kembali minifyEnabled true di release dan aturan yang tidak mematikan pengaburan.
Langkah 5 — Pastikan laporan kegagalan dapat dibaca
Tidak ada informasi yang dapat diakses tanpa file pemetaan. mapping.txt untuk setiap versi Play:
- Console Google Play: Uji coba dan rilis → Pengembaraan bundle aplikasi → Unduh → Sumber dayaConsole Play:
mapping.txtUji dan rilis → Pemutus aplikasi → Unduh → Asset - Firebase Crashlytics / Sentry: unggah peta yang sama sebagai bagian dari CI.
Android Studio / AGP seringkali menyematkan peta dalam .aab. Masih verifikasi tab Assets setelah upload yang dioptimalkan pertama kali.
Langkah 6 — Unggah dan periksa Play
Upload file baru .aab ke dalam jalur uji coba internal (produksi tidak diperlukan untuk memperbarui skor). Buka:
- Uji coba dan rilis → Pengembaraan bundle aplikasi Uji dan rilis → Pemutus aplikasi
- Ukuran DEX plus persentase pengobatan / optimasi / pengurangan ukuran
- Monitor dan perbaiki → Kinerja Android setelah versi baru adalah yang Play analisis
Anda perlu 25% pada setiap di antara tiga metrik, tidak hanya pengacakan. Mengaktifkan R8 dengan proguard-android-optimize.txt biasanya membuat aplikasi Capacitor meningkat dari pengacakan satu digit ke di atas 25% pada semua tiga.
Hanya di Play menetapkan lantai 25% ketika DEX melebihi 10 MB untuk aplikasi (50 MB untuk game). Bahkan di bawah itu, memperbaikinya masih layak dilakukan: DEX yang lebih kecil, memori yang lebih sedikit, startup yang lebih cepat.
Jika Anda masih di bawah 25%
R8 aktif, tapi Play (atau analisis lokal) masih menunjukkan skor yang lemah. Aturan broad keep biasanya adalah sisa yang biasa.
- Buka Analisis Konfigurasi R8 jika plugin Gradle Android Anda adalah 9.3 atau lebih baru —
assembleReleasemaka menulisconfiganalyzer.htmldekatmapping.txt. Pada AGP 9.2 dan sebelumnya, lewati file HTML tersebut dan gunakanmapping.txt, APK Analyzer, dan eksplorator bundle aplikasi Play alih-alih. - Urutkan aturan penyimpanan sesuai dengan bagian aplikasi yang mereka beku. Aturan konsumen library yang tidak dapat diedit adalah normal. Aturan aplikasi-tingkat
-keep class com.foo.** { *; }tidak. - Buka
.aabPilih file APK besar di Android Studio APK Analyzer.dexfiles, and toggle deobfuscated names (needsmapping.txtPaket-paket yang tetap besar dan dapat dibaca adalah paket-paket yang harus dihentikan secara besar-besaran. - Perbarui plugin yang masih mengacu
proguard-android.txtItu file menghalangi optimasi pada AGP 9 dan merupakan tanda peringatan pada plugin yang lebih tua.
Jangan "perbaiki" skor rendah dengan mengurangi DEX minifyEnabled false dan berharap heuristik berubah. Play ingin mengecilkan, optimasi, dan obfuscation.
Apa yang ini tidak menggantikan
- Apakah ini tidak menggantikan in
vite.config.tstidak bergerak ini metrik. - Capgo pembaruan langsung ship HTML/JS/CSS. They do not rebuild DEX. After R8 is on in the store binary, you can still ship JS fixes over the air. The obfuscation check itself needs one native Play upload.
- 16 KB ukuran halaman adalah syarat native Play yang terpisah. Lihat Android 16 KB ukuran halaman.
Jika Anda sudah membangun Android dengan Capgo Pembangunan, ubah android/app/build.gradle di repositori. Proses build cloud berikutnya akan mengambil R8. Anda tidak perlu pipeline Play yang berbeda, hanya binary rilis yang diproduksi dengan minifikasi aktif. GitHub Actions Android builds__CAPGO_KEEP_0__ Actions Android builds releasetidak debug.
FAQ
Will enabling R8 break my Capacitor plugins?
It can, if a plugin uses reflection and ships no consumer keep rules. Core Capacitor already keeps plugin classes. Test a release build. Add a narrow tetapkan aturan hanya untuk paket yang bermasalah. Jika plugin tidak dipelihara, Capgo Konsultasi mungkin dapat membagi dan menjaga tetap berjalan.
Apakah npx cap run terbukti saya melewati cek?
Tidak. Perintah itu menggunakan bangun debug dengan R8 off. Gunakan bundleRelease / a unggah Play yang ditandatangani.
Sudah kita atur minifyEnabled true tetapi masih melihat 3%. Mengapa?
Cari untuk -dontobfuscate, proguard-android.txt, android.enableR8.fullMode=false, dan aturan tutup. -keep Konfirmasi CI telah mengunggah AAB yang di-minifikasi, bukan artefak lama.
Apakah kita memerlukan ProGuard daripada R8?
Tidak. R8 adalah plugin pengurang Gradle Android. Ia membaca file aturan ProGuard. Dokumen Play Google memungkinkan penggunaan pengurang apa pun; R8 adalah satu-satunya pengurang yang harus digunakan oleh aplikasi Capacitor.
Checklist
-
release { minifyEnabled true; shrinkResources true } -
proguard-android-optimize.txtTidakproguard-android.txt) - No
-dontobfuscate/-dontoptimize/ app-wide-keep class ** - Capacitor 3.2.3+ sehingga aturan konsumen plugin berlaku
- Release build menghasilkan
mapping.txt - Plugin Native diinstalasi rilis telah diuji
- New
.aabdiunggah; peta yang terkait dalam eksplorator bundle aplikasi - Ditambahkan; peta nama yang terkait dalam Pemutus Paket Aplikasi
Itu adalah peringatan seluruh Console Play: Capacitor meninggalkan R8, Play mulai menghitung DEX, dan perubahan Gradle satu baris plus unggah ke toko adalah solusi.
Teruskan dari Fix Google Play Obfuscation Below 25% di Capacitor Aplikasi
Jika Anda menggunakan Fix Google Play Obfuscation Below 25% di Capacitor Aplikasi untuk merencanakan rilis aplikasi Android, hubungkan dengan Capgo Pembangunan Asli untuk bundle aplikasi rilis, Capgo CI/CD untuk pipeline unggah, Integrasi CI/CD untuk detail implementasi, Automatic Capacitor Android build with GitHub actions Untuk pipeline yang dihost sendiri, dan Capgo Konsultasi Jika plugin rusak setelah R8 diaktifkan.