Skip to content

RES_TABLE_TYPE_TYPEエラーの解決(compileSdk 35)

問題の説明

AndroidプロジェクトをcompileSdkVersion 35に更新した際、ビルド時に次のエラーが発生する現象があります:

none
ERROR:: AAPT: aapt2.exe E ... LoadedArsc.cpp:96] RES_TABLE_TYPE_TYPE entry offsets overlap actual entry data.
aapt2.exe E ... ApkAssets.cpp:149] Failed to load resources table in APK '...\android-35\android.jar'.
error: failed to load include path ...\android-35\android.jar.

このエラーは主に以下の特徴があります:

  • Android 35(Android 15)のSDKを使用する場合に発生
  • リソーステーブルの読み込み中にオフセット情報が競合
  • android.jarの読み込みに失敗しビルド中断

注意

エラーメッセージに含まれるファイルパス ...\android-35\android.jar は、Android SDKのバージョン35に対応するプラットフォームファイルを示しています

原因

この問題は Android Gradle Plugin(AGP)のバージョンGradle自体のバージョン がcompileSdk 35と互換性がない場合に発生します。Google公式のIssue Trackerで報告されているように、特定のAGPバージョンがAndroid 35のリソースフォーマットを適切に処理できないことが原因です。

https://issuetracker.google.com/issues/342522139

解決方法

compileSdkVersion 35を使用するには、以下のバージョンの組み合わせが有効です:

1. AGPのバージョン更新

プロジェクトの build.gradle ファイルでAndroid Gradle Pluginを更新:

groovy
// ルートレベルの build.gradle
dependencies {
    classpath 'com.android.tools.build:gradle:8.4.2' // 8.4.2 以上
}

2. Gradle Wrapperの更新

gradle-wrapper.properties ファイルでGradleのバージョンを更新:

properties
# gradle/wrapper/gradle-wrapper.properties
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

3. 更新後のプロジェクト構成

更新後、以下の組み合わせになっていることを確認:

コンポーネント必要バージョン
Android Gradle Plugin8.4.2+
Gradle8.6+(Wrapper経由)
compileSdkVersion35

更新手順のポイント

  1. Android Studioで File > Project Structure...
  2. Project タブでGradleバージョンを8.6に設定
  3. Modules > app でAGPバージョンを8.4.2以上に設定

バージョンの互換性について

正しいバージョンの組み合わせが守られていない場合、類似のエラーが再発する可能性があります。公式のバージョン互換性表を定期的に確認してください:

https://developer.android.com/build/releases/gradle-plugin#compatibility

重要な注意点

  • Android 35対応にはAGP 8.3.0以上の必須
  • Gradle 8.6を使用する場合、Java 17+ が必要
  • 依存ライブラリがAndroid 35サポート状況を確認

代替対応方法

プロジェクトの事情で即時アップデートが困難な場合、暫定的にcompileSdkVersionを34に戻すことも可能です:

groovy
// app/build.gradle
android {
    compileSdk 34 // 34にダウングレード
    
    defaultConfig {
        ...
        targetSdk 34
    }
}

ただしこれは一時的な回避策であり、Android 15の新機能を活用するには最終的にcompileSdk 35への移行が必要です。

今後のアップデート対応

Androidエコシステムは更新が早いため、定期的に以下を確認しましょう:

  1. Android Developers Blog
  2. AGP Release Notes
  3. Issue Tracker

これらの情報源を確認することで、新たなバージョンリリース時の互換性問題を事前に回避できます。