1. ホーム
  2. android

[解決済み] Android Gradleでマルチフレーバーライブラリに基づくマルチフレーバーアプリを作成する。

2022-10-31 19:34:15

質問

私のアプリは、いくつかの市場のアプリ内課金システム用にいくつかのフレーバーを持っています。

私は、すべてのプロジェクトのベース コードを共有する 1 つのライブラリを持っています。そこで私は、これらの支払いシステムを製品のフレーバーとしてこのライブラリに追加することにしました。

問題は、アンドロイドライブラリにプロダクトフレーバーを持たせることができるかということです。

もしそうなら、どのようにしてアプリのそれぞれのフレーバーに異なるフレーバーを含めることができますか?

私はたくさん検索しましたが、このシナリオについて何も見つけることができませんでした。私が見つけた唯一の近いものは、次のとおりです。 http://tools.android.com/tech-docs/new-build-system/user-guide :

dependencies {
    flavor1Compile project(path: ':lib1', configuration: 'flavor1Release')
    flavor2Compile project(path: ':lib1', configuration: 'flavor2Release')
}

設定をいろいろ変えてみたのですが、うまくいきませんでした

android studio 0.8.2を使っています。

どのように解決するのですか?

ようやくこの方法を見つけましたので、同じ問題に直面している他の人のためにここで説明します。

重要なのは、build.gradleでpublishNonDefaultをtrueに設定し、ユーザーガイドで提案されているように依存関係を定義する必要があることです。

プロジェクト全体はこのような感じになります。

build.gradleをライブラリ化します。

apply plugin: 'com.android.library'

android {        
    ....
    publishNonDefault true
    productFlavors {
        market1 {}
        market2 {}
    }
}

プロジェクトのbuild.gradleです。

apply plugin: 'com.android.application'

android {
    ....
    productFlavors {
        market1 {}
        market2 {}
    }
}

dependencies {
    ....
    market1Compile project(path: ':lib', configuration: 'market1Release')
    market2Compile project(path: ':lib', configuration: 'market2Release')
}

これで、アプリのフレーバーとビルドバリアントパネルを選択すると、それに応じてライブラリが選択され、すべてのビルドと実行は選択されたフレーバーに基づいて行われます。

ライブラリに基づく複数のアプリモジュールがある場合、Android StudioはVariant選択の衝突について文句を言いますが、大丈夫です、無視してください。