はじめに
こんにちは。アプリ開発支援部の佐藤です。
この記事は、AndroidアプリのtargetSdkVersionを34から35に更新した際の対応記録です。
SDK更新の際に行った対応や直面した問題の解決策などをまとめています。
これからSDK 35への対応を始める方や、既に作業中で問題に直面しているAndroidエンジニアの方にとって、本記事が参考になれば幸いです。
※この記事は「エムティーアイ Blog Summer 2025」の8/26 分の記事です。
対応したことの全体像
targetSdkVersionを35に更新する際には、それに合わせて主要なライブラリやツールも互換性のあるバージョンにアップデートする必要があります。今回のSDK更新で対応した内容をまとめると、以下のようになります。
| 更新前 | 更新後 | |
|---|---|---|
| SDK | 34 | 35 |
| Gradle | 7.2 | 8.9 |
| Android Gradle Plugin(AGP) | 7.1.3 | 8.7.2 |
| Kotlin Gradle Plugin(KGP) | 1.8.0 | 2.1.10 |
| Compose Compiler | - | 2.1.10 |
| Java | 1.8 | 17 |
| MockK | 1.10.0 | 1.14.5 |
Gradle・AGPバージョンの更新
まずはGradleとAGPを7.xから8.xに更新しました。この対応には、Android StudioのAGP Upgrade Assistantの使用をおすすめします。自動でコードの追加や修正、バージョン更新を行ってくれるため、手動で対応するよりも効率的です。
KGP・Compose Compilerバージョンの更新
GradleとAGPの更新に伴い、KGPも更新しました。Android StudioやKMPバージョンとの依存関係にも注意して、各種ツールを更新してください。
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:2.1.10"
Kotlin 2.0.0以降は、Compose Compiler Gradle プラグインを使用することで、Compose Compilerのバージョンを明示的に指定することなく、設定と構成を簡単に行うことができます。
このプラグインを構成する場合、build.gradle.ktsファイルの最上位レベルにcomposeCompilerブロックを追加します。
composeCompiler {
reportsDestination = layout.buildDirectory.dir("compose_compiler")
stabilityConfigurationFile = rootProject.layout.projectDirectory.file("stability_config.conf")
}
Javaバージョンの更新
AGP 8.xに更新してビルドした際に、JDKバージョンに起因するエラーが発生しました。
compileOptionsやkotlinOptionsで設定しているJDKを17に更新することで解決しました。
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
kotlinOptions {
jvmTarget = '17'
}
CI/CDなどを記述しているYAMLファイルにJavaの設定をしている場合は、そちらのバージョンも合わせて更新が必要か確認しましょう。
予期せぬエラーと解決策
ユニットテストを実行した際に、以下のエラーが発生しました。
Cannot invoke "kotlin.coroutines.CoroutineContext.fold(Object, kotlin.jvm.functions.Function2)" because "$this$hasCopyableElements" is null java.lang.NullPointerException: Cannot invoke "kotlin.coroutines.CoroutineContext.fold(Object, kotlin.jvm.functions.Function2)" because "$this$hasCopyableElements" is null~
このエラーはKotlin専用のモックライブラリである「MockK」ライブラリのバージョン更新を行うことで解決しました。エラーの明確な原因は不明ですが、Copilotの回答によれば、MockK内部で使用されているkotlinx.coroutinesやCoroutineContextの処理が改善された可能性が考えられます。
その他対応したこと
ここからは、ビルド環境の更新以外で対応が必要だった点を紹介します。
Gradle 8.xからはVersion Catalogがデフォルトで有効になったため、
settings.gradle内に記述していたenableFeaturePreview("VERSION_CATALOGS")を削除しました。AndroidManifest(main)ファイルからpackage属性を削除
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="example"> ← 削除
- app/build.gradleにnamespaceを設定
android {
namespace = "com.example.app"
}
まとめ
SDKバージョンアップ作業は、単にtargetSdkVersionの数値を変更するだけでなく、ビルド環境全体の見直しが必要であることを改めて実感しました。特に、Gradle、AGP、KGP、Javaのバージョンなどを最新に保つことや、互換性を確認していくことが重要だと思いました。
また、今回はビルドエラーや実行時エラーに一つずつ向き合いましたが、Android StudioのAGP Upgrade AssistantやCopilotを積極的に活用することで、作業を効率化できることも分かりました。
本記事が皆さんのSDKバージョンアップ作業の一助となれば幸いです。