【苦労話】React Nativeの古いバージョンでAndroid APIレベル35以降へのアップデートとストア公開に挑む|その他Tipsも有

技術ノート・TIPS

こんにちは。よしハムコロリと申します。記事を開いていただきありがとうございます。今回は、2025年12月頃に私が経験した、AndroidアプリのtargetSdkVersionを34から35に上げたときの苦労話をしようと思います。もしかしたら私だけかもしれませんが、もしも同じ悩みを持つ方がいらっしゃったら参考にしていただけたら幸いです。
※本記事にはアフィリエイト広告を掲載しております。

スポンサーリンク

環境情報

そもそも、プラットフォームが古くなければ、苦労はしないのかもしれません。以下に環境情報を記載します。2025年12月頃時点の情報です。

  • React Native 0.60.6
  • node.js 10.17.0
  • JDK 13.0.1
  • kotlin 1.7.10
  • Android Gradle Plugin(AGP) 7.2.2
  • Gradle 7.4.2

Android APIレベル35を達成する為の2大巨頭

Android APIレベル35以降では、ものすごく大きな改変が行われています。詳細は割愛いたしますが、以下の2つです。

Edge-to-Edge(エッジツーエッジ)対応

従来はAndroid OS側でステータスバーやナビゲーションバーの管理をやってきましたが、今後はアプリ側でしなければならないというものです。対応必須ではありませんが、対応しないとアプリの画面上部や下部がステータスバーやナビゲーションバーに隠れてしまってボタンが押せなくなるなどの問題が発生します。

16KBページサイズ対応

より高速な処理に対応した機種向けの対応です。こちらは対応しなければ、Google Playへのアプリ登録・更新が許可されませんので、対応必須です。

Android APIレベル35を達成する為に行った事・諦めた事

compileSdkVersionとbuildToolsVersionを34で止め、35に上げるのを諦めた

React Nativeのバージョンといい、AGPのバージョンといい、古すぎて、様々なバージョンを上げようとすると、ライブラリの依存関係がおかしくなり、様々なエラーが発生して、収拾がつかなくなります。
アプリの保守の上では、このあたりのバージョンアップも定期的に実施していく必要があると思います(なかなか工数が認められないのがつらい…)。

compileSdkVersionとbuildToolsVersionを上げると、一気にこの波が押し寄せてくる為、ビルドが全く通らなくなります。今後大規模なリプレイスも検討中ということで、今回は、targetSdkVersionのみ35に上げるのみとしました。

16KBページサイズ対応を行った

もはや、React NativeやAGPのバージョンアップができない為、16KBページサイズ対応についても苦肉の策を採用しています。以下に公式情報へのリンクを掲載します。
16KBのページサイズをサポートする

16KBページサイズに対応していないモジュール(*.apkなど)をストアにアップロードすると、アップロード後の次の画面でエラーとなり審査に提出することができません。

Edge-to-Edge対応を行った

もはや、react-native自体のバージョンが古い為、react-native-safe-area-viewなどの一般的なライブラリを適用することも叶いませんでした。ライブラリをインストールしようとすると依存関係のエラーやnodeのバージョン上げろなどと収拾がつかなくなりました。

やれることは1つ。自分でステータスバーとナビゲーションバーの高さを取得して、アプリの画面の表示位置を調整することです。アプリコンテンツの表示領域の上下にステータスバーの高さ分のpaddingTop、ナビゲーションバーの高さ分のpaddingBottomを設けます。

ステータスバーについては、react-native(JavaScript)側の処理でステータスバー高さを取得できたのですが、ナビゲーションバーについてはreact-native側では取得できなかったので、ネイティブ(Java)側でナビゲーションバー高さを取得して、react-native側へのpropsとして渡すようにしました。もう大変!

新LP

その他Tips

本記事の範囲を超えますが、はまりやすいと思われる落とし穴についてお伝えしようと思います。

Google Playストアにアップロードして実行モジュールにエラーが発生していないことを早めに確認すること!

実装して、軽く動作確認して動きに問題がなさそうであれば、早めにリリースビルドを行って、Google Playストアに実行モジュールをアップロードして次の画面に進み、モジュールのエラーや警告内容を確認しましょう。
デバッグビルドで進めていて、いざ審査に出そうとしたら、実行モジュールのエラーで審査に出せなくなるとスケジュール的にもかなり大変になると思います。実際に私が経験した話ですが、お気を付けください。
昔は「iOSの審査は厳しくて、Androidの審査はザル」というイメージでしたが、今はAndroidの審査の方が厳しく感じることがあります。

Androidのナビゲーションバーには2つのモードがある!

私は古いAndroidバージョンでは、「△○□」のボタンが表示されるナビゲーションバーで、新しいものは「―」のボタンが表示されるものと思っていましたが、これらは切り替え可能でした…。
「△○□」のボタンが表示されるモードを「3ボタンナビゲーション」と言い、「―」のボタンが表示されるモードを「ジェスチャーナビゲーション」と言います。

先述のEdge-to-Edge対応において、ナビゲーションバー向けの対応が必要ですが、3ボタンナビゲーションとジェスチャーナビゲーションとではバーの高さも変わりますので、それぞれで確認が必要です。ちなみに「設定」→「システム」→「ナビゲーションモード」で変更できます。

さいごに

最後までお読みいただきありがとうございました。しなくて良かった苦労かもしれませんが、私がアプリ公開に辿り着くまでにものすごい時間を要しましたので、同じ苦労をする人の助けになればいいなと思います。ご質問やコメントをお待ちしております。もし役に立ったよ~という方がいらっしゃったら下の寄付ボタンもご検討いただけたら嬉しいです。

コメント

タイトルとURLをコピーしました