在我们的Android项目中,我们希望APK的文件名包含日期,git分支名称和简短提交哈希等信息。
我们一直将此设置为defaultConfig
android {
defaultConfig {
setProperty("archivesBaseName", "$projectName.$branchName.$date.$buildNumber.$versionCode-$versionName-$versionSha")
}
}
这大部分时间都可以工作,但是我们的构建有时会失败,错误指向过时的值(例如在切换分支之后)。在Android Studio中强制Gradle Sync通常会修复它。
那么是否有更好,更强大的方法来确保财产保持最新并在必要时强制进行同步?
答案 0 :(得分:2)
尝试在
之前致电clean.execute()
android { ... }
这是我能想到的最便宜的“同步”任务:)
clean.execute()
android {
defaultConfig {
setProperty("archivesBaseName", "$projectName.$branchName.$date.$buildNumber.$versionCode-$versionName-$versionSha")
}
}
答案 1 :(得分:0)
如果在构建过程中发生错误,则会显示“消息”窗口以描述该问题。 Gradle可能会推荐一些命令行选项来帮助您解决问题,例如--stacktrace或--debug。在构建过程中使用命令行选项:
Gradle将在您下次尝试构建应用时应用这些命令行选项。
我已从this页面获取了信息。
答案 2 :(得分:0)
我遇到了同样的问题,他们并不总是对构建有所了解。
我通过使用:
解决了它project.ext.set("archivesBaseName", "myAppName");
在defaultConfig块下,我没有遇到问题。
不确定它是否适用于分支机构,内部版本号或日期,但值得一试。 这是我的配置,包括defaultConfig Block。对于我的情况,我只使用硬编码版本名称和构建号码(我称之为versionCode,因为我动态地在清单中设置它)。但也许你可以根据自己的需要进行调整:
defaultConfig {
minSdkVersion 15
targetSdkVersion 22
versionCode System.getenv("BUILD_NUMBER") as Integer ?: 0
versionName "6.2.5." + versionCode
}
project.ext.set("archivesBaseName", "myAppname" + defaultConfig.versionName);