Console Play sekarang menandai Capacitor aplikasi Android untuk Optimasi aplikasi di bawah ambang batas kamisering kali dengan Pengacakan telah berlangsung selama 3%. Google ingin setidaknya 25% pengacakan, optimasi, dan penyusutan. Pelaksanaan dimulai pada Februari 2027dan gagalnya dapat mengurangi visibilitas dan opsi penerbitan.
The warning appears like this in Android vitals:

Ini adalah masalah native Android DEX. Ini bukan tentang bundle Vue, React, atau Angular Anda. Capgo Perbarui aplikasi Anda secara langsung di Google Play Store untuk mendapatkan fitur terbaru.
Perbarui aplikasi Anda secara langsung di Google Play Store untuk mendapatkan fitur terbaru.
Apakah yang diukur oleh Google Google Play memeriksa in your Android App Bundle: compiled Java and Kotlin, including Capacitor, plugins, and AndroidX. From February 2027, apps with more than dalam Bundle Aplikasi Android Anda: kode Java dan Kotlin yang dikompilasi, termasuk __CAPGO_KEEP_0__, plugin, dan AndroidX. Dari Februari 2027, aplikasi dengan lebih dari 10 MB DEX harus mencapai 25% di semua tiga:
| Metrik | Apa artinya | Penyebab umum Capacitor skor rendah |
|---|---|---|
| Pengacakan | Nama kelas, field, dan metode diubah menjadi nama pendek | minifyEnabled masih false |
| Optimasi | R8 menggabungkan, menggabungkan, dan mengubah bytecode | Default proguard-android.txt termasuk -dontoptimize |
| Pengurangan | Kelas dan metode yang tidak digunakan dihapus | Penyusutan Resource/code tidak pernah diaktifkan |
Baca Play r8.json ketika Anda membangun dengan patch terbaru Android Gradle Plugin 8.10 atau lebih tinggi. Jika tidak, maka menggunakan mapping.txtheuristik DEX. Aplikasi Capacitor yang dikirimkan dengan minifikasi dimatikan memiliki hampir tidak ada file pemetaan, sehingga Play melihat nama yang dapat dibaca dan melaporkan beberapa persen pengobatan (seringkali sisa dari library AAR yang sudah diobfuscasi). Hal itu sesuai dengan 3% skor vital.
Kebijakan resmi: Persyaratan kualitas teknis Play ConsoleDetail implementasi: Optimasi DEX code dan aktifkan optimasi aplikasi dengan R8.
Apa yang menyebabkan Capacitor aplikasi gagal melakukan pengecekan ini
Template Android Capacitor masih mengirimkan rilis build tanpa R8:
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
Itu adalah default di android-template/app/build.gradle. Build debug harus tetap seperti itu. Rilis build tidak boleh, jika Anda menerbitkan 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 ubahlah rilis block:
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.txtmengirimkan-dontoptimize, yang menghalangi optimasi R8 dan gagal AGP 9. Play memungkinkan penggunaan shrinker apa saja; Capacitor aplikasi harus menggunakan R8 dengan default optimize. Lihat Capacitor Plugin AGP 9 Build Error Fix jika plugin masih mengacu pada file lama.
Tidak atur minifyEnabled true on debugRelease-only menjaga jalankan lokal cepat dan jejak kotoran baca dengan mudah.
Langkah 2 — Jangan mematikan mode R8 penuh
Buka android/gradle.properties dan hapus baris ini jika ada:
android.enableR8.fullMode=false
AGP 8+ sudah mengaktifkan mode penuh. Menggantungkan flag itu akan mengurangi optimasi.
Juga cari android/app/proguard-rules.pro (dan file tambahan) -include untuk:
-dontobfuscate
-dontoptimize
-dontshrink
-keep class ** { *; }
Aturan-aturan itu akan menjaga skor Play rendah bahkan setelah Anda mengganti minifyEnabledHapus mereka kecuali Anda memiliki alasan yang terdokumentasi, sementara.
Langkah 3 — Simpan plugin Capacitor, bukan aplikasi seluruhnya
R8 menggunakan metadata refleksi. Plugin Capacitor ditemukan dengan annotasi, jadi mereka membutuhkan aturan-aturan. Kamu biasanya tidak menambahkannya sendiri. Sejak Capacitor 3.2.3, @capacitor/android mengirimkan aturan ProGuard konsumen yang menjaga:
@CapacitorPluginkelas,@PluginMethod, callback izin dan aktivitas- Kelas yang mengextend
com.getcapacitor.Plugin - Legacy
@NativePlugindan kelas plugin Cordova
Tetaplah pada garis Capacitor saat ini 6/7/8 sehingga aturan-aturan konsumen tersebut diterapkan.
Tambahkan aturan tambahan di android/app/proguard-rules.pro Hanya untuk crash yang dapat direproduksi di build rilis. Lebih sempit 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 ** { *; }
If plugin pihak ketiga masih crash setelah aturan keep yang ditargetkan, update plugin, kemudian pertimbangkan alternatif yang dipelihara dari direktori plugin __CAPGO_KEEP_0__ , atau tanyakan kepada Capgo Consultinguntuk memperbaikinya. Catatan resmi Capgo: Menggunakan ProGuard
Official Capacitor notes: APK debug akan masih menampilkan ~0% pengaburan. Play hanya menilai apa yang diunggah..
Dari root project:
Untuk
menggunakan
npm run build
npx cap sync android
cd android
./gradlew bundleRelease
Tanpa konfigurasi tanda tangan, tugas-tugas ini masih berhasil tetapi menghasilkan file yang tidak ditandatangani release Tanda tangan file . Sign di Android Studio sebelum mengunggah ke Play. .aabPasang APK rilis pada perangkat (
), kemudian APK di bawah ( ). Sebuah adalah format unggah Play, bukan sesuatu yang Anda sideload. Lakukan pengujian plugin-plugin native (kamera, push, file, billing, autentikasi). Masalah R8 tidak akan muncul di sesi debug../gradlew assembleReleaseSetelah perintah Gradle di atas (Anda berada di app/build/outputs/apk/release/), pastikan R8 telah berjalan: .aab signingConfig npx cap run android release APK
debug sessions android/Gradle commands
app/build/outputs/mapping/release/mapping.txtapp/build/outputs/mapping/release/configuration.txt- On versi patch terbaru AGP 8.10 atau lebih tinggi,
r8.jsondi dalam App Bundle
Folder-folder tersebut adalah varian default __CAPGO_KEEP_0__. Dengan adanya rasa produk, pengaturan adalah di bawah nama varian ( release folders are the default Capacitor variant. With product flavors, mapping is under the variant name (mapping/freeRelease/(misalnya apk/<flavor>/release/ Jika apk/free/release/).
tidak ada, Anda berada di folder varian yang salah, CI telah dijalankan mapping.txt , atau R8 telah dijalankan dengan debug. Periksa -dontobfuscatedi minifyEnabled true dan pastikan aturan keep tidak mengaktifkan pengaburan. release contoh
Langkah 5 — Jaga laporan kecelakaan dapat dibaca
Jejak stack yang diobfuskan tidak berguna tanpa file mapping. Jaga mapping.txt untuk setiap versi Play:
- Console Play: Uji coba dan rilis → Pengelola bundle aplikasi → Unduh → Asset, kemudian unggah
mapping.txtjika belum terpasang. - Firebase Crashlytics / Sentry: unggah mapping yang sama sebagai bagian dari CI.
Studio Android / AGP seringkali menyematkan mapping dalam .aab. Tetap verifikasi tab Assets setelah unggahan yang telah dioptimalkan.
Langkah 6 — Unggah dan periksa Play
Unggah file baru .aab ke dalam jalur uji coba internal (produksi tidak diperlukan untuk memperbarui skor). Buka:
- Test dan rilis → Pemutus aplikasi untuk versi tersebut
- ukuran DEX plus persentase pengobatan / optimasi / pengurangan
- Monitor dan perbaiki → Vital Android setelah versi baru adalah yang dianalisis oleh Play
Anda memerlukan 25% pada masing-masing di antara tiga metrik, bukan hanya pengobatan. Mengaktifkan R8 dengan proguard-android-optimize.txt biasanya membuat aplikasi Capacitor dari satu digit pengobatan menjadi di atas 25% pada semua tiga.
hanya mengatur aturan ketika DEX melebihi 10 MB untuk aplikasi (50 MB untuk game). Bahkan di bawah itu, memperbaikinya masih layak dilakukan: DEX yang lebih kecil, penggunaan memori yang lebih sedikit, startup yang lebih cepat.
Jika Anda masih di bawah 25%
R8 diaktifkan, tapi Play (atau analisis lokal) masih menunjukkan skor yang lemah. Aturan-aturan broad keep biasanya merupakan sisa yang biasa.
- Buka Analisis Konfigurasi R8 jika plugin Gradle Android Anda adalah 9.3 atau lebih baru —
assembleReleasemaka menulisconfiganalyzer.htmlberikutnyamapping.txtkemapping.txt. Pada AGP 9.2 dan sebelumnya, lewati file HTML tersebut dan gunakan - APK Analyzer, dan eksplorator bundle aplikasi Play
-keep class com.foo.** { *; }Urutkan aturan-aturan keep berdasarkan seberapa banyak aplikasi yang mereka beku. Aturan-aturan konsumen library yang tidak dapat diedit adalah normal. Aturan-aturan aplikasi-level bukanlah itu. - Terbuka aplikasi
.aabdalam APK Analyzer Studio Android, pilih file-file besar, dan aktifkan nama-nama yang tidak diobfuscasi (memerlukan.dexPaket-paket yang tetap besar dan dapat dibaca adalah paket yang harus dihentikan untuk diobfuscasi secara besar-besaran.mapping.txtPerbarui plugin-plugin yang masih mengacu - File tersebut menghalangi optimasi pada AGP 9 dan merupakan tanda peringatan pada plugin yang lebih tua.
proguard-android.txtTidak perlu "mengatasi" skor yang rendah dengan mengurangi DEX menggunakan
dan mengharapkan heuristik berubah. Play ingin mengurangi, mengoptimalkan, dan minifyEnabled false obfuscasi. Apa yang ini tidak menggantikan Pengurangan kode JavaScript
dan pengurangan ukuran
- dan di
vite.config.tstidak bergerak ini metrik. - Capgo pembaruan langsung mengirim HTML/JS/CSS. Mereka tidak membangun DEX. Setelah R8 diaktifkan di binary toko, Anda masih bisa mengirimkan perbaikan JS secara nirkabel. Periksa keamanan obfuscation itu sendiri memerlukan satu upload native Play.
- 16 KB ukuran halaman adalah persyaratan native Play yang terpisah. Lihat Ukuran halaman 16 KB Android.
Jika Anda sudah membangun Android dengan Capgo Bangun, ubah android/app/build.gradle di repositori. Pembangunan cloud berikutnya mengambil R8. Anda tidak perlu pipeline Play yang berbeda, hanya binary rilis yang diproduksi dengan minifikasi diaktifkan. Ide yang sama jika Anda mempertahankan GitHub Tindakan pembangunan Android: harus mengatur aliran kerja rilis, bukan 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 Capgo Consulting mengapa Capgo Consulting __CAPGO_KEEP_0__
__CAPGO_KEEP_0__ npx cap run __CAPGO_KEEP_0__
No. Perintah itu menggunakan build debug dengan R8 dimatikan. Gunakan bundleRelease / untuk mengunggah Play yang ditandatangani.
Kami sudah menyetel minifyEnabled true tetapi masih melihat 3%. Mengapa?
Cari untuk -dontobfuscate, proguard-android.txt, android.enableR8.fullMode=false, dan aturan tutupi. Pastikan CI telah mengunggah AAB yang telah di-minifikasi, bukan artefak lama. -keep Apakah kami memerlukan ProGuard daripada R8?
Tidak. R8 adalah plugin Gradle Android yang melakukan pengurangan. R8 membaca file aturan ProGuard. Dokumen Play Google memungkinkan penggunaan pengurang apa pun; R8 adalah pengurang yang harus digunakan oleh aplikasi __CAPGO_KEEP_0__.
No. R8 is the Android Gradle Plugin shrinker. It reads ProGuard-style rule files. Google’s Play docs allow any shrinker; R8 is the one Capacitor apps should use.
(bukan
-
release { minifyEnabled true; shrinkResources true } -
proguard-android-optimize.txtTidakproguard-android.txt) - R8 adalah pengurang yang harus digunakan oleh aplikasi __CAPGO_KEEP_0__.
-dontobfuscate/-dontoptimize/ aplikasi-wide-keep class ** - Capacitor 3.2.3+ sehingga aturan konsumen plugin berlaku
- Rilis memproduksi
mapping.txt - Plugin native yang telah diuji pada instalasi rilis
- Baru
.aabContext: Halaman/area: Halaman produk Live Update. Peran: Label UI singkat atau item navigasi. Pesan kunci `live_update_lts_electron_new` (Live Update Lts Electron Baru). - Terunggah; peta yang terkait dalam Pemutus Paket Aplikasi
That is the whole Play Console warning: Capacitor left R8 off, Play started scoring DEX, and a one-line release Gradle change plus a store upload is the fix.
Peringatan seluruh Console Play: Capacitor meninggalkan R8, Play mulai menghitung DEX, dan perubahan Gradle satu baris plus upload toko adalah solusi.
Teruskan dari Mengatasi Pengaburan Google Play di Bawah 25% di __CAPGO_KEEP_0__ Aplikasi Fix Google Play Obfuscation Below 25% in Capacitor Apps Mengatasi Pengaburan Google Play di Bawah 25% di __CAPGO_KEEP_0__ Aplikasi Capgo Pembangunan Natively untuk Paket Aplikasi Rilis, Capgo Integrasi CI/CD untuk pipeline unggah, Integrasi CI/CD context: Halaman/area: Halaman Pembangun Capgo / produk halaman pembangunan natively di cloud. Peran: Label UI pendek atau item navigasi. Kunci pesan `native_build_feature_ci_cd` (Native Build Feature Ci Cd). Automatic Capacitor Android build with GitHub actions Bangun otomatis __CAPGO_KEEP_0__ Android dengan __CAPGO_KEEP_1__ aksi Capgo Consulting __CAPGO_KEEP_0__ Konsultasi