実験的な Gradle プラグインを使用してフレーバー ディメンションとバリアント フィルターを定義するための構文を知っている人はいますか? (これには、各フレーバーのcreate()
ブロック内の特定の次元にフレーバーを割り当てるための構文が含まれます。)
実験的なプラグインのユーザー ガイドでは、これについては何も触れられておらず、コード サンプルに例が見つかりませんでした。プラグイン バージョン 0.2.1 ( com.android.tools.build:gradle-experimental:0.2.1
) を使用しています。通常のプラグインの構文は明らかにまったく機能しません。
Google Play と Amazon AppStore のプロダクト フレーバーを定義する元のスクリプトを次に示します。
apply plugin: 'com.android.model.application'
model {
android {
compileSdkVersion = 23
buildToolsVersion = '23.0.1'
defaultConfig.with {
... // normal stuff
}
}
android.aaptOptions {
noCompress = 'dict'
}
android.ndk {
... // normal stuff
}
android.compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7
}
android.buildTypes {
release {
minifyEnabled = true
proguardFiles += file('proguard-rules.pro')
}
}
android.productFlavors {
create("google") {
}
create("amazon") {
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:support-v4:23.1.0'
compile 'com.android.support:support-annotations:23.1.0'
}
このアプリはネイティブ コードを使用しているため、さまざまなハードウェア プラットフォーム用のディメンションを追加したいと考えています。また、Amazon AppStore と Google Play では異なるハードウェアをサポートするためのモデルが異なるため、バリアント フィルターを使用して、市場ごとに異なるハードウェア プラットフォームを扱いたいと考えています。
私は暗闇の中で盲目的につまずき、フレーバーの次元を定義するために多くのことを試みました。これらはすべて、Gradle スクリプトをコンパイルするときにエラーを生成します。
ステップ1で立ち往生しているため、バリアントフィルターの作成はまだ試していませんが、「知っている」誰かからのガイダンスがないため、同等の(欠如した)成功を期待しています。
試行 1:
apply plugin: 'com.android.model.application'
model {
android {
...
defaultConfig.with {
...
flavorDimensions = ["abi", "market"]
}
}
...
}
...
エラー:
そのようなプロパティはありません: クラスのフレーバーディメンション: com.android.build.gradle.managed.ProductFlavor
試行 2:
apply plugin: 'com.android.model.application'
model {
android {
...
defaultConfig.with {
...
}
flavorDimensions = ["abi", "market"]
}
...
}
...
エラー:
そのようなプロパティはありません: クラスのフレーバーディメンション: com.android.build.gradle.managed.AndroidConfig
試行 3:
apply plugin: 'com.android.model.application'
model {
android {
... // as in original script
}
android.flavorDimensions {
create("abi") {}
create("market") {}
}
}
...
エラー:
プロジェクト ':app' の構成中に問題が発生しました。
次のモデル ルールはバインドされていません: model.android.flavorDimensions Mutable
:
- android.flavorDimensions (java.lang.Object)
試行 4:
apply plugin: 'com.android.model.application'
model {
android {
...
}
android.flavorDimensions = ["abi", "market"]
}
エラー:
そのようなプロパティはありません: クラスのflavorDimensions: org.gradle.model.dsl.internal.NonTransformedModelDslBacking