Play Console flaggt nun Android-Apps mit Capacitor Die App-Optimierung liegt unter unserem Schwellenwert, oft mit Verschlüsselung bleibt erhalten 3%. Google möchte mindestens 25% Verschlüsselung, Optimierung und Komprimierung. Die Umsetzung beginnt im Februar 2027, und das Fehlschlagen kann die Sichtbarkeit und die Veröffentlichungsoptionen reduzieren.
Die Warnung sieht in Android Vitals wie folgt aus:

Dies ist ein natives Android-Dex-Problem. Es geht nicht um Ihre Vue-, React- oder Angular-Bundle. Capgo Lebendliche Updates ändern auch nichts an diesem Wert. Sie beheben es in der Android-Gradle-Release-Build, laden dann ein neues App-Bundle hoch.
What Google is measuring
Google Play überprüft die DEX in Ihrem Android App Bundle: kompilierte Java- und Kotlin-Code, einschließlich Capacitor, Plugins und AndroidX. Ab Februar 2027 müssen Apps mit mehr als 10 MB Daten auf allen drei Punkten treffen: 25% auf allen drei:
| Metric | Typischer __CAPGO_KEEP_0__ Grund für eine niedrige Bewertung | Typischer Capacitor Grund für einen niedrigen Score |
|---|---|---|
| Obfuscation | Klasse, Feld und Methodenamen werden in kurze Namen umbenannt | minifyEnabled ist noch false |
| Optimierung | R8 inlines, merges und rewrites Bytecode | Standard proguard-android.txt enthält -dontoptimize |
| Verkleinerung | Entfernt nicht verwendete Klassen und Methoden | Ressourcen/code Verkleinerung ist nie aktiviert |
Play liest r8.json wenn Sie mit dem neuesten Patches von Android Gradle Plugin 8.10 oder höher bauen. Ansonsten verwendet es mapping.txt, dann DEX Heuristiken. Ein Capacitor App, die mit der Minifizierung ausgeschaltet ist, hat fast keinen Mapping-File, also sieht Play lesbare Namen und meldet ein paar Prozent Verschlüsselung (oft übrig geblieben von bereits verschlüsselten Bibliothek AARs). Das entspricht einem 3% Lebenszeichen-Wert.
Offizielle Richtlinie: Google Play-Obfuscation mit Capacitor für Android. Implementierungsdetail: DEX-Optimierung von code und App-Optimierung mit R8 aktivieren.
Why Capacitor apps fail this check
Die Capacitor-Android-Vorlage liefert Release-Builds immer noch ohne ohne R8:
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
Das ist die Standardkonfiguration in android-template/app/build.gradle. Debug-Builds sollten so bleiben. Release-Builds sollten es nicht, wenn Sie auf Play veröffentlichen.
Ihre JavaScript-Dateien sind bereits durch Vite oder Webpack minimiert. Play zählt das nicht. Nur native DEX-Namen, nicht verwendete native code und R8-Optimierungen zählen.
Schritt 1 — R8 für die Veröffentlichung aktivieren
Öffnen android/app/build.gradle (Groovy ist der Capacitor Standard) und ändern Sie die release block:
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
Drei Details sind wichtig:build.gradle.kts):
buildTypes {
getByName("release") {
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
Drei Details sind wichtig:
minifyEnabled trueentfernt nicht verwendete Android-Ressourcen. Es erfordert eine Minimierung.shrinkResources trueentfernt nicht benötigte Android-Ressourcen. Es erfordert Minifizierung.- Für diese R8-Einrichtung verwenden Sie
proguard-android-optimize.txt.proguard-android.txtships-dontoptimizedie R8-Optimierungen blockiert und AGP 9 scheitert. Play lässt jeden Shrinker zu; Capacitor-Apps sollten R8 mit den optimierten Standards verwenden. Siehe Capacitor Plugin AGP 9 Build Fehlerbehebung Wenn ein Plugin noch auf das alte Datei verweist.
Setzen Sie nicht minifyEnabled true auf debug. Nur für die Veröffentlichung hält lokale Ausführungen schnell und Stack-Tracks lesbar.
Schritt 2 — R8-Vollmodus nicht deaktivieren
Open android/gradle.properties entfernen Sie diese Zeile, wenn sie existiert:
android.enableR8.fullMode=false
AGP 8+ aktiviert bereits den Vollmodus. Das Beibehalten dieses Flags begrenzt die Optimierung.
Auch suchen android/app/proguard-rules.pro Auch suchen Sie (und jedes zusätzliche -include Dateien) für:
-dontobfuscate
-dontoptimize
-dontshrink
-keep class ** { *; }
Diese Regeln halten die Play-Bewertungen auch nach dem Umstellen niedrig. minifyEnabledLöschen Sie sie, es sei denn, Sie haben einen dokumentierten, vorübergehenden Grund.
Schritt 3 — Halten Sie Capacitor-Plugins, nicht die ganze App
R8 verwendet Reflexionsmetadata. Capacitor-Plugins werden durch Anmerkungen entdeckt, daher benötigen sie die Keep-Regeln. Sie fügen sie normalerweise nicht selbst hinzu. Seit Capacitor 3.2.3 @capacitor/android liefern Verbraucher-ProGuard-Regeln die halten:
@CapacitorPluginKlassen@PluginMethod, Berechtigungen und Aktivitätsrückrufe- Klassen, die sich erweitern
com.getcapacitor.Plugin - Legacy
@NativePluginund Cordova-Plugin-Klassen
Bleiben Sie auf einer aktuellen Capacitor 6/7/8-Zeile, damit die Verbraucherregeln angewendet werden.
Fügen Sie zusätzliche Regeln in android/app/proguard-rules.pro nur für einen Crash, den Sie in einer Release-Build reproduzieren können. Narrow beats broad:
# Good: one misbehaving plugin package
-keep class com.mycompany.myplugin.** { *; }
# Bad: this will tank obfuscation and shrinking
-keep class com.getcapacitor.** { *; }
-keep class ** { *; }
Wenn ein dritter-Partei-Plugin nach einem gezielten Keep-Regel-Update weiterhin abstürzt, aktualisieren Sie das Plugin und überlegen Sie, ob Sie ein alternativer, von der Capgo-Plugin-Verzeichnisoder fragen Sie Capgo Beratung an, um es zu patchen.
Offizielle Capacitor Hinweise: ProGuard verwenden.
Schritt 4 — Erstellen Sie ein echtes Release-Paket
Debug APKs werden immer noch ~0% Verschlüsselung anzeigen. Play bewertet nur, was Sie hochladen.
Von der Projektwurzel:
npm run build
npx cap sync android
cd android
./gradlew bundleRelease
Ohne eine release signingConfig, diese Aufgaben gelingen immer noch, aber sie geben ein unsigniertes .aabSigniere es in Android Studio vor dem Play-Upload.
Installiere ein Release APK Release-APK ./gradlew assembleReleaseauf einem Gerät (, dann das APK unter app/build/outputs/apk/release/. Ein .aab Es ist ein Play-Upload-Format, kein etwas, das Sie per Sideload einladen. Üben Sie native Plugins (Kamera, Push, Datei, Abrechnung, Authentifizierung). R8-Bugs erscheinen nicht in npx cap run android Debug-Sitzungen.
Nach den Gradle-Befehlen oben (Sie befinden sich in android/), bestätigen Sie, dass R8 tatsächlich ausgeführt wurde:
app/build/outputs/mapping/release/mapping.txtapp/build/outputs/mapping/release/configuration.txt- Bestätigen Sie, dass R8 tatsächlich ausgeführt wurde:
r8.jsoninnerhalb der App-Bundle
Those release Ordner sind die Standard Capacitor Variante. Mit Produktflavours wird die Zuordnung unter dem Variantenamen ("mapping/freeRelease/Die APK ist unter apk/<flavor>/release/ Die APK ist unter apk/free/release/).
Beispiel mapping.txt fehlt, befinden Sie sich in dem falschen Variante-Ordner, CI hat zusammengestellt debug, oder R8 wurde mit -dontobfuscate. Recheck minifyEnabled true auf release und die Regeln, die die Verwischung deaktivieren, funktionieren nicht.
Schritt 5 — Lesbarkeit von Crashberichten behalten
Versteckte Stapelspuren sind ohne die Abbildungsdatei wertlos. Bewahren Sie sie auf. mapping.txt für jede Play-Version:
- für jede Play-Version: Test und Freigabe → App-Bundle-Explorer → Downloads → Assets, dann hochladen
mapping.txtwenn es noch nicht befestigt ist. - Firebase Crashlytics / Sentry: laden Sie die gleiche Abbildung als Teil der CI hoch.
Android Studio / AGP integriert oft die Abbildung in das .aab. Überprüfen Sie den Assets-Tab nach der ersten optimierten Hochladung.
Schritt 6 — Hochladen und erneut überprüfen
Das neue hochladen .aab zu einem internen Testtrack (eine Produktion ist nicht erforderlich, um die Punktzahl zu aktualisieren). Öffnen:
- Test und Freigabe → App-Bundle-Explorer Testen und veröffentlichen → App-Bundle-Explorer
- DEX-Größe plus Verschlüsselung / Optimierung / Komprimierung Prozentsätze
- Überwachen und verbessern → Android-Grundlagen nach der neuen Version ist die, die Play analysiert
Sie benötigen 25% auf jedem von den drei Metriken, nicht nur Verschlüsselung. Die Aktivierung von R8 mit proguard-android-optimize.txt normalerweise springt eine Capacitor-Anwendung von einer einzelnen Ziffern-Verschlüsselung auf gut über 25% auf allen drei.
Play nur erzwingt den 25%-Boden, wenn DEX über 10 MB für Apps (50 MB für Spiele) ist. Selbst unter diesem Boden lohnt sich die Korrektur: kleinerer DEX, weniger Speicher, schnellerer Start.
Wenn Sie noch unter 25%
R8 ist an, aber Play (oder der lokale Analyzer) zeigt noch eine schwache Note. Breite Keep-Regeln sind die üblichen Überbleibsel.
- Öffnen R8-Konfigurationsanalyzer wenn Ihr Android-Gradle-Plugin 9.3 oder neuer ist —
assembleReleaseschreibt dannconfiganalyzer.htmlnächst zumapping.txt. Auf AGP 9.2 und früher, überspringen Sie dieses HTML-File und verwenden Siemapping.txt, APK-Analyse und Play’s App-Bundle-Explorer anstatt. - Sortieren Sie die Keep-Regeln nach der Menge des Apps, die sie einfrieren. Bibliothekskonsumenten-Regeln, die Sie nicht bearbeiten können, sind normal. App-Level-
-keep class com.foo.** { *; }ist nicht. - Öffnen Sie das
.aabin Android Studio APK-Analyse, wählen Sie die großen.dexDateien, und schalten Sie die deobfuskierten Namen um (benötigt)mapping.txtPakete, die immer noch groß und lesbar sind, sind die Pakete, die Sie ganz aufgeben sollten. - Aktualisieren Sie Plugins, die immer noch auf
proguard-android.txtverweisen. Das Datei blockiert die Optimierung auf AGP 9 und ist ein roter Faden in älteren Plugins.
Beheben Sie nicht einen niedrigen Score, indem Sie DEX mit minifyEnabled false und hofft, dass sich die Heuristik ändert. Play möchte schrumpfen, Optimierung, und Verschlüsselung.
Was dies nicht ersetzt
- JavaScript-Minifizierung in
vite.config.tsersetzt dies nicht die Metrik. - Capgo Live-Updates versenden Sie HTML/JS/CSS. Sie bauen DEX nicht neu. Nachdem R8 im Store-Binary aktiv ist, können Sie noch JS-Fixes über die Luft schicken. Die Verschlüsselungskontrolle selbst benötigt eine native Play-Upload.
- 16 KB-Seitengröße ist eine separate Play-native-Anforderung. Siehe Android 16 KB-Seitengröße.
Wenn Sie bereits Android mit Capgo Buildändern android/app/build.gradle im Repository. Der nächste Cloud-Build greift R8 auf. Sie benötigen keine andere Play Pipeline, nur ein Release-Binary, das mit Minifizierung erstellt wurde. Das gleiche Konzept, wenn Sie __CAPGO_KEEP_0__ Actions Android Builds GitHub Aktionen Android-BuildsDie Workflow muss zusammenbauen. , nicht debug.nicht debuggen.
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 Halte die Regel nur für das Paket, das abstürzt. Wenn der Plugin unmantainiert ist, Capgo Beratung kann man es forken und weiterhin bauen.
Beweist npx cap run dass ich die Überprüfung bestanden habe?
Nein. Diese Anweisung verwendet ein Debug-Build mit R8 ausgeschaltet. Verwende bundleRelease / eine signierte Play-Upload.
Wir haben bereits minifyEnabled true und sehen trotzdem 3%. Warum?
Suche nach -dontobfuscate, proguard-android.txt, android.enableR8.fullMode=false, und blanket -keep Regeln. Bestätige, dass CI das minimierte AAB hochgeladen hat, nicht ein altes Artefakt.
Brauchen wir ProGuard anstatt R8?
Nein. R8 ist der Android-Gradle-Plugin-Verkleinerer. Es liest ProGuard-Regeldateien. Googles Play-Dokumente erlauben jeden Verkleinerer; R8 ist der, den Capacitor-Apps verwenden sollten.
Checkliste
-
release { minifyEnabled true; shrinkResources true } -
proguard-android-optimize.txt(nichtproguard-android.txt) - Nein
-dontobfuscate/-dontoptimize/ App-bereichsweit-keep class ** - Capacitor 3.2.3+ so dass Plugin-Konsumentenregeln gelten
- Release-Build erzeugt
mapping.txt - Nativ-Plugins getestet auf einer Release-Installation
- Neu
.aabHochgeladen; Mapping in App-Bundle-Explorer angehängt - Verkleistern, Optimieren und Verkleinern jeweils bei 25%+
Das ist die gesamte Play Console Warnung: Capacitor R8 links ließ, Play begann DEX zu bewerten und eine einezeilige Release-Gradle-Änderung plus ein Laden-Upload ist die Lösung.
Weitermachen von Fix Google Play Obfuscation Below 25% in Capacitor Apps
Wenn Sie Android-Apps entwickeln Fixieren Sie Google Play-Verwischung unter 25% in Capacitor-Apps um Android-Ladenveröffentlichungen zu planen, verbinden Sie es mit Capgo nativee Native Builds für Release-App-Bundles Capgo CI/CD für den Upload-Pipeline CI/CD-Integration für Implementierungsdetails Automatische Capacitor Android-Builds mit GitHub Aktionen Für selbstgeführte Pipelines und Capgo Beratung Wenn ein Plugin nach der Aktivierung von R8 fehlschlägt.