Как сделать фильтрацию ресурсов в 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 и processReleaseResources в Android, но, к сожалению, это невозможно. Есть ли другой альтернативный способ?

Я проверил "productFlavors", но для этого требуется определить всю новую структуру проекта, все, что я хочу, - это изменить одно свойство здесь.

1 ответ

Поскольку я новичок в системе построения градиентов, возможно, это не лучшее решение, но это сработало для меня:

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

licensed under cc by-sa 3.0 with attribution.