top of page

Android API35対応

  • 執筆者の写真: ye
    ye
  • 7月26日
  • 読了時間: 2分

先日、Play Consoleこんなメッセージが届きました。


調べたところ、これは「ターゲットSDKが古いので更新しなさい」、というメッセージのようですね。


PlayConsoleのメッセージ画面
PlayConsoleのメッセージ画面

確かに2年以上前に開発したアプリなので、その間AndroidOSも更新されていたりするので、対応しないといけません。しかも二ヶ月後くらいには「措置」が発動するようで戦々恐々です。具体的にどんなことが起きるのか明記されていないのがさらに怖い。。。


下記に具体的にどんな対応をしたのか記載します。





SDKバージョンを35にする

下記赤枠の34を35に変更します。

ree






対応するプラグインのバージョンを更新する

gradle(プロジェクト)で、この2つのプラグインを最新バージョンに更新


plugins {    
id 'com.android.application' version '8.5.0' apply false    
id 'com.android.library' version '8.5.0' apply false    
id 'org.jetbrains.kotlin.android' version '2.1.0' apply false    
id("com.google.gms.google-services") version '4.4.3' apply false}




対応するdependenciesのバージョンを更新する

gradle(App)でplay-services-adsを最新バージョンに更新


dependencies {    
implementation 'androidx.core:core-ktx:1.9.0'    
implementation 'androidx.appcompat:appcompat:1.6.1'    
implementation 'com.google.android.material:material:1.4.0'    
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'    
implementation 'androidx.legacy:legacy-support-v4:1.0.0'    
implementation 'com.github.PhilJay:MpAndroidChart:v3.0.2'    
implementation 'com.google.android.gms:play-services-ads:24.5.0'    
testImplementation 'junit:junit:4.13.2'    
androidTestImplementation 'androidx.test.ext:junit:1.1.3'    
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'    
implementation "com.airbnb.android:lottie:3.4.0"    
implementation(platform("com.google.firebase:firebase-bom:33.1.1"))    
implementation("com.google.firebase:firebase-analytics")
}






これでビルドが通るはずです。


ちなみにSDK35はEdge-To-Edgeという思想のもと開発されたようで、

AppbarやToolbarなどちょっと前の(?)Androidアプリにあったような画面上のバーが使えなくなっています。


要は画面全体にアプリの画面を表示して視認性を高めたり、画面サイズを最大限活かすような作りになったという感じです。





APIバージョンごとに画面構成を調整(Edge-To-Edge対応)

私のアプリではToolbarを使用して戻るボタンなどを実装していたのでかなり影響を受けました。API30で作成したアプリをAPI36で起動したところ、上のツールバーの部分が消えていて、アプリアイコンと画面内容が被ってしまい、これではリリースできないということでコードも追加しました。


  • if (Build.VERSION.SDK_INT > Build.VERSION_CODES.UPSIDE_DOWN_CAKE)

ここでAPI34より大きいAPIバージョンかどうかの条件式となります。

API35以上と34以下で画面レイアウトを調整しています。



if (Build.VERSION.SDK_INT > Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {    
	val marginToAdd = dpToPx(30, this)    
	val layoutParams = topLiner.layoutParams as 	ViewGroup.MarginLayoutParams    
	layoutParams.topMargin += marginToAdd    
	topLiner.layoutParams = layoutParams    
	weatherBackground.viewTreeObserver.addOnGlobalLayoutListener(object : ViewTreeObserver.OnGlobalLayoutListener {

     override fun onGlobalLayout() {            
	weatherBackground.viewTreeObserver.removeOnGlobalLayoutListener(this)            
	val bgParams = weatherBackground.layoutParams            
	bgParams.height = weatherBackground.height + marginToAdd            
	weatherBackground.layoutParams = bgParams        
	}    
})
}



bottom of page