一、问题场景
我们在开发完 Android 项目后会进行打包操作,如果不进行任何配置的话,生成的包名会是 app-release.apk。我们一般都会配置成我们想要输出的名称,但是 Flutter 怎么配置呢?
二、解决思路
1、如 Android 原生一样配置
applicationVariants.all { variant ->
variant.outputs.each{ output ->
output.outputFile = new File(output.outputFile.parent,output.outputFile.name.replace(".apk","-" + defaultConfig.versionName + ".apk" ))
}
}
配置完后执行命令:
flutter build apk
...
Gradle build failed to produce an .apk file. It's likely that this file was
generated under /Users/haoyd/proSpace/flutterSpace/driver/build, but the
tool couldn't find it.
报错 !
2、设置 archivesBaseName
defaultConfig {
setProperty("archivesBaseName", "driver-v" + flutterVersionName)
}
配置完后执行命令:
flutter build apk
...
Running Gradle task 'assembleRelease'...
Removed unused resources: Binary resource data reduced from 728KB to 724KB: Removed 0%
Running Gradle task 'assembleRelease'...
Running Gradle task 'assembleRelease'... Done 160.6s (!)
Gradle build failed to produce an .apk file. It's likely that this file was
generated under /Users/haoyd/proSpace/flutterSpace/driver/build, but the
tool couldn't find it.
虽然这种方法可以生成指定的 APK 名,但还是会报 Gradle build failed。
三、总结
虽然用第 2 种方法成功生成了 APK 包,但是有错误信息的包也不敢轻易使用,在 github 上也调研了一些人提的 issue,总得来说这个算是 Flutter 的一个 bug(要么不能修改文件名,如果修改完文件名后 tool 就找不到文件了)。
目前 Master 分支可能已经修复这个问题了,但是还没有出现在稳定版中,只能先手动修改文件名了。
如果什么时候大家发现这个问题已经修复,或者有什么其它方法可以解决问题,可以在评论中贴出,我会在文章中做内容更新 !