You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

上传AAB时遇代码验证错误:‘代码透明元数据生成后添加文件’

App Bundle代码透明验证失败:元数据生成后添加bundletool相关DEX文件

问题详情

上传启用**代码透明(Code Transparency)**的App Bundle新版本至Google Play时,触发以下错误:

在您上传的App Bundle上运行bundletool build-apks时发生错误。请通过本地运行bundletool build-apks确保您的App Bundle有效,然后重试。了解更多。错误:验证失败,原因是代码透明元数据生成后代码被修改。元数据生成后删除的文件:[] 元数据生成后添加的文件:[/com/android/tools/build/bundletool/archive/dex/1_8_2/classes.dex] 元数据生成后修改的文件:[]

首个版本上传正常,最初怀疑是ProGuard/R8混淆导致,参考官方文档中“代码透明文件生成后修改代码的服务会导致验证失败”的提示,关闭混淆后问题仍存在,本地执行bundletool build-apks及代码透明验证均无异常。

排查与解决方案

1. 排查构建后注入的工具/插件

错误中新增的是bundletool相关的DEX文件,大概率是构建流程中有工具在代码透明元数据生成后,向Bundle中额外注入了内容:

  • 检查CI/CD流水线的构建后步骤(比如自动签名工具、第三方代码加固/注入插件),确保这些操作在代码透明元数据生成前完成。
  • 核对项目依赖的Android插件,移除非官方或可能修改Bundle内容的插件。

2. 对齐本地与CI/CD的构建环境

本地验证正常但上传失败,往往是环境不一致导致:

  • 确保CI/CD使用的AGP版本、bundletool版本和本地完全相同。
  • 分别导出本地和CI/CD生成的App Bundle,执行bundletool dump content --bundle=your-app.aab命令对比文件结构,确认CI/CD生成的Bundle是否多了/com/android/tools/build/bundletool/相关目录。

3. 调整代码透明任务的执行顺序

代码透明元数据默认在构建后期生成,若有自定义构建任务,需确保其在元数据生成任务之前运行:

  • 在模块的build.gradle中添加任务依赖配置,示例:
    tasks.named("generateCodeTransparencyMetadataForRelease") {
        mustRunAfter("your-custom-post-build-task")
    }
    
    替换your-custom-post-build-task为实际的构建后任务名称。

4. 检查bundletool的使用参数

确保上传时使用的是标准bundletool命令,没有添加调试或额外注入类的参数,避免生成包含额外文件的Bundle。

内容的提问来源于stack exchange,提问作者Petr Daňa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 02:20:55