Azure DevOps XamarinAndroid@1任务生成AAB未包含proguard.map的解决咨询
Azure DevOps CI下Xamarin Android AAB嵌入ProGuard映射文件的解决办法
要强制CI环境中bundletool.jar调用时带上-metadata-file=com.android.tools.build.obfuscation/proguard.map:bin\Release\mapping.txt参数,最直接的方式是利用Xamarin Android的MSBuild扩展属性:
- 在Azure DevOps的XamarinAndroid@1任务中,给MSBuild命令添加以下参数:
注意根据CI环境的路径格式调整,比如Linux/macOS环境下把路径改成/p:AndroidBundleToolExtraArgs="-metadata-file=com.android.tools.build.obfuscation/proguard.map:bin\Release\mapping.txt"bin/Release/mapping.txt。
额外验证要点
- 确认CI任务中
bin/Release/mapping.txt文件已生成:可以在打包步骤前添加一个文件检查任务,确保映射文件存在 - 若使用R8混淆,显式指定
/p:AndroidEnableR8=True(虽然默认开启,但CI环境可能因配置缺失导致不生效) - 查看CI任务的详细日志,搜索bundletool相关调用,确认
-metadata-file参数已被正确传入
备选方案:手动执行BundleTool打包
如果上述属性未生效,可以拆分打包流程:
- 先用XamarinAndroid@1任务生成基础模块包(不直接生成AAB)
- 单独调用bundletool.jar完成打包,手动传入参数:
java -jar bundletool.jar build-bundle --modules=bin/Release/[你的应用模块名]-base.zip --output=bin/Release/[你的应用名].aab --metadata-file=com.android.tools.build.obfuscation/proguard.map:bin/Release/mapping.txt
内容的提问来源于stack exchange,提问作者jeoffman
相关产品推荐
相关产品推荐

