【发布时间】:2013-07-02 04:01:48
【问题描述】:
我的项目有两种风格:
flavor1 -> packagename: com.example.flavor1
flavor2 -> packagename: com.example.flavor2
现在我想构建一个flavor1 和flavor2 的buildvariant。 buildvariant 的唯一区别是另一个包名。
我的项目使用 MapFragments 并且只有一个 Manifest - 所以我将 MAPS_RECEIVE 的权限名称放在我各自风格的字符串资源文件中。
问题是:如何替换 buildvariant 的字符串资源?
我尝试了以下方法(described in this post):
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() [{tokens={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 后缀=null,runProguard=false,zipAlign=true,signingConfig=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,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'
}
}
}
【问题讨论】:
-
嘿,我尝试了另一种解决方案。但它不起作用。虽然构建成功,但字符串没有被替换。谁能给我提示一下我的复制任务出了什么问题?
-
新的 Manifest 合并怎么样?这对你有用吗? tools.android.com/tech-docs/new-build-system/user-guide/…
标签: android gradle android-studio build.gradle