代码之家  ›  专栏  ›  技术社区  ›  ether_joe

android-更新@string/app\u名称,每个版本都有唯一的哈希

  •  1
  • ether_joe  · 技术社区  · 8 年前

    有没有办法在构建时以编程方式更新@字符串值?也许有些Gradle功能我不知道?

    2 回复  |  直到 8 年前
        1
  •  2
  •   badoualy    8 年前

    使用resValue从gradle文件中添加资源值。 Is it possible to declare a variable in Gradle usable in Java?

        2
  •  1
  •   Dima Kozhevin Yogeshwar Suvarnakar    8 年前

    此代码替换中的值 <string name="logging"></string>

    \脚本\ set\u strings\u xml\u app\u版本。上海

    sed -E -i "" "s/<string name=\"logging\" translatable=\"false\">[a-zA-Z0-9]+<\/string>/<string name=\"logging\" translatable=\"false\">$1<\/string>/g" "$2"
    

    \应用程序\版本。格拉德尔

    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