Skip to content

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の更新

最適で推奨される解決方法は、プロジェクトの compileSdkVersiontargetSdkVersion を 33 以上に更新することです。

実装手順

  1. build.gradle(Module: app)ファイルを開く
  2. android ブロック内の設定を更新
groovy
android {
    compileSdk 33 // 32から33+に更新

    defaultConfig {
        targetSdk 33 // こちらも更新
        minSdk 21 // 変更不要
        // その他の設定...
    }
    // ...
}
kotlin
android {
    compileSdk = 33 // 32から33+に更新

    defaultConfig {
        targetSdk = 33 // こちらも更新
        minSdk = 21 // 変更不要
        // その他の設定...
    }
    // ...
}
  1. Sync Project with Gradle Files を実行
  2. プロジェクトをリビルド

重要ポイント

  • minSdkVersion は変更不要です。これにより新しい OS バージョン用の機能を使いつつ、古いデバイスでも動作を維持できます
  • targetSdkVersion の更新は新しい OS の挙動変更に対応するためで、アプリのテストが必須です
  • 各バージョンの役割:

代替方法: ライブラリバージョンのダウングレード(一時的解決)

どうしても compileSdkVersion を変更できない場合、ライブラリを古いバージョンに戻す方法もありますが、これは一時的な回避策です:

groovy
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 を編集します:

xml
<!-- 変更前 -->
<preference name="android-targetSdkVersion" value="32" />

<!-- 変更後 -->
<preference name="android-targetSdkVersion" value="33" />

変更後、cordova platform rm android && cordova platform add android でプラットフォームを再追加します。

トラブルシューティング

解決後もエラーが続く場合

  1. Android Gradleプラグインのバージョン確認:

    groovy
    // プロジェクトレベルの build.gradle
    dependencies {
        classpath 'com.android.tools.build:gradle:8.1.0' // 最新版を確認
    }

    最新のAGPバージョンを確認してください

  2. 依存ライブラリの競合解決:

    gradle
    ./gradlew app:dependencies

    このコマンドで依存関係ツリーを確認し、意図しない古いライブラリが含まれていないかチェック

よくある間違い

compileSdkVersion を更新しても targetSdkVersion を更新し忘れると、新しいAPIの動作問題が発生します。必ず両方を更新してください。

ベストプラクティス

  1. 定期的なSDK更新:

    • Android Studioのアップデートごとに compileSdkVersion も更新
    • Googleが年次で更新するので、遅くともリリース後6ヶ月以内に対応を
  2. 変更テストのポイント:

    • 権限関連機能(通知、位置情報など)
    • 外部ストレージアクセス
    • バックグラウンド処理
    • 新しいプライバシー制限
  3. バージョン移行時の公式ガイド参照:

Android開発においてSDKバージョンの適切な管理は、アプリの安定性と将来性を保証します。特にGoogle Playへ公開するアプリは、最新APIレベルへの対応が必須要件となっています。