我的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)
])
}
}
}
}