Android12(API level31)対応のやり方

10月に出たAndroid12(API level31)の対応をしました
そのやり方


・マイグレーションドキュメント
https://developer.android.com/about/versions/12/behavior-changes-12

 

・exportedの修正
Manifest merger failed : android:exported needs to be explicitly specified for . Apps targeting Android 12 and higher are required to specify an explicit value for android:exported when the corresponding component has an intent filter defined. See https://developer.android.com/guide/topics/manifest/activity-element#exported for details.

起動時のActivityにだけtrueを付けた
https://zenn.dev/yass97/articles/26e3f92a0d7d0d
インテント フィルタを使用している場合は、この要素を “false” に設定しないでください。

 

・FLAG_MUTABLE
Fatal Exception: java.lang.IllegalArgumentException
jp.gag.shot.one: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent. Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable, e.g. if it needs to be used with inline replies or bubbles.

以下のパッケージが使ってる模様
com.google.firebase:firebase-ads
バージョン20.5.0にあげれば解消する

 

・スプラッシュ
values-v31/style.xmlを作って色を設定できる
今回は背景を白にした
https://developer.android.com/about/versions/12/features/splash-screen?hl=ja

<item name="android:windowSplashScreenBackground">@color/white</item>
<item name="android:windowSplashScreenIconBackgroundColor">@color/white</item>

 

こうしてAndroid12対応しましたとさ
後は問題なければリリースするだけ

関連記事:

Pocket