Google Play Consoleから、
「Google Playの16KBページ サイズ要件の影響を受けるアプリがあります」
という通知が来て、2025年10月末までに対応が必要だったので、四苦八苦しながら対応を終えました。
Androidでリリース済のアプリ(Flutterで開発)が複数あり、様々なパターンを経験したので、他の情報では見られなかった内容も含め、簡単に備忘録を共有したいと思います。
※「こうしたらできた」的な内容ですので、深い技術的な理解はできていないです。。
※16KBページサイズ自体の詳細説明は、省略しています。
自分の経験に基づくと、大まかな対応方法は、以下の通りでした。
- 事前チェック
- 対処法
- 動作チェック
前提とする環境
- PC:MacBook Pro(Intel Core i5)
- OS:macOS Sonoma 14.5
- Flutter:3.27.1、3.19.6(複数アプリで2種類のバージョンを使用)
- Android Studio:Koala 2024.1.1 Patch 1
- APIレベル35には対応済
対応しないとどうなるのか?
通知によると、
「2025年11月1日より、16 KBメモリのページサイズをサポートしていないアプリのアップデートについてはリリースできなくなります。」
との事なので、未対応だからといって、ストアから削除される訳ではなく、期日を過ぎても16KB対応したファイルをアップロードすれば、更新リリースはできるようです(ただ、、心配な方は、できるだけ期日前に対応した方が良いとは思います)。
主に参照した情報
- 公式サイト
- サイバーエージェント(CA. flutter)
こちらのYouTubeでも解説されており、大変参考になりましたm(_ _)m。
- Chat-GPTへの相談
今回もフル活用しました。。
事前チェック(16KB非対応の状況確認)
16KB非対応の状況を確認する方法は、いくつかありますが、試行錯誤の結果、自分は下記方法で確認しました。
※公式サイトでは、Android Studioの「APK Analyzer」を使う方法が紹介されていますが、こちらの解説によると、結果が正確ではないとの事だったので、使いませんでした。
(1)Google Play Consoleで確認
Google Play Consoleの左メニュー「テストとリリース」→「製品版」→「リリースタブ」→「リリースを管理」→「新しいApp Bundle」に、現在リリース中のファイル情報が掲載されているので、右側の矢印「→」を押し、一番下の「メモリのページサイズ」を確認します。

