我的项目有两种风格:
flavor1 -> packagename: com.example.flavor1
flavor2 -> packagename: com.example.flavor2
现在我想构建一个风味 1 和风味 2 的 buildvariant。buildvariant 的唯一区别是另一个包名。
我的项目使用 MapFragments 并且只有一个 Manifest - 所以我将 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'])
}
}
但是使用这个我得到了这个错误:
找不到参数 [{tokens={package_permission=com.example.rev.flavor1.permission.MAPS_RECEIVE}} 的方法 filter(), BuildTypeDsl_D ecorated{name=ReplaceTokens, debuggable=false, jniDebugBuild=false, renderscript DebugBuild=false, renderscriptOptimLevel=3, packageNameSuffix=null, versionNameS uffix=null, runProguard=false, zipAlign=true, signingConfig=null}] 在 BuildTypeD sl_Decorated{name=buderusFinal, debuggable=false, jniDebugBuild=false, renderscr iptDebugBuild=false, renderscriptOptimLevel=3 , packageNameSuffix=null, versionNameSuffix=null, runProguard=false, zipAlign=true, signingConfig=null}。
我必须为过滤方法定义自己的任务吗?
编辑[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'
}
}
}