我的Android应用程序中有以下内容

#MyAndroidApp/assets/app.properties

server=localhost
....
....

在构建应用程序时,我想将“server”的值从localhost更改为gradle.properties中定义的值。

'java'插件允许我执行此操作
processResources {
   def serverHostName = project.hasProperty("serverhost") ? project.property("serverhost") : "localhost"
   filter ReplaceTokens, tokens: [
    "serverhost": serverHostName
   ]
}

同样,我以为可以覆盖Android中的processDebugResources和processReleaseResources,但不幸的是,这是不可能的。还有其他替代方法吗?

我 checkout 了“productFlavors”,但它需要定义整个新的项目结构,我只想在这里更改单个属性。

最佳答案

由于我是gradle构建系统的新手,它可能不是最佳解决方案,但它对我有用:

defaultConfig {
    ...
    applicationVariants.all { variant ->
         def serverHostName = project.hasProperty("serverhost") ? project.property("serverhost") : "localhost"
         variant.mergeAssets.doLast {
            copy {
                from("${projectDir}/src/main/assets") {
                    include "*.properties"
                }
                into("${buildDir}/assets/${variant.dirName}")

                filter(ReplaceTokens, tokens: [
                        "serverhost": serverHostName)
                ])
            }
        }
    }
}

08-28 14:22