📌

「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の対象バージョンを上げなければいけないようだ。
https://support.google.com/googleplay/android-developer/answer/11926878?hl=ja

結論

/android/build.gradletargetSdkVersion33 にあげるべし。

/android/build.gradle
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レベルということかな?

ちょっとtargetSdkVersioncompileSdkVersionの違いがあまりピンときてないですが...

参考

GitHubで編集を提案

Discussion