Android 12 で過去物件をビルドする
いろいろと互換性の問題を調査するためにAndroid 12( targetSdkVersion 31)で色々やらなくてはいけない時期に来た。
いきなり止まるtargetSdkVersion 31でのビルド
過去物件をbuild.gradle(app)内でtargetSdkVersion 31にするといきなりビルドできなくなる。
それがAndroid 12以降ではandroid:exportedをセットしなければならないというエラーで止まるのである。
具体策
具体的な対策はAndroidManifest.xmlの中のapplicationセクションのactivityセクション内に次のような「android:exported=”true”」を追加することである。
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/shr_app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:name="com.google.codelabs.mdc.kotlin.shrine.application.ShrineApplication"
android:theme="@style/Theme.Shrine">
<activity android:name=".MainActivity"
android:exported="true"
tools:ignore="IntentFilterExportedReceiver">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
まとめ
いくつもアップデートされてきたAndroidだが、今回のアップデートはかなり大がかりだと思う。いきなりビルドできないのはちょっと面食らう。処理は簡単だとは言え、具体的にどうすれば良いのかが分からない。
今回載せた対策で本来の互換性調査に入ることができると思う。