Lebihkan ke konten utama

Perbaiki Pengacakan Google Play di Bawah 25% di Aplikasi Capacitor

Pass Google Play's 25% obfuscation check in a Capacitor Android app by enabling R8, shrinking unused DEX, and shipping a release App Bundle.

Kredit Artikel

Martin Donadieu

Pengarang

Valeria

Pengulas

Jordan

Pengedit

Perbaiki Pengacakan Google Play di Bawah 25% di Aplikasi Capacitor

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:

Pemberitahuan Google Play Console Android vitals yang menampilkan pengaburan pada 3 persen, di bawah ambang batas optimasi aplikasi 25 persen, dengan tanggal perbaikan Februari 2027

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:

  1. minifyEnabled true ini yang sebenarnya menjalankan R8 (mengurangi + mengaburkan + mengoptimalisasi).
  2. shrinkResources true menghapus sumber daya Android yang tidak digunakan. Ini memerlukan minifikasi.
  3. Untuk pengaturan R8 ini, gunakan proguard-android-optimize.txt. proguard-android.txt mengirimkan -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:

  • @CapacitorPlugin kelas, @PluginMethod, callback izin dan aktivitas
  • Kelas yang mengextend com.getcapacitor.Plugin
  • Legacy @NativePlugin dan 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.txt
  • app/build/outputs/mapping/release/configuration.txt
  • On versi patch terbaru AGP 8.10 atau lebih tinggi, r8.json di 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.txt jika 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:

  1. Test dan rilis → Pemutus aplikasi untuk versi tersebut
  2. ukuran DEX plus persentase pengobatan / optimasi / pengurangan
  3. 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.

  1. Buka Analisis Konfigurasi R8 jika plugin Gradle Android Anda adalah 9.3 atau lebih baru — assembleRelease maka menulis configanalyzer.html berikutnya mapping.txtke mapping.txt. Pada AGP 9.2 dan sebelumnya, lewati file HTML tersebut dan gunakan
  2. 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.
  3. Terbuka aplikasi .aab dalam APK Analyzer Studio Android, pilih file-file besar, dan aktifkan nama-nama yang tidak diobfuscasi (memerlukan .dex Paket-paket yang tetap besar dan dapat dibaca adalah paket yang harus dihentikan untuk diobfuscasi secara besar-besaran. mapping.txtPerbarui plugin-plugin yang masih mengacu
  4. 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.ts tidak 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.txt Tidak proguard-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 .aab Context: 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

Update Langsung untuk Aplikasi Capacitor

Ketika bug layer web masih aktif, kirimkan perbaikan melalui Capgo daripada menunggu hari-hari untuk persetujuan toko aplikasi. Pengguna mendapatkan update di latar belakang sementara perubahan native tetap dalam jalur review normal.

dukungan manusia dari Martin

Mulai Sekarang

Terbaru dari Blog Kami

Capgo memberikan Anda wawasan terbaik yang Anda butuhkan untuk membuat aplikasi mobile yang profesional.