如何在Android插件中为Gradle做资源过滤



我有以下在我的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
   ]
}

同样,我认为我可以覆盖processDebugResources和processreleaseresource在Android,但不幸的是,这是不可能的。还有别的办法吗?

我检查了'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)
                ])
            }
        }
    }
}

最新更新