過去のプロジェクトをAndroid 12(targetSdkVersion 31)でビルドする方法

投稿者: | 2021年7月26日

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だが、今回のアップデートはかなり大がかりだと思う。いきなりビルドできないのはちょっと面食らう。処理は簡単だとは言え、具体的にどうすれば良いのかが分からない。

今回載せた対策で本来の互換性調査に入ることができると思う。

コメントを残す