4

既存のアプリに新しい動的機能モジュールを実装したかったのですが、製品のフレーバーの問題により断念しました。

サンプルコードはここにあります。https://github.com/henningBunk/dynamic_feature_problem

私は3つのモジュールを持っています:

  1. アプリ。アプリのメイン モジュール。2 つの製品フレーバーがあります。

store:amazongoogle
pay_status:freepro

amazonFreeamazonProgoogleFreeおよびの 4 つの組み合わせ になります。googlePro

それは依存し、動的機能としてlibリストされます。dynamic_feature

  1. lib。ライブラリ モジュールでappありdynamic_feature、このモジュールに依存します。味libだけがあります。pay_statusだから私が例えばビルドするとき。アプリをgoogleFreeフレーバーとして、lib がそのフレーバーをビルドしfreeます。

  2. dynamic_feature. 動的機能となる新しい機能。このモジュールにはフレーバーがあってはなりません。アプリとライブラリに依存します。

製品のフレーバーと依存関係に縮小された 3 つの gradle ファイルは、次のようになります。

アプリ モジュール build.gradle:

apply plugin: 'com.android.application'

android {
    dynamicFeatures = [":faq"]

    flavorDimensions "store", "pay_status"

    productFlavors {
        google { dimension "store" }
        amazon { dimension "store" }

        free { dimension "pay_status" }
        pro { dimension "pay_status" }
    }
}
dependencies {
    implementation project(':lib')
}

lib モジュール build.gradle:

apply plugin: 'com.android.library'

android {
    flavorDimensions "pay_status"

    productFlavors {
        free { dimension "pay_status" }
        pro { dimension "pay_status" }
    }
}

dependencies {
}

動的機能モジュール build.gradle:

apply plugin: 'com.android.dynamic-feature'

android {}

dependencies {
    implementation project(':app')
    implementation project(':lib')
}

これにより、次のエラーが発生します。

ERROR: Unable to resolve dependency for ':dynamic_feature@debug/compileClasspath': Could not resolve project :app.
Show Details
Affected Modules: dynamic_feature

そのため、モジュールにdynamic_featureは欠損ディメンション戦略が必要になる可能性があると読みました。追加する

missingDimensionStrategy "store", "google"
missingDimensionStrategy "pay_status", "free"

dynamic_feature build.gradle を android.defaultConfig に追加します。このようにして、いくつかのフレーバーを作成できますが、すべてではありません。

ここに画像の説明を入力

4

1 に答える 1