概要
Android 15以降、Google Playで配信するアプリが、メモリ管理の効率化(パフォーマンス向上)のため、16KBメモリページサイズに対応することが義務付けられた。
対応するSDKやNDKバージョンで再ビルド(再コンパイル)し、共有ライブラリを16KB対応にさせる必要があります。
そんな中、ML Kitに関して、どうしても16KBの警告が出てしまうものがあったため、その解決方法を記載します。
想定環境
・Flutter
・Android Studio
内容
警告が消えなかったライブラリ
arm64-v8a/libdigitalink.so
arm64-v8a/libimage_processing_util_jni.so
x86_64/libdigitalink.so
x86_64/libimage_processing_util_jni.so
x86_64/libtextclassifier3_jni_tclib.so
解決方法
app/build.gradleにandroidx.camera:camera-core:1.4.2を追加します。
※1.4.2は現在の最新バージョンです。
dependencies {
...
implementation "androidx.camera:camera-core:1.4.2"
}
ML Kit と cameraX ライブラリを最新バージョンに更新・追加することで、警告が解消されます。
(これにたどり着くまで長かった…)
その後、下記を実行。
flutter clean
flutter pub get
そして、警告を確認します。
- apkを作成
- 作成したapkに対して、Build > Analyze APKを実施
- Alignmentに警告⚠️が出ていないか確認
警告が出たままのライブラリ
しかし、上記を行ってもlibtextclassifier3_jni_tclib.soだけ、警告が出たままとなっていました。
私のプロジェクトでは、このライブラリは使用していなかったので、ビルド時に除外されるように指定します。
packagingOptions {
exclude 'lib/**/libtextclassifier3_jni_tclib.so'
}
最終確認
Google Play consoleから、修正したApp Bundleをアップロードします。
その後、Bundleの詳細画面 → メモリのページサイズ項目で、警告が無ければOKです。
まとめ
libtextclassifier3_jni_tclib.soだけ、何しても警告が消えず、対応に苦労しましたね…
(公開されているGitHubのコードからヒントを得ました)
正式に対応されたバージョンが出るのはいつになるのか
参考
ML Kit native libraries not 16KB aligned – fails stripReleaseDebugSymbols in AGP 8.5+
お知らせ(採用情報)
最後にお知らせとなりますが、AppTime では一緒に働くメンバーを募集しております。
詳しくは採用情報ページをご確認ください。
みなさまからのご応募をお待ちしております。
