我有我的項目的兩個版本:如何在android studio中用gradle替換buildvariant的字符串?
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'])
}
}
但是使用這個我得到這個錯誤:
Could not find method filter() for arguments [{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 uffix=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}.
我必須定義過濾器方法的爲己任?
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'
}
}
}
嘿,我嘗試另一種解決方案。但它不起作用。雖然構建是成功的,但字符串不會被替換。任何人都可以給我一個提示我的複製任務有什麼問題嗎? – owe
新Manifest Merger的情況如何?這可以爲你工作嗎? http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger – OriolJ