同じモジュールを使用する一連のプロジェクトがあり、実際のコードのほとんどすべてが含まれています。プロジェクトは次のように設定されています:
project/
- app/
- build.gradle
- libraries/
- module/
- build.gradle
- build.gradle
- settings.gradle
依存関係はすべて正しく設定されており、アプリを適切にビルドして実行できますが、プロジェクトに追加できるのは理想的なソリューションではありません。 settings.gradleには以下が含まれます:
include ':app', ':libraries:module'
アプリディレクトリのbuild.gradleファイルに、次のブロックを追加しました。
productFlavors {
alpha
production
}
Gradle 0.11を使用すると、これはassembleAlphaDebug、assembleAlphaRelease、assembleProductionDebug、assembleProductionReleaseタスクを同期して作成します。代わりにモジュールでこれを実行しようとすると、エラーが発生します。
指定された名前に一致するリソースが見つかりません( 'theme'で値 '@ style/MyCustomTheme')
ビルドされたapp/src/main/AndroidManifest.xml
。何らかの理由で、モジュールがビルドされていないため、カスタムテーマが機能していません。何が悪いのですか?
ライブラリモジュールのbuild.gradleで、フレーバーと、別のモジュールからインクルードするときに指定されていない場合にデフォルトで使用するビルドバリアントをエクスポートするように指示するために、追加の行がいくつか必要です。
Android {
defaultPublishConfig "productionRelease"
publishNonDefault true
productFlavors {
alpha {
}
production {
}
}
}
そのpublishNonDefault
ビットは、誰かがproductionRelease
バリアント以外のものに依存したい場合にのみ必要です。おそらく、最初にライブラリにマルチフレーバーを設定した場合がそうです。
ここで、build.gradleでこれを介して別のモジュールからの依存関係を追加すると、次のようになります。
dependencies {
compile project(':module')
}
デフォルトではproductionRelease
バリアントに依存します。デフォルト以外のバリアントに依存する場合:
dependencies {
compile project(path: ':module', configuration:'alphaDebug')
}