Build.gradleファイルで定義されたプロジェクトがあります
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.Android.tools.build:gradle:0.5.6'
}
}
apply plugin: 'Android'
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
}
Android {
compileSdkVersion 17
buildToolsVersion "17.0.0"
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
Java.srcDirs = ['src']
resources.srcDirs = ['resources']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
instrumentTest.setRoot('tests')
}
defaultConfig {
...
}
signingConfigs {
debug {
storeFile file("debug.keystore")
}
release {
...
}
}
buildTypes {
debug {
debuggable true
jniDebugBuild true
signingConfig signingConfigs.debug
packageNameSuffix ".debug"
versionNameSuffix ".debug"
}
release {
debuggable false
jniDebugBuild false
signingConfig signingConfigs.release
}
}
flavorGroups "version", "market"
productFlavors {
Amazon {
flavorGroup "market"
buildConfig "public static final int COMPILATION = 1;"
}
google {
flavorGroup "market"
buildConfig "public static final int COMPILATION = 0;"
}
lite {
flavorGroup "version"
packageName = "package.name.lite"
}
full {
flavorGroup "version"
packageName = "package.name.full"
}
}
Android.sourceSets.Amazon {
res {
srcDir "Amazon"
}
manifest {
srcFile "Amazon/AndroidManifest.xml"
}
}
Android.sourceSets.google {
res {
srcDir "google"
}
}
Android.sourceSets.full {
res {
srcDir "full"
}
}
Android.sourceSets.lite {
res {
srcDir "lite"
}
}
}
正常に動作しますが、すべての製品フレーバーに特定のランチャーアイコンを提供したいと思います。 Amazon用に追加のマニフェストファイルを入れようとしましたが、機能しませんでした。 「APKAndroidManifest.xmlにコピーされたファイルを複製します」というエラーが発生しました。何が悪いのでしょうか?
いくつかのオプションがあります。
新しいAndroid studio/gradleレイアウトに切り替えて、productFlavorsのフォルダーを作成します。
src/main/
-すべてのフレーバー間で共有されるコード/リソースsrc/Amazon
-すべてのフレーバーにわたるAmazon固有のコード/リソースsrc/google
-すべてのフレーバーにわたるGoogle固有のコード/リソース
したがって、メインマニフェスト(src/main/AndroidManifest.xml
)で、Android:icon
が@drawable/icon
の場合、適切なアイコンがsrc/Amazon/res/drawable-*/icon.png
にあり、残りのproductFlavorsにも同様です。
既存のレイアウト(およびbuild.gradle)を保持し、リソースディレクトリをres.srcDirs
に追加します。
したがって、Amazonソースセットの場合:
Android.sourceSets.Amazon {
res.srcDirs = ['res', '/path/to/Amazon/res/dir']
}
そして、/path/to/Amazon/res/dir/drawable-*
にランチャーアイコンがあります。