如何将Visual Studio Code中开发的应用打包为APK并解决构建报错问题
问题解决方案
1. 核心构建失败问题修复
你遇到的报错本质是资源压缩阶段的XML属性重复定义问题,Android构建工具在执行shrinkReleaseResources任务时,检测到resources元素上重复声明了http://schemas.android.com/tools命名空间下的keep属性,按以下步骤排查修复:
- 找到项目中
android/app/src/main/res/raw/或者android/app/src/main/res/xml/目录下的资源保留规则文件,通常命名为keep.xml - 打开该文件检查根节点
<resources>的属性,删除重复的tools:keep声明即可,正常的配置应该仅保留1次tools:keep属性,示例正确配置如下:
<?xml version="1.0" encoding="utf-8"?> <resources xmlns:tools="http://schemas.android.com/tools" tools:keep="@drawable/*,@raw/*" />
- 如果没有自定义过
keep.xml,则是你引入的第三方依赖同时声明了资源保留规则导致冲突,可在自己项目的android/app/build.gradle文件中添加以下配置解决冲突:
android { ... buildTypes { release { ... shrinkResources true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' // 新增下面的配置 packagingOptions { exclude 'res/raw/keep.xml' } } } }
2. 执行带--stacktrace的构建命令方法
你可以选择以下任意一种方式执行带堆栈日志的构建:
- 方式一:直接在Flutter构建命令中传递gradle参数
flutter build appbundle --release --gradle-arg="--stacktrace"
- 方式二:进入android目录执行gradle原生命令
# 进入安卓子目录 cd android # Mac/Linux系统执行 ./gradlew bundleRelease --stacktrace # Windows系统执行 gradlew.bat bundleRelease --stacktrace
内容的提问来源于stack exchange,提问作者Adrian Alejo
相关产品推荐
相关产品推荐

