Google Play控制台现在会标记Capacitor Android应用 应用优化率低于我们的阈值,通常伴有 混淆 仍然存在 3%. Google 至少希望混淆、优化和缩小。执行开始于 25% 2027年2月 , 如果失败,可能会减少可见性和发布选项。警告看起来像这样在 Android vitals 中:
在 Android vitals 中,这个警告看起来是这样的:

__CAPGO_KEEP_0__ Capgo Google 在测量
什么
Google Play检查您的Android App Bundle: DEX 在您的 Android App Bundle 中:编译好的 Java 和 Kotlin,包括 Capacitor,插件和 AndroidX。从 2027 年 2 月起,超过 10 MB 10 MB 25% 必须在所有三个方面达到:
| 指标 | 它的含义 | 典型Capacitor导致低分的原因 |
|---|---|---|
| 混淆 | 类、字段和方法名称重命名为短名称 | minifyEnabled 仍然 false |
| 优化 | R8内联、合并和重写字节码 | 默认 proguard-android.txt 包含 -dontoptimize |
| 压缩 | 未使用的类和方法被移除 | 资源/code压缩从未打开 |
Play读取 r8.json 当您使用Android Gradle Plugin 8.10或更高版本的最新补丁时,才会使用最新的补丁。否则,它使用 mapping.txt然后DEX heuristics。一个Capacitor应用,未启用minification,几乎没有映射文件,因此Play看到可读的名称并报告几百分比的混淆(通常来自已混淆的库AAR)。这与 3% vitals评分相符。
官方政策: Play Console技术质量要求. 实现细节: DEX code 优化 和 启用R8应用优化.
为什么Capacitor应用会失败此检查
The Capacitor Android template still ships release builds 没有 R8:
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
这是 android-template/app/build.gradle中的默认设置。调试构建应该保持这种方式。发布构建不应如此,如果您发布到Play。
您的 JavaScript 已经通过 Vite 或 webpack 进行了压缩。Play 不会计算此项。只有原生 DEX 名称、未使用的原生 code 和 R8 优化才会计算。
步骤 1 — 启用 R8 发布
打开 android/app/build.gradle (Groovy 是 Capacitor 的默认值) 并更改 发布 块:
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
如果模块使用 Kotlin DSL(build.gradle.kts):
buildTypes {
getByName("release") {
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
三个细节很重要:
minifyEnabled true这是实际运行 R8(缩小 + 混淆 + 优化)的内容。shrinkResources true移除未使用的 Android 资源。它需要进行压缩。- 为此 R8 配置使用
proguard-android-optimize.txt.proguard-android.txt运输-dontoptimize,阻止R8优化并导致AGP 9错误。Play允许任何压缩器;Capacitor 应用程序应使用R8的优化默认值。见 Capacitor 插件AGP 9构建错误修复 如果插件仍然引用旧文件。
不要设置 minifyEnabled true 在 debug. 只有发布时才会保持本地运行速度快,堆栈跟踪可读。
步骤2 — 不要禁用R8全模式
打开 android/gradle.properties 并删除此行,如果存在:
android.enableR8.fullMode=false
AGP 8+ 已经启用了全模式。留下该标志会限制优化。
也要搜索 android/app/proguard-rules.pro (和任何额外 -include 文件) 为:
-dontobfuscate
-dontoptimize
-dontshrink
-keep class ** { *; }
那些规则即使你翻转后也会保持低的Play评分 minifyEnabled.除非你有一个文档记录的临时原因,否则请删除它们
步骤 3 — 保持 Capacitor 插件,而不是整个应用
R8使用反射元数据。Capacitor插件通过注解被发现,因此它们需要保留规则。 R8 使用反射元数据。 __CAPGO_KEEP_0__ 插件通过注解被发现,因此需要保留规则 自 Capacitor 3.2.3, @capacitor/android ships 开始 将
@CapacitorPlugin消费者 ProGuard 规则@PluginMethod保留:- 继承的类
com.getcapacitor.Plugin - 遗留
@NativePlugin和Cordova插件类
保持当前的Capacitor 6/7/8行,这样消费者规则才会生效。
在 android/app/proguard-rules.pro 仅 如果您可以在发布版中重现的崩溃中添加额外的规则。
# Good: one misbehaving plugin package
-keep class com.mycompany.myplugin.** { *; }
# Bad: this will tank obfuscation and shrinking
-keep class com.getcapacitor.** { *; }
-keep class ** { *; }
狭窄胜过广泛: Capgo 插件目录或询问 Capgo 咨询服务 __CAPGO_KEEP_0__咨询服务
官方Capacitor说明: 使用ProGuard.
步骤4 — 构建真实发布包
上下文:关于Capgo页面。角色:UI标签。位置:关于.astro页面。消息键`about_how_step_label`(关于如何步骤标签)。
调试APK仍会显示~0%混淆。Play只评估您上传的内容。
npm run build
npx cap sync android
cd android
./gradlew bundleRelease
从项目根目录: release 没有 .aab签名配置,
安装 发布 APK 在设备上安装一个./gradlew assembleRelease发布APK( app/build/outputs/apk/release/. An .aab 是Google Play上传格式,而不是您手动安装的内容。 npx cap run android 请在本地调试中测试原生插件(摄像头、推送、文件、计费、身份验证)。
R8错误不会在 android/debug会话中显示。
app/build/outputs/mapping/release/mapping.txtapp/build/outputs/mapping/release/configuration.txt- 在上述Gradle命令之后(您现在位于
r8.json),确认R8是否已运行:
Those release 文件夹是默认的Capacitor变体。 通过产品风味,映射在变体名下(例如,variantName:"flavorName")。mapping/freeRelease/这些 apk/<flavor>/release/ 文件夹是默认的__CAPGO_KEEP_0__变体。 apk/free/release/).
If mapping.txt 您缺少了什么,可能是进入了错误的变体文件夹,CI已构建 debug,或者R8已运行 -dontobfuscate。请重新检查 minifyEnabled true 在 release 和保持规则不禁用混淆
步骤5 — 保持崩溃报告可读
上下文:关于Capgo页面。角色:UI标签。见于:关于.astro页面。消息键`about_how_step_label`(关于如何步骤标签) mapping.txt 混淆的堆栈跟踪在没有映射文件的情况下是无用的。保持
- 每个Play版本: Play控制台:测试和发布→应用包浏览器→下载→资产
mapping.txt,然后上传 - Firebase Crashlytics / Sentry: 将相同的映射作为 CI 的一部分上传。
Android Studio / AGP 经常将映射嵌入到 .aab.
第 6 步 — 上传并重新检查 Play
上下文: 关于 Capgo 页面。角色: UI 标签。位置: about.astro 页面。消息键 `about_how_step_label` (关于如何步骤标签)。 .aab 上传新的
- 到内部测试跟踪(不需要刷新分数)。打开: 测试和发布 → 应用程序包浏览器
- 为该版本
- DEX 大小加上混淆 / 优化 / 缩小百分比 监控和改进 → Android 重要指标
您需要 25% 在每个 三个指标中,不仅仅是混淆。启用 R8 后, proguard-android-optimize.txt 通常会将一个 Capacitor 应用从单位数字混淆率提升到所有三个指标的 25% 以上。
仅限 Google Play 仅限 强制执行
25% 的底线,当 DEX 大于 10 MB 时,对于应用程序(50 MB 对于游戏)。即使低于该底线,修复它仍然值得:更小的 DEX、更少的内存、更快的启动。
如果您仍然低于 25%
- Open 打开 R8 配置分析器
assembleRelease然后写入configanalyzer.html紧接着mapping.txt. 在 AGP 9.2 及之前版本中,跳过该 HTML 文件并使用mapping.txt,APK 分析器和 Play 应用程序包浏览器。 - 按冻结应用程序的百分比排序保留规则。无法编辑的库消费者规则是正常的。应用级别
-keep class com.foo.** { *; }不是。 - 打开
.aab文件,并切换脱冻名(需要.dex包仍然巨大且可读的包是需要停止全面保留的包。mapping.txt更新仍然引用 - 的插件。该文件在 AGP 9 中阻止优化,并且在旧版插件中是一个红旗。
proguard-android.txt不要通过缩小 DEX 来修复低分数
不要通过减少DEX大小来“修复”低分数 minifyEnabled false 并希望他uristic变化。 Play 想要缩小、优化, 并且 混淆。
这并不会取代
- JavaScript 压缩 在
vite.config.ts这不会移动这个指标。 - Capgo 实时更新 将 HTML/JS/CSS 发送。它们不会重建 DEX。商店二进制文件中启用 R8 后,您仍然可以通过无线电发送 JS 修复。混淆检查本身需要一个本机 Play 上传。
- 16 KB 页面大小 这是一个单独的 Play 本机要求。请参见 Android 16 KB 页面大小.
如果您已经使用 Capgo 构建, android/app/build.gradle 在仓库中进行更改 GitHub Android 应用程序构建动作__CAPGO_KEEP_0__ Actions Android builds :工作流程必须汇编发布
,而不是调试。
启用 R8 会破坏我的 Capacitor 插件吗?
会启用R8破坏我的Capacitor插件吗? narrow 只为崩溃的包保留规则。如果插件未维护, Capgo 咨询 可以 fork 并保持它构建。
Does npx cap run 证明我通过了检查吗?
不。该命令使用一个带有 R8 关闭的 debug 构建。使用 bundleRelease / 一个签名的 Play 上传。
我们已经设置 minifyEnabled true 仍然看到 3%。为什么?
查找 -dontobfuscate, proguard-android.txt, android.enableR8.fullMode=false, 并且 -keep 规则。确认 CI 上传了最小化的 AAB,而不是一个旧的 artifact。
我们是否需要 ProGuard 代替 R8?
不需要 ProGuard,R8 是 Android Gradle Plugin 缩小器。它读取 ProGuard 风格规则文件。Google 的 Play 文档允许任何缩小器;R8 是应用程序应该使用的 Capacitor。
检查清单
-
release { minifyEnabled true; shrinkResources true } -
proguard-android-optimize.txt(不proguard-android.txt) - 不
-dontobfuscate/-dontoptimize/ 全局-keep class ** - Capacitor 3.2.3+ 所有插件消费者规则都适用
- 发布构建产生
mapping.txt - 原生插件在发布安装中测试
- 新
.aab上载; 映射附加在 App Bundle 浏览器中 - 混淆、优化和缩小各自为 25%+
这是整个Play控制台警告:Capacitor 左 R8 离开,Play 开始评分 DEX,且一行发布 Gradle 变更加上一个商店上传即可修复。
继续修复Google Play混淆率低于25%的应用程序Capacitor
如果您正在使用 修复Google Play混淆率低于25%的应用程序Capacitor 来规划Android商店发布,连接它到 Capgo 本机构建 为发布应用程序包 Capgo CI/CD 为上传管道 CI/CD集成 上下文:Capgo Builder / 本机云构建产品页面。角色:短UI标签或导航项。消息键`native_build_feature_ci_cd`(Native Build Feature Ci Cd)。 自动 Capacitor Android 构建与 GitHub 动作 对于自主托管管道,以及 Capgo 咨询 如果一个插件在启用 R8 后会破坏。