一、問題場景
我們在開發完 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 分支可能已經修復這個問題了,但是還沒有出現在穩定版中,只能先手動修改文件名了。
如果什麼時候大家發現這個問題已經修復,或者有什麼其它方法可以解決問題,可以在評論中貼出,我會在文章中做內容更新 !