私のプロジェクトには 2 つのフレーバーがあります。
flavor1 -> packagename: com.example.flavor1
flavor2 -> packagename: com.example.flavor2
今度は、フレーバー 1 とフレーバー 2 のビルドバリアントをビルドしたいと思います。buildvariant の唯一の違いは、別のパッケージ名です。
私のプロジェクトは MapFragments を使用し、マニフェストは 1 つしかないため、それぞれのフレーバーの文字列リソース ファイルに 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() が見つかりませんでした [{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}] 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'
}
}
}