Фильтровать strings.xml с gradle -android-plugin?

Как мне отфильтровать файл res/values ​​/strings.xml?

Что-то вроде:

<resources>
    <string name="version_name">${version}</string>
...

${version} будет расширен до значения version из файла build.gradle

Ответ 1

С закрытием groovy, если вы предпочитаете ant внешний:

filter {
    line -> line.replace('${version}', version)
}

Ответ 2

Вы можете использовать ReplaceTokens с помощью метода фильтра, если у вас есть ваш токен в следующем формате: @[email protected]

Итак, если ваш файл выглядит так:

<resources>
   <string name="version_name">@[email protected]</string>
...

то вы можете сделать:

import org.apache.tools.ant.filters.ReplaceTokens

def version = '1.0'

processResources{
 filter(ReplaceTokens, tokens: ['version': version])
}

Вы можете сделать это для любой задачи, поддерживающей методы фильтрации (которая выглядит как любая задача, которая расширяет AbstractCopyTask).

Я не уверен, как вы это сделаете, если хотите сохранить формат ${token}. Возможно, вы сможете использовать другой фильтр или установить фильтр на ReplaceTokens. Похоже, что в ant вы можете установить токены начала и конца.