У меня есть два варианта моего проекта:
flavor1 -> packagename: com.example.flavor1
flavor2 -> packagename: com.example.flavor2
Теперь я хочу построить buildvariant вкуса1 и flavor2. Единственное отличие buildvariant - другое имя пакета.
Мой проект использует MapFragments и имеет только один манифест - поэтому я поместил имя MAPS_RECEIVE в мои файлы с строковыми ресурсами соответствующих ароматов.
Возникает вопрос: как заменить строковый ресурс buildvariant?
Я пробовал следующий подход (описанный в этом сообщении):
buildTypes{
flavor1Rev{
packageName 'com.example.rev.flavor1'
filter(org.apache.tools.ant.filters.ReplaceTokens, tokens: ['package_permission' : 'com.example.rev.flavor1.permission.MAPS_RECEIVE'])
}
}
Но используя это, я получил эту ошибку:
Не удалось найти метод filter() для аргументов [{{Лексемы = package_permission = com.example.rev.flavor1.permission.MAPS_RECEIVE}}, BuildTypeDsl_D ecorated {name = ReplaceTokens, debuggable = false, jniDebugBuild = false, renderscript DebugBuild = false, renderscriptOptimLevel = 3, packageNameSuffix = null, versionNameS uffix = null, runProguard = false, zipAlign = true, signedConfig = null}] on BuildTypeD sl_Decorated {name = buderusFinal, debuggable = false, jniDebugBuild = false, renderscr iptDebugBuild = false, renderscriptOptimLevel = 3, packageNameSuffix = null, versionNa meSuffix = null, runProguard = false, zipAlign = true, signedConfig = null}.
Нужно ли определять собственную задачу для метода фильтрации?
EDIT [2013_07_09]:
Строка в src/flavor1/res:
<string name="package_permission">package_permission</string>
Код в build.gradle для замены строки:
buildTypes{
flavor1Rev{
copy{
from('src/res/'){
include '**/*.xml'
filter{String line -> line.replaceAll(package_permission, 'com.example.rev.flavor1.permission.MAPS_RECEIVE')}
}
into '$buildDir/res'
}
}
}