Android Studioで依存ライブラリを追加・更新したあとに、「Dependency ‘~’ requires libraries and applications that depend on it to compile against version ~ or later」というエラーが表示され、ビルドできなくなることがあります。
エラー内容
Dependency '~' requires libraries and applications that depend on it to compile against version ~ or later.
このエラーは、使用している依存ライブラリが要求するコンパイルSDKのバージョンより、アプリ側のcompileSdkが低い場合に発生します。minSdkやtargetSdkとは役割が異なり、まず確認すべきなのはcompileSdkです。
代表的な発生状況
- AndroidXやMaterial Componentsなどのライブラリを新しいバージョンへ更新した。
- 新しい依存関係を追加したところ、AARメタデータがより高いCompile SDKを要求した。
- 古いプロジェクトを新しいAndroid StudioやAndroid Gradle Pluginで開いた。
- 複数モジュールのうち、一部だけ
compileSdkが低いままになっている。
確認手順1:エラー内の要求バージョンを確認する
まずBuild Outputを開き、どの依存ライブラリがどのCompile SDK以上を要求しているか確認します。たとえばライブラリがAPI 35以上を要求しているのに、アプリがAPI 34でコンパイルされている場合は不一致です。
依存ライブラリ名と要求されているバージョンを控えてから設定を変更すると、原因を切り分けやすくなります。
解決方法1:compileSdkを引き上げる
モジュールレベルのbuild.gradle.ktsでは、androidブロック内のcompileSdkをライブラリが要求する値以上に変更します。
android {
compileSdk = 35
}
Groovy形式の場合は次のように設定します。
android {
compileSdk 35
}
変更後にGradle Syncを実行し、再度ビルドします。
解決方法2:必要なAndroid SDK Platformをインストールする
compileSdkを引き上げても、そのSDK Platformがローカル環境にない場合は別のエラーになります。Android StudioのSDK Managerを開き、設定したAPIレベルのAndroid SDK Platformをインストールしてください。
解決方法3:依存ライブラリを互換性のあるバージョンへ戻す
すぐにcompileSdkを上げられない事情がある場合は、依存ライブラリを以前の互換バージョンへ戻す方法があります。
dependencies {
implementation("com.example:library:以前の互換バージョン")
}
ただし、古いバージョンを固定し続けると不具合修正やセキュリティ更新を受けられない場合があるため、恒久対策としてはcompileSdkを適切に更新する方が望ましいです。
解決方法4:複数モジュールのcompileSdkをそろえる
アプリ本体だけでなく、ライブラリモジュールやFeatureモジュールを含むプロジェクトでは、各AndroidモジュールのcompileSdkも確認します。一部だけ古い値だと、依存関係の検証で失敗することがあります。
compileSdk・minSdk・targetSdkの違い
compileSdkは、コンパイル時に使用できるAndroid APIを決めます。minSdkはアプリを実行できる最低Androidバージョン、targetSdkはアプリが対象として設計・テストされているAndroidバージョンを示します。
compileSdkを上げても、それだけで古いAndroid端末への対応が打ち切られるわけではありません。対応可能な最低バージョンは主にminSdkで決まります。
それでも解決しない場合
Gradle Sync後も同じエラーが残る場合は、Build Outputに表示される依存関係を確認し、どのライブラリが高いCompile SDKを要求しているか再確認します。必要に応じて依存関係ツリーも確認します。
./gradlew app:dependencies
WindowsではGradle Wrapperを次のように実行できます。
gradlew.bat app:dependencies
まとめ
「Dependency ‘~’ requires libraries and applications that depend on it to compile against version ~ or later」が表示された場合は、依存ライブラリが要求するCompile SDKとアプリ側のcompileSdkが一致しているか確認します。基本的な解決方法はcompileSdkを要求値以上へ更新し、必要なSDK PlatformをインストールしてGradle Syncを実行することです。すぐに更新できない場合は、依存ライブラリを互換性のあるバージョンへ戻して対処します。
