Flutter打包APK出现AbstractArchiveTask.destinationDir弃用报错如何解决
操作正确性确认
你打开Android模块的操作是Flutter官方推荐的编辑安卓原生配置、处理打包相关需求的标准操作,不存在问题。报错是因为Gradle版本与项目中旧配置API不兼容,和你的操作步骤无关。
报错原因
错误触发是因为当前项目的Gradle配置用到了已废弃的destinationDir属性,这个API在Gradle 7.0及以上版本已经被正式移除,官方要求替换为destinationDirectory属性,通常不兼容的配置来自两个场景:要么是你项目安卓目录下的自定义打包配置用了旧API,要么是你依赖的第三方Flutter插件还未适配新的Gradle API。
修复步骤
步骤1:修改项目本地打包配置
- 打开Flutter项目下的
/android/app/build.gradle文件 - 全局搜索所有包含
destinationDir的代码行,通常出现在applicationVariants打包配置块中,旧写法示例:
applicationVariants.all { variant -> variant.outputs.all { outputFileName = "CustomApp_${variant.versionName}.apk" // 废弃的旧写法 output.destinationDir = file("${project.rootDir}/outputs/apk/${variant.buildType.name}") } }
- 把
destinationDir替换为destinationDirectory即可,修改后示例:
applicationVariants.all { variant -> variant.outputs.all { outputFileName = "CustomApp_${variant.versionName}.apk" // 适配Gradle 7.0+的新写法 output.destinationDirectory = file("${project.rootDir}/outputs/apk/${variant.buildType.name}") } }
步骤2:排查第三方插件兼容问题
如果修改完项目本地配置同步依然失败,说明是依赖的第三方Flutter插件还在使用废弃API:
- 执行
flutter pub upgrade把所有依赖更新到最新版本,大部分主流插件已经完成Gradle 7.0+适配 - 若存在长期未更新的不兼容插件,可手动找到对应插件的安卓构建配置文件临时修改,或者在pubspec.yaml中替换为其他同功能的兼容插件
步骤3:验证修复效果
修改完成后,在/android目录下执行./gradlew clean(Windows系统执行gradlew clean)清理构建缓存,再重新触发Gradle同步即可解决报错。
签名APK打包补充提示
配置好签名信息后,不需要每次都打开Android Studio打包,直接在Flutter项目根目录执行flutter build apk --release即可直接生成签名后的Release APK,输出路径会在终端执行结果中打印。
内容的提问来源于stack exchange,提问作者Dinesh Falwadiya
相关产品推荐
相关产品推荐