ここで「16 KB 非対応」となっていれば、要対応を意味します。
「詳細を表示」し、単に「アプリは16 KBに対応していません」とだけ書かれていれば、後述するパッケージの更新は恐らく不要です。
一方、「16KBに対応していないライブラリ」の欄があり、「〜.so」(ネイティブ共有ライブラリ)の表記があると、パッケージ更新が必要になると思われます。
公式サイトでは、次項(2)のチェックコードの方法が紹介されていますが、Google Play Console上でも、このように親切に表示してくれているので、少なくとも自分の場合は、この(1)の確認だけでも十分でした。
(2)チェックコードで確認
公式サイトでは、こちらの方法が紹介されています。
まず、プロジェクトのルートフォルダで、
flutter build apk --release
を実行してapkファイルを作成します(自分はFVMを導入しているので、頭に「fvm」をつけています)。
次に、公式サイトで紹介されているこちらのページにあるチェックコードをコピーし、テキストエディタ等に貼り付けて、「check_elf_alignment.sh」というファイル名で、ローカル(PC内)に保存します。
保存したフォルダ内で、下記コマンドにて、
./check_elf_alignment.sh /Users/#####/build/app/outputs/flutter-apk/app-release.apk
チェックコードを実行します(#####はプロジェクトフォルダのパスの略記)。
表示された結果の中で、「arm64-v8a」もしくは「x86_64」の記載がある行に「UNALIGNED」の表示があれば、要対応を意味しています。
逆にこれらの行が全て「ALIGNED」であれば対応不要となります。
※対応が必要なのは、64-bitについてなので、「armeabi-v7a」や「x86」の記載がある行の「UNALIGNED」は、無視して良いようです。
例えば、自分の場合は、
/var/folders/_g/・・略・・/lib/x86_64/libimage_processing_util_jni.so: \e[31mUNALIGNED\e[0m (2**12)
という行があったので、「libimage_processing_util_jni.so」のライブラリが、要修正(16KB非対応)だと分かりました(具体的に問題のあるパッケージの特定方法は後述)。
※(1)Google Play Consoleで調べた「16KBに対応していないライブラリ」の表示と一致していました。
対処法(16KB非対応の解消方法)
以下、要対応と判定された場合に、必須と考えられる対応順に記載します。
①Android SDK Build-Tools 35.0.0をインストール(入っていない場合)
最も重要な点として、そもそも「35.0.0」以降のBuild-Toolを使わないと、16KB対応のapkを作成できないようです。
確認すると、自分の場合は、「34.0.0」を使っていたので、この時点で、リリース済の全アプリが要対応になってしまっていました。。
そこでまずは、Android Studioにて、下図の通り「35.0.0」をインストールしました(この対応は、1度やればOKです)。

②AGP(Android Gradle プラグイン)を8.5.1以上にする
「settings.gradle」のplugins { } ブロックに書かれているAGPのバージョンを、下記の通り、「8.5.1」以上に指定します。
id "com.android.application" version "8.5.1" apply false
「8.6.0」が必須と書かれている情報もありますが、自分は、Android Studioのバージョンが低いこともあり、「8.5.1」でないと、リリースビルドを作成できませんでした(公式サイトを見ても、「8.5.1」以上あれば問題ないようです)。
なお、使っているパッケージ類が、既に16KBに対応済の場合は、前記①の対応だけで、チェックコードの結果がOK(「arm64-v8a」、「x86_64」について全て「ALIGNED」)に変わりました。
しかし、①の対応のみで、リリースビルド(aabファイル)を作成し、Google Play Consoleにアップロードしても、依然として「アプリは16KBに対応していません」の表記のままだったので、結局、この②(AGP更新)と、次の③(NDK更新)の対応が必要でした。
③NDKを28.1以上にする
自分の場合は、「26.1.10909125」を使っていたので、下図のとおり、Android Studioにて、NDKの「28.1.13356709」をインストールした上で、

「app/build.gradle」のandroid { } ブロックにて、
ndkVersion "28.1.13356709"
の記述に修正しました。
※公式サイトにも説明がある通り、NDKのバージョンは28.1より低くても良いようですが、追加設定が必要なので、28.1を使用した方が楽だと思います。
前述「(1)Google Play Consoleで確認」で、特段、非対応ライブラリの表記がない場合は、恐らくここまでやった状態で、リリースビルドを作成すれば、16KB対応は完了できるかと思われます(少なくとも自分の場合はそうでした)。
④パッケージを16KB対応版に更新
以降は、前述(1)(2)のチェックで、16KB非対応のライブラリがあった場合になります。
"〜.so"だけだと、具体的にどのパッケージに問題があるか分からないので、プロジェクトフォルダ内を検索して調べます(名称によっては、"libsqlite3.so"のように、見て直ぐ分かるケースもあるので、その場合は検索不要です)。
例えば、自分の場合、「libimage_processing_util_jni.so」というライブラリ(ネイティブ共有ライブラリ)が、16KB非対応と言われたので、これがどのパッケージで使われているのか調べるために、プロジェクトフォルダで下記検索コードを実行しました。
grep -R "libimage_processing_util_jni.so" \
~/.gradle/caches/modules-2 \
~/.gradle/caches/transforms-* \
2>/dev/null | head -n 50
この調べ方は、Chat-GPTに教えてもらいました。
- 「~/.gradle/caches/modules-2」→ Gradle の依存キャッシュの保存場所
- 「~/.gradle/caches/transforms-*」 → Gradle が依存ファイルを「変換」した後のキャッシュ
を表しており、これらの中をライブラリ名で文字検索すると、パッケージ情報が見つかる可能性がある、というものです。
その結果、自分の場合は、
Binary file /Users/####/.gradle/caches/modules-2/files-2.1/androidx.camera/camera-core/1.3.3/####/camera-core-1.3.3.aar matches
という表示が出たので(「####」は表記を省略)、ここから、使っていたcameraパッケージが怪しいと分かりました。
実際、cameraパッケージを最新版(現時点で0.11.2)に更新したら、16KB非対応が解消されました。
なお、自分の場合、パッケージ更新後に、改めてapkを作成しようとすると大量のエラーが出ましたが、「pubspec.lock」を削除してから、「pub get」することで解消できました。
⑤必要に応じFlutterのバージョンを更新
必ずしも16KB対応に必要な訳ではありませんが、前記④でパッケージを更新する際、Flutter SDKも更新が必要になる場合があります。
自分の場合も、cameraパッケージを更新するために、Flutterのバージョンを、「3.19.6」から「3.27.1」に上げる必要がありました。
Flutter3.27.1に上げるときに必要だった対応については、下記に記載していますので、よろしければご参照ください。
動作チェック(16KB対応済の確認)
前述までの修正が終わったら、確かに16KB非対応が解消されているか、いくつかの方法で確かめます。
2つのチェックコードで判定
公式サイトには、2つのチェックコードが掲載されています。
1つ目の方法は、再度、apkファイルを作成し、前述(2)のチェックコードで、「./check_elf_alignment.sh・・・」のコマンドを実行する方法です。
実行結果において、「arm64-v8a」もしくは「x86_64」の記載がある行が、全て「ALIGNED」になっていればOKです。
2つ目の方法は、同じく再作成したapkファイルに対して、下記コードでチェックする方法です(プロジェクトのルートフォルダで実行)。
~/Library/Android/sdk/build-tools/35.0.0/zipalign -c -P 16 4 build/app/outputs/flutter-apk/app-release.apk
※Build-Toolが「~
/Library/Android/sdk/」にある場合の例です。
実行結果の表示ログの最後に、「Verification succesful」が表示されれば、OKとなります。
恥ずかしながら、詳細は理解できていませんが、Chat-GPTに聞いたところ、1つ目と2つ目の方法は、チェックの観点が違うらしいので、念のため、両方確かめておいた方が良いようです。
※ご参考に、2つの方法について教えてもらった概要を掲載します。
- 1つ目の方法(「check_elf_alignment.sh」を使う方法):
- APK内に入っているネイティブライブラリ(.so = ELFファイル)の内部構造を確認
- ELFファイルの セグメント(ロード領域)が16KB境界に揃っているか をチェック
- つまり 「.so 自体の中身が16KBページ環境に適合しているか?」 を確認
- 2つ目の方法(「zipalign」を使う方法):
- APK (ZIP形式コンテナ) の中で、各ファイルの開始オフセットが16KBページ環境に適合しているかをチェック
- つまり 「APKの入れ物として正しいアラインメントか?」 を確認
16KB対応のエミュレーターで動作確認
自分のAndroid Studioのバージョンが古いためか、公式サイトの説明図とは仕様が異なっていたので、若干、16KB対応のエミュレーターの作成で苦労しました。
以下は、あくまで自分の環境の例ですが、Android Studioで、下記の通り「16KB Page Size」のシステムイメージをインストールし(下図はAPI 35のエミュレーターを作成する場合の例)、

エミュレーターの作成画面で、「16 KB Page Size」の「Target」を選んでエミュレーターを作成します。
※自分のAndroid Studioのバージョンだと、Targetの列に「16 KB Page Size・・・」と、さり気なく書かれているので、なかなか気づけませんでした。。

エミュレーターを起動後、ターミナルで「adb shell getconf PAGE_SIZE」のコマンドを実行し、「16384」と表示されれば、16KBになっている事を確認できます。
作成したエミュレーター上で、無事アプリをビルドできれば、OKとなります。
Google Play Console上で確認
最後に、更新用のリリースビルド(aabファイル)を作成し、Google Play Consoleにアップロードして、当該App Bundleの「メモリのページサイズ」が「16 KB 対応」に変わっていれば、対応完了です。

更新版について、Googleの審査が終わり、Google Play上にリリースされても、しばらくは「2025年11月1日までに、アプリで 16 KB メモリのページサイズをサポートする必要があります」の警告が出たままでした。
しかし、半日ほどすると、「先日お知らせしたアプリのポリシー違反が対処されました」という通知が来て、無事、警告が解消されました。
以上の方法にて、Androidでリリース済の全てのアプリで、16KB対応を無事、完了できました。
以上、どなたかのご参考になれば幸いです。
リリースしたアプリ(全てFlutterで開発)
個人アプリ開発で役立ったもの
おすすめの学習教材
\超初心者向けでオススメな元Udemyの講座/
\キャンペーン時を狙えば安価で網羅的な内容が学べる(日本語訳あり)/
\Gitの基礎について無料で学べる/
おすすめの学習書籍
\実用的。image_pickerに関してかなり助けられた/
\Dartの基礎文法を素早くインプットできる/
コメント