跳过主内容

Capacitor 插件 AGP 9 构建错误修复

快速解决 AGP 9 Capacitor 插件构建错误。了解为什么 proguard-android.txt 失败,如何使用 proguard-android-optimize.txt,以及 Capgo 如何修复 Android Gradle Plugin 9 问题

马丁·多纳迪尤

马丁·多纳迪尤

内容营销人员

Capacitor 插件 AGP 9 构建错误修复

如果您的 Capacitor 升级到 Android Gradle Plugin 9 (AGP 9) 后,

__CAPGO_KEEP_0__

  • Capacitor plugin build error AGP 9
  • 本文专门针对以下常见搜索意图:
  • proguard-android.txt __CAPGO_KEEP_0__
  • 插件构建错误 AGP 9 getDefaultProguardFile Android Gradle Plugin 9 插件构建失败
  • Capacitor Android build failed after AGP upgrade

简要版:

  • proguard-android.txt 不再是AGP 9插件构建中安全的默认基线。
  • 切换到 proguard-android-optimize.txt.
  • 重建并验证。

更长的版本也很重要,尤其是如果您维护了许多插件或大型Capacitor工作空间。在本文中,我们将介绍:

  • Android和AGP在构建链中的作用
  • Capacitor是什么以及插件构建如何工作
  • 什么是__CAPGO_KEEP_0__ Capgo是什么以及为什么这对发布可靠性很重要 破坏旧插件模板的确切AGP 9更改
  • 单个仓库或多个仓库的安全迁移策略
  • 一个仓库或多个仓库的安全迁移策略

在这个上下文中,Android是什么?

Android Android既是操作系统,又是构建生态系统。当您在Android上发布一个Capacitor应用程序或插件时,项目将经过:

  1. Gradle 作为构建系统。
  2. Android Gradle Plugin(AGP) 作为Android特定的Gradle集成。
  3. AndroidSDK打包、压缩、检查代码错误和生成 .aar, .apk,或 .aab 输出。

当AGP版本发生变化时,某些默认值和内部文件也可能会发生变化。一个插件配置在AGP 8上工作,但在AGP 9上可能会失败,如果它指向一个已删除或过时的基线。

Capacitor是什么?

Capacitor 是一个跨平台运行时,让您使用web code (TypeScript, JavaScript, HTML, CSS)构建iOS/Android应用程序,同时仍然调用本机API。

Capacitor应用程序通常包括:

  • 一个web层(您的UI和业务逻辑)
  • 本机壳(ios/, android/)
  • 暴露本机功能的插件

每个插件都有自己的本机构建配置。在Android上,这意味着每个插件都包括一个 android/build.gradle 文件,AGP必须正确解析和编译。

如果插件的Gradle设置过时,整个应用程序的构建可能会失败,即使您的web code是正确的。

什么是Capgo?

Capgo 提供了Capacitor交付和运营的工具:

  • 实时更新 针对web包变更的实时更新
  • 插件生态系统和原生功能包
  • CI/CD-friendly update workflows for Capacitor teams

即使有实时更新,原生构建稳定性也是不可谈的。您仍然需要清洁的Android构建文件:

  • App Store / Play Store发布
  • 原生插件升级
  • 平台SDK迁移
  • 团队入职和CI可靠性

这就是为什么AGP 9兼容性修复很重要:它们保持了您的插件层可靠性,使交付管道保持可预测。

为什么AGP 9会破坏旧的插件配置

许多插件模板历史上使用:

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

In AGP 9 环境中,这个遗留的基准参考可能会失败,因为老文件不再在旧模板/配置中预期的位置可用。

典型症状包括 Gradle 错误在 assemble, lintbuild 阶段,通常指向缺失的 ProGuard 基准资源或无效的默认文件引用。

快速背景: ProGuard、R8 和基准文件

  • R8 is the modern code shrinker/optimizer in Android builds.
  • proguard-rules.pro __CAPGO_KEEP_0__
  • getDefaultProguardFile(...) 压缩/优化器。

是您的项目/插件自定义保留规则。

  • proguard-android.txt 注入 Android 提供的基准文件。
  • proguard-android-optimize.txt 当您引用:

为了 AGP 9 兼容性,切换到 proguard-android-optimize.txt 是实用的修复方案。

一行修复方案

更新插件和应用模块 Gradle 文件:

proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'

至少检查:

  • android/build.gradle 每个插件
  • example-app/android/app/build.gradle 插件仓库
  • 任何生成/模板文件,创建新插件 Gradle 配置

一款插件的迁移指南

1. 找到旧引用

rg -n "proguard-android\\.txt" android example-app

2. 替换它

perl -pi -e "s/proguard-android\\.txt/proguard-android-optimize.txt/g" \
  android/build.gradle example-app/android/app/build.gradle

3. 验证与 Bun

bun run verify:android

If your plugin has full verification scripts, run:

bun run verify

批量更新所有插件仓库

If you maintain many plugin repositories in one workspace, automate it:

rg -l "proguard-android\\.txt" capacitor-* \
  --glob '!**/node_modules/**' \
  --glob '!**/.gradle/**' \
  --glob '!**/build/**' \
| xargs perl -pi -e "s/proguard-android\\.txt/proguard-android-optimize.txt/g"

然后验证仍然使用旧文件的所有跟踪插件源

for d in capacitor-*; do
  [ -d "$d/.git" ] || continue
  git -C "$d" grep -n "proguard-android\\.txt" -- || true
done

No matches means the old baseline reference is gone from tracked plugin files.

Capgo rollout status

我们已经完成了此迁移,涵盖所有官方Capgo Capacitor插件仓库和模板:

  • 插件Android模块现在引用 proguard-android-optimize.txt
  • 插件示例Android应用程序也已更新
  • 插件骨架模板已更新,以便新插件默认使用AGP 9

这可以防止在CI之前出现的AGP 9升级失败的常见类别

Why this is important even if your build passes today

您可能不会立即看到失败的情况:

  • 您的CI缓存仍然掩盖了问题
  • 您在项目中混合使用了不同版本的AGP
  • 仅在本地开发中重建了某些模块

但最终,清洁的构建、新的环境或升级的运行器会暴露它。现在进行迁移可以移除隐含的不稳定性。

在替换后,如果构建仍然失败时进行故障排除

检查这些点:

  1. 每个模块都已修补。 查看插件模块、应用模块、示例和模板资产。

  2. 共享脚本中没有第二个引用。 在整个仓库(包括自定义Gradle脚本)中进行搜索。

  3. 缓存已清洁。 运行 ./gradlew clean 并重建。

  4. AGP / Gradle / JDK 版本已对齐。 使用Android文档中支持的AGP版本的组合。

  5. CI 使用相同的版本。 在 CI 中将 JDK 和 Gradle 包装器版本固定以避免环境漂移。

  6. 您没有只修补 node_modules. 修复跟踪的插件源,而不是暂时依赖目录。

SEO FAQ: AGP 9 Capacitor 插件构建错误

如何修复 proguard-android.txt 在 AGP 9 中未找到。

替换:

getDefaultProguardFile('proguard-android.txt')

用:

getDefaultProguardFile('proguard-android-optimize.txt')

然后运行清洁重建。

为什么我的 Capacitor 插件构建在升级到 Android Gradle Plugin 9 后会失败?

大多数故障来自于插件文件中的遗留 Gradle 配置 android/build.gradle 大多数故障来自于插件文件中的遗留 Gradle 配置 proguard-android.txt. AGP 9 项目应使用 proguard-android-optimize.txt.

什么是 AGP 9 迁移的最快路径,适用于许多 Capacitor 插件?

使用一个工作区级别的查找替换命令,然后使用 git grep 并运行 bun run verify:android 在代表性插件上。

这是否仅仅是一个 Capacitor 问题?

否。任何使用过时的 ProGuard 基线引用(app 或库)的 Android 模块(app 或库)都可能遇到类似的 AGP 9 构建错误。尤其是在插件生态系统中,因为许多仓库共享旧的模板。

什么关键词与此迁移相关?

如果您在内部运行手册或支持页面中记录此内容,请包含以下术语:

  • AGP 9 构建错误
  • Android Gradle Plugin 9 ProGuard 文件丢失
  • Capacitor 插件 Android 构建失败
  • proguard-android.txt 替换
  • proguard-android-optimize.txt 迁移

最终收获

这个 AGP 9 问题虽然简单,但在多插件工作区中容易被忽略。一次你将 proguard-android.txt 替换 proguard-android-optimize.txt 所有相关的

If you use Capgo plugins, this migration is already applied in official repositories so you can upgrade with fewer surprises.

如果你使用 Capacitor 插件,这个迁移已经在官方仓库中应用了,所以你可以升级时少一些惊喜。

继续从 __CAPGO_KEEP_0__ 插件 AGP 9 构建错误修复 Capacitor Plugin AGP 9 Build Error Fix __CAPGO_KEEP_0__ 插件 AGP 9 构建错误修复来规划 CI/CD 自动化,连接它 Capgo CI/CD 为产品工作流程在 Capgo CI/CD 中 Capgo 原生构建 为产品工作流程在 Capgo 原生构建 中 Capgo 集成 为产品工作流程在 Capgo 集成 中 CI/CD 集成 CI/CD 集成的实现细节 GitHub 动作集成 for the implementation detail in GitHub Actions Integration.

Capacitor 应用实时更新

当 web 层面 bug 活跃时,通过 Capgo 将修复推送给用户,而不是等待几天的应用商店审批。用户在后台接收更新,而原生变化保持在正常的审批路径中。

立即开始

最新博客

Capgo 为您提供创建真正专业的移动应用所需的最佳见解。