如何在Gradle的Android插件中进行资源过滤?

时间:2014-08-03 06:35:58

标签: android gradle android-gradle

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

#MyAndroidApp/assets/app.properties

server=localhost
....
....

在构建应用时,我想更改服务器'从localhost到gradle.properties中定义的任何内容。

' java'插件允许我这样做

processResources {
   def serverHostName = project.hasProperty("serverhost") ? project.property("serverhost") : "localhost"
   filter ReplaceTokens, tokens: [
    "serverhost": serverHostName
   ]
}

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

我检查过&product;' productFlavors'但它需要定义全新的项目结构,我想要的只是在这里更改一个属性。

1 个答案:

答案 0 :(得分:3)

由于我是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)
                ])
            }
        }
    }
}