「Update Your React Native App to the Latest API Level 33」に対応する
背景
ちょうど、Aqualist のバージョンアップを実施しようと思っていたところ、Google Play Consoleにて、「アプリは Android 13(API レベル 33) 以降を対象とする必要があります。(Update Your React Native App to the Latest API Level 33.)」とのお達しがあった。
初見だったので調べてみると、どうやらAndroidの対象バージョンを上げなければいけないようだ。
結論
/android/build.gradle
のtargetSdkVersion
を 33 にあげるべし。
buildscript {
ext {
buildToolsVersion = "33.0.0"
minSdkVersion = 21
compileSdkVersion = 33
targetSdkVersion = 33
supportLibVersion = "31.0.0"
※ もし、emulatorのsdkのVersionが33に対応してなければ、emulatorの方もAPI version 33に対応しているsdkをダウンロードする必要があります。
余談
そもそも、build.gradle
の中身をあまり知らなかったので、少し調べてみました。
targetSdkVersion
アプリがターゲットとする API レベルを示す整数。設定しない場合、デフォルト値は minSdkVersion に指定された値になります。
この属性により、アプリがターゲット バージョンに対してテストされたこと、アプリのターゲット バージョンとの上位互換性を維持するため、互換性動作を有効にしないことがシステムに伝わります。アプリは、古いバージョン(minSdkVersion 以降)でも引き続き実行できます。
動作時のAPIレベル?
minSdkVersion
アプリを実行するために必要な最小 API レベルを示す整数。Android システムは、システムの API レベルがこの属性で指定された値よりも低い場合、ユーザーがアプリをインストールできないようにします
アプリが対応する、最低APIレベルという事だろう
compileSdkVersion
このプロパティは、NDK ビルドには影響しません。NDK での API の可用性は、代わりに minSdkVersion で管理されます。これは、C++ シンボルが、Java でのように最初に呼び出されたときに遅延的に解決されるのではなく、ライブラリの読み込み時にすぐに解決されるためです。minSdkVersion で使用できないシンボルを使用すると、古い API の OS バージョンでは、API が呼び出されるかどうかにかかわらずライブラリの読み込みが失敗します。
コンパイル時のAPIレベルということかな?
ちょっとtargetSdkVersion
とcompileSdkVersion
の違いがあまりピンときてないですが...
Discussion