背景
複数のモジュールに依存しているプロジェクトで、メインとなる app モジュールに staging というビルドタイプを追加してプロジェクトを Gradle Sync すると、次のようなエラーが発生しました。
Unable to resolve dependency for ':app@staging/compileClasspath': Could not resolve project :your-another-module. Open File Show Details
原因と解決法
依存している your-another-module というモジュールに staging という名前のビルドタイプが存在しないことが原因のエラーのようです。
これは Android Gradle Plugin 3.0 での変更点で、以下に記述があります。
Android Plugin for Gradle 3.0.0 への移行 | Android Studio
matchingFallbacks
matchingFallbacks を使用して、特定のビルドタイプが存在しなかった時に使用するビルドタイプを定義できます。
android {
buildTypes {
release {
...
}
debug {
...
}
staging {
matchingFallbacks = ['debug']
}
}
}
このように定義しておくと、 stating ビルドタイプが依存モジュールに存在しない場合に debug ビルドタイプが使用されます。
matchingFallbacks には複数のフォールバック先を指定することが出来るため、たとえば
staging {
matchingFallbacks = ['qa', 'debug']
}
のように指定できます。この場合、依存モジュールに staging ビルドタイプがあればそれが使用され、なければ qa, debug の順に存在が確認され存在するものが使用されます。
参照
このエラーの原因がわからず、検索の仕方が悪かったのか、ロシア語の以下のサイトを見つけるまで解決できずに悩んでました..