既存のアプリに新しい動的機能モジュールを実装したかったのですが、製品のフレーバーの問題により断念しました。
サンプルコードはここにあります。https://github.com/henningBunk/dynamic_feature_problem
私は3つのモジュールを持っています:
- アプリ。アプリのメイン モジュール。2 つの製品フレーバーがあります。
store
:amazon
とgoogle
pay_status
:free
とpro
amazonFree
、amazonPro
、googleFree
およびの 4 つの組み合わせ
になります。googlePro
それは依存し、動的機能としてlib
リストされます。dynamic_feature
lib。ライブラリ モジュールで
app
ありdynamic_feature
、このモジュールに依存します。味lib
だけがあります。pay_status
だから私が例えばビルドするとき。アプリをgoogleFree
フレーバーとして、lib がそのフレーバーをビルドしfree
ます。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 に追加します。このようにして、いくつかのフレーバーを作成できますが、すべてではありません。