1

実験的な 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

4

1 に答える 1