ベースモジュールのbaseFeatureタグを忘れている可能性があります。 ベースモジュールと2つの機能モジュールを使用している場合、グラデルは次のようになります(正しいプラグイン、baseFeature = trueタグ、および正しい依存宣言に注意する必要があります)。
Baseモジュール Gradleのファイル:
apply plugin: 'com.android.feature'
android {
//this is mandatory for the base module of the project
baseFeature = true
...
}
dependencies {
...
feature project(':feature1')
feature project(':feature2')
application project(':hello-installed')
}
特長1モジュールと特長2モジュール Gradleのファイル:
apply plugin: 'com.android.feature'
android {
...
}
dependencies {
...
implementation project(':base')
}
インスタントアプリケーションモジュールのGradleファイル:
apply plugin: 'com.android.instantapp'
dependencies {
implementation project(':base')
implementation project(':feature1')
implementation project(':feature2')
}
全アプリケーションモジュールのGradleファイル:
apply plugin: 'com.android.application'
android {
//classic gradle declaration for legacy apps
}
dependencies {
implementation project(':base')
implementation project(':feature1')
implementation project(':feature2')
//non instant libraries will only appear here
implementation project(':nonInstantLibrary')
}
非インスタント互換性のあるモジュールのGradleファイル:
//it will use the legacy library plugin
apply plugin: 'com.android.library'
dependencies {
...
implementation project(':base')
}
私は、ベースモジュールが何であるかを理解しよう。フィーチャモジュールとベースモジュールの違いについて説明できますか? Googleのドキュメントはこれについて明確ではありません。 –
@ GillisHaasnootインスタントアプリはプロジェクトのモジュール化に基づいています。プロジェクトには、他のすべてのモジュールに共通する、アプリケーションの中核となるベースモジュールが1つだけあります。たとえば、AppCompat、Analytics、Databaseなどの共通リソースのJavaコード/依存関係が含まれている可能性があります。一方、フィーチャー・モジュールは、基本モジュールをライブラリーとして使用できる特定のスタンドアロン機能を実装しますが、他の機能を使用してください。ここで素敵な説明:https://willowtreeapps.com/ideas/an-introduction-to-android-instant-apps – gbaccetta
はい、私はそれを取得します。しかし、なぜインスタントアプリケーション/アプリケーションにベースモジュールを設定する必要がありますか?機能はすでにそれらを使用している私は右ですか?実際にライブラリとベースモジュールの違いはありますか? –