Androidでは毎年恒例ですが、2025年8月31日期限の対象APIレベル更新作業(Android15・APIレベル35)の備忘録です。
Flutterで開発した複数のアプリで対応し、いずれも苦労しましたが、概ね対応パターンが整理できたので、来年以降の更新時の参考も兼ねて、内容を共有できればと思います。
自分のアプリの場合には、おおよそ以下のパターンで対応できました。
- 「compileSdkVersion」、「targetSdkVersion」を35に上げる
- 「gradle-wrapper.properties」、「settings.gradle」の設定バージョンを上げる
- 「Android API 35」を完全インストール
- 「Android NDK」のバージョン「26.1.10909125」をインストールして、「app/build.gradle」に設定を追記
- エラーが出るパッケージのアップグレード(Javaのバージョン不整合、またはnamespace未指定への対応) ※ここでFlutter SDKのアップグレードが必要になると厄介
- 「AndroidManifest.xml」にAdMob関連の設定を追記 ※AdMob使用時のみ
以下、自分が対応した過程に沿って、詳細を記載します。
前提とする環境
- PC:MacBook Pro(Intel Core i5)
- OS:macOS Sonoma 14.5
- Flutter:3.19.6 ※更新が必要になったケースあり(後述)
- Android Studio:Koala 2024.1.1 Patch 1
- Gradle関連の記述変更は対応済(下記公式ページの対応)
対応①:compileSdkVersion、targetSdkVersionを35にする
「app/build.gradle」の「compileSdkVersion」、「targetSdkVersion」をいずれも35に修正しました。
すると、「targetSdkVersion 35」に赤波下線が出て、以下の警告文が表示されます。
It looks like you just edited the targetSdkVersion from 34 to 35 in the editor. Be sure to consult the documentation on the behaviors that change as result of this. The Android SDK Upgrade Assistant can help with safely migrating.
しかし、これ自体は予防的なメッセージらしく、気にしなくて良いようです。
対応②:gradle-wrapper.properties、settings.gradleの設定バージョンを上げる
対応①の状態で、Androidでビルドすると、自分の場合は以下のエラーが出ました。
Execution failed for task ':app:processDebugResources'.
A failure occurred while executing com.android.build.gradle.internal.res.LinkApplicationAndroidResourcesTask$TaskAction
Android resource linking failed
aapt2 E 07-07 ##:07:16 ##### 359821 LoadedArsc.cpp:94] RES_TABLE_TYPE_TYPE entry offsets overlap actual entry data.
aapt2 E 07-07 ##:07:16 ##### 359821 ApkAssets.cpp:149] Failed to load resources table in APK '/Users/####/Library/Android/sdk/platforms/android-35/android.jar'.
error: failed to load include path /Users/####/Library/Android/sdk/platforms/android-35/android.jar.
調査すると、下記情報が見つかりました。
Chat-GPTに尋ねても、類似の見解だったので、これらの情報に従って、
「android/gradle/wrapper/gradle-wrapper.properties」のバージョンを「8.9」に更新し、
distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists # 元々の記述 # distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip # ↓こちらに更新 (「〜all.zip」でも良いが、「〜bin.zip」の方が、必要最小限で容量が少ない模様) distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
「android/settings.gradle」の「plugins」ブロックの「com.android.application」のバージョンを「8.5.0」に更新しました。
plugins { id "dev.flutter.flutter-plugin-loader" version "1.0.0" // apply true // 元々の記述 // id "com.android.application" version "7.3.0" apply false // ↓こちらに更新 id "com.android.application" version "8.5.0" apply false id "org.jetbrains.kotlin.android" version "1.8.22" apply false id "com.google.gms.google-services" version "4.3.14" apply false id "com.google.firebase.crashlytics" version "2.8.1" apply false }
対応③:「Android API 35」を完全インストール
Chat-GPTに尋ねると、Android Studio上で、「Android SDK」の「API 35」を完全インストールしておく必要がある、との指摘がありました。
確かに、「Android SDK」を確認すると、「Android API 35」が「Partially installed」になっており、完全インストールされていなかったので、下図のとおり、「Android API 35」にチェック→「Apply」→「OK」をして、インストールしました。

※これは一度実行すれば良いので、他のアプリで対応する際は不要になります。
※「APIレベル」が「35-ext14」、「35-ext15」というのもありますが、これらは、拡張機能が含まれる開発者プレビュー用らしいので、インストール不要でした。
対応④:「Android NDK」の該当バージョンをインストール
対応②・③を実施した上でビルドすると、今度は以下のエラーが出ました。
One or more plugins require a higher Android NDK version.
Fix this issue by adding the following to /Users/####/android/app/build.gradle:
android {
ndkVersion "26.1.10909125"
…
}
どうやら、バージョン「26.1.10909125」以上の「Android NDK」が必要なようです。
(参考:NDKとは)
Android NDKはAndroidアプリケーションのネイティブコードをC/C++で開発するためのツールキットです。AndroidプラットフォームのネイティブAPIにアクセスできるため、パフォーマンスが重要な部分をネイティブコードで実装することが可能になります。
出典:https://xexeq.jp/blogs/media/it-glossary929
調査すると、下記情報が見つかりました。
Chat-GPTにも尋ねたところ、上記記事の対応内容とほぼ同じだったので、これらに基づいて、以降の通り対応しました。
まずは、「Settings」の状況を確認すると、確かにバージョン「26.1.10909125」以上のNDKは、インストールされていませんでした。
そこで、下図の通り、バージョン「26.1.10909125」を選択して、インストールしました。

※当初、NDKのバージョン毎の表示が見当たらず、戸惑いましたが、「Settings」ダイアログ右下の「Show Package Details」にチェックを入れると、表示されました。
次に、「android/app/build.gradle」 の android ブロック内にて、バージョンを明記する形に修正しました。
android { compileSdkVersion 35 namespace 'com.####.####' // ndkVersion flutter.ndkVersion // ↓バージョンを明記 ndkVersion "26.1.10909125" compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = '1.8' } sourceSets { main.java.srcDirs += 'src/main/kotlin' } … (以下略)
対応⑤:エラーが出るパッケージのアップグレード
対応④を実施した上でビルドすると、今度は以下のエラーが出ました。
Execution failed for task ':flutter_archive:compileDebugKotlin'.
'compileDebugJavaWithJavac' task (current target is 1.8) and 'compileDebugKotlin' task (current target is 17) jvm target compatibility should be set to the same Java version.
Consider using JVM toolchain: https://kotl.in/gradle/jvm/toolchain
使っていた「flutter_archive」パッケージにおいて、Javaのバージョン不整合が生じているようです。
パッケージのアップグレードで対応できれば楽
Webの情報やChat-GPTを活用して、試行錯誤しましたが、結局のところ、
パッケージのバージョンを、できる限り最新版にアップグレードする(使っているFlutter SDKのバージョン内でエラーにならない範囲で)
ことで解消できました。
その後も、ビルドする度に、他のパッケージで同様のエラーが出ましたが、アップグレードして解消する、という対応を繰り返しました。
アップグレードできない場合
エラーが出たパッケージについて、
- 現状のFlutter SDKのバージョンでは、それ以上のアップグレードができない
- そもそも現状以上のバージョンがリリースされていない(パッケージの更新停止など)
といったケースもありました。
その場合は、Flutter SDKのアップグレードや、他の類似パッケージへの変更が必要になり、長い旅になります。。
自分もこのパターンに陥ったアプリがあり、大変苦労しました。。
やむなくFlutter SDKをアップグレードしたケースについては、下記記事に続きを記載したので、よろしければご参照ください(Chat-GPTに聞いても解決できず、苦労しました。。)
対応⑥:「AndroidManifest.xml」にAdMob関連の設定を追記
AdMob広告(「google_mobile_ads」パッケージ)を導入している場合の話になります。
対応⑤を実施した上でビルドすると、今度は以下のエラーが出ました(なかなか終わりません…)。
/Users/XXXX/XXXX/android/app/src/debug/AndroidManifest.xml:32:13-58 Error:
Attribute property#android.adservices.AD_SERVICES_CONFIG@resource value=(@xml/ga_ad_services_config) from [com.google.android.gms:play-services-measurement-api:22.0.1] AndroidManifest.xml:32:13-58
is also present at [com.google.android.gms:play-services-ads-lite:23.4.0] AndroidManifest.xml:109:13-59 value=(@xml/gma_ad_services_config).
Suggestion: add 'tools:replace="android:resource"' to element at AndroidManifest.xml to override.
調査すると、下記情報が見つかりました(Chat-GPTに尋ねても類似の見解でした)。
AdMobとGoogle Play Services関連のライブラリ間で、「AndroidManifest.xml」の要素に競合(同じ<property> 要素である「AD_SERVICES_CONFIG」を定義している)が発生しているようです。
これらの情報に基づいて、「AndroidManifest.xml」の冒頭「<manifest・・」タグ内に、下記の通り、「xmlns:tools="http://schemas.android.com/tools"
」を追記しました。
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.XXXX.XXXX">
さらに、同じく「AndroidManifest.xml」の「<application・・」タグ内に、下記内容を追記しました。
<application … <property android:name="android.adservices.AD_SERVICES_CONFIG" android:resource="@xml/gma_ad_services_config" tools:replace="android:resource" /> </application>
以上で、ようやくビルドが成功し、アプリを起動できました(長かったです...)。
最後に
APIレベルを上げる対応では、毎年苦労します。。
Kotlinの更新、Android Gradle プラグインの更新、Javaの更新、各種パッケージのアップグレード、Flutter SDKのアップグレード・・・など影響範囲が多岐に渡るので、恥ずかしながら、何度やっても慣れないです。
対応⑤では、パッケージのアップグレードだけで対応できると良いですが、ダメな場合は、更に対応が続くことになります。。
※よろしければ、こちらもご参照下さい。
本記事が、どなたかのお役に立てば幸いです。
リリースしたアプリ(全てFlutterで開発)
個人アプリ開発で役立ったもの
おすすめの学習教材
\超初心者向けでオススメな元Udemyの講座/
\キャンペーン時を狙えば安価で網羅的な内容が学べる(日本語訳あり)/
\Gitの基礎について無料で学べる/
おすすめの学習書籍
\実用的。image_pickerに関してかなり助けられた/
\Dartの基礎文法を素早くインプットできる/
コメント