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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:45:03