Android compileSdkVersion 必須エラーの解決
問題の説明
Android Studio でプロジェクトをビルドすると、以下のようなエラーが発生します:
3 issues were found when checking AAR metadata:
1. Dependency 'androidx.core:core-ktx:1.9.0' requires libraries and applications that depend on it to compile against version 33 or later...
2. Dependency 'androidx.core:core:1.9.0' requires libraries and applications that...
3. Dependency 'androidx.annotation:annotation-experimental:1.3.0' requires...
エラーの本質
このエラーは、使用中のライブラリが Android API レベル 33(Android 13)以上でコンパイルされることを要求しているのに、プロジェクトの compileSdkVersion
が 32 以下に設定されている場合に発生します。ライブラリが新しい API に依存しているため、互換性エラーが発生しています。
具体的な原因
- プロジェクトの
compileSdkVersion
が 32 以下に設定されている - AndroidX ライブラリ(core-ktx, core, annotation-experimental)の新しいバージョン(1.9.0+)を使用している
- ライブラリが必要とする API レベルとプロジェクト設定が一致しない
推奨解決策: compileSdkVersionの更新
最適で推奨される解決方法は、プロジェクトの compileSdkVersion
と targetSdkVersion
を 33 以上に更新することです。
実装手順
build.gradle
(Module: app)ファイルを開くandroid
ブロック内の設定を更新
android {
compileSdk 33 // 32から33+に更新
defaultConfig {
targetSdk 33 // こちらも更新
minSdk 21 // 変更不要
// その他の設定...
}
// ...
}
android {
compileSdk = 33 // 32から33+に更新
defaultConfig {
targetSdk = 33 // こちらも更新
minSdk = 21 // 変更不要
// その他の設定...
}
// ...
}
- Sync Project with Gradle Files を実行
- プロジェクトをリビルド
重要ポイント
- minSdkVersion は変更不要です。これにより新しい OS バージョン用の機能を使いつつ、古いデバイスでも動作を維持できます
targetSdkVersion
の更新は新しい OS の挙動変更に対応するためで、アプリのテストが必須です- 各バージョンの役割:
代替方法: ライブラリバージョンのダウングレード(一時的解決)
どうしても compileSdkVersion
を変更できない場合、ライブラリを古いバージョンに戻す方法もありますが、これは一時的な回避策です:
implementation 'androidx.core:core-ktx:1.8.0' // 1.9.0 → 1.8.0
implementation 'androidx.appcompat:appcompat:1.5.0' // 1.6.1 → 1.5.0
警告
ライブラリのダウングレードは推奨されません:
- セキュリティ修正やパフォーマンス改善が適用されない
- 将来のAndroidバージョンで互換性問題が再発する
- Google Playのポリシーで最新SDKの使用が求められる場合がある
Cordovaプロジェクトの場合
Cordovaを使用している場合は config.xml
を編集します:
<!-- 変更前 -->
<preference name="android-targetSdkVersion" value="32" />
<!-- 変更後 -->
<preference name="android-targetSdkVersion" value="33" />
変更後、cordova platform rm android && cordova platform add android
でプラットフォームを再追加します。
トラブルシューティング
解決後もエラーが続く場合
Android Gradleプラグインのバージョン確認:
groovy// プロジェクトレベルの build.gradle dependencies { classpath 'com.android.tools.build:gradle:8.1.0' // 最新版を確認 }
最新のAGPバージョンを確認してください
依存ライブラリの競合解決:
gradle./gradlew app:dependencies
このコマンドで依存関係ツリーを確認し、意図しない古いライブラリが含まれていないかチェック
よくある間違い
compileSdkVersion
を更新しても targetSdkVersion
を更新し忘れると、新しいAPIの動作問題が発生します。必ず両方を更新してください。
ベストプラクティス
定期的なSDK更新:
- Android Studioのアップデートごとに
compileSdkVersion
も更新 - Googleが年次で更新するので、遅くともリリース後6ヶ月以内に対応を
- Android Studioのアップデートごとに
変更テストのポイント:
- 権限関連機能(通知、位置情報など)
- 外部ストレージアクセス
- バックグラウンド処理
- 新しいプライバシー制限
バージョン移行時の公式ガイド参照:
Android開発においてSDKバージョンの適切な管理は、アプリの安定性と将来性を保証します。特にGoogle Playへ公開するアプリは、最新APIレベルへの対応が必須要件となっています。