我希望能够快速直观地验证我的模拟器上是否安装了新版本。我正在考虑的一种方法是在每个新构建时使用唯一的哈希值更新@ string / app_name值,或者可能只是随机的四个char值。然后,当我在手机上看到应用程序图标时,它将具有与上一个版本不同的值,我知道它已更新。
有没有办法在构建时以编程方式更新@string值?也许我不知道一些Gradle功能?
答案 0 :(得分:2)
使用resValue从gradle文件添加资源值。 例如,请参阅Is it possible to declare a variable in Gradle usable in Java?
答案 1 :(得分:1)
我做了你需要的事情:
此代码替换<string name="logging"></string>
<强> \脚本\ set_strings_xml_app_version.sh 强>:
sed -E -i "" "s/<string name=\"logging\" translatable=\"false\">[a-zA-Z0-9]+<\/string>/<string name=\"logging\" translatable=\"false\">$1<\/string>/g" "$2"
\ app \ build.gradle :
android {
//...
}
dependencies {
//...
}
task setStringsXMLAppVersion << {
def cmd = projectDir.absolutePath + "/../scripts/set_strings_xml_app_version.sh 0x" + Integer.toHexString(android.defaultConfig.versionCode).toUpperCase() + " " + projectDir.absolutePath + "/../app/src/main/res/values/strings.xml"
def sout = new StringBuffer()
def serr = new StringBuffer()
def proc = cmd.execute()
proc.consumeProcessOutput(sout, serr)
proc.waitForOrKill(1000)
if (serr) {
println "Error while replacing versionCode in strings.xml: $serr"
}
}
preBuild.dependsOn setStringsXMLAppVersion