[革命] Expoアプリで16KB対応に引っかかったライブラリを調べる方法
Google Play Consoleで表示される16KB警告の原因調査と回避手順
先日初めて android 向けにアプリをリリースしました
いいね!
けど、アプリが 16KB に対応していないって怒られてしまって。。。
なにそれ。。とりあえず解説みていこう
はじめに
Expo で android 向けにアップロードし終えひと段落かと思いきや、このような警告が出てきたことはないでしょうか。
アプリは16KBメモリのページサイズをサポートしている必要があります

よくわからず放置していたのですが、いつかは解消しないといけないことなので重い腰を上げて問題解決してみました。
ライブラリを調べる
Google Play Console での作業
最初に何の.soかを突き止めます。
Google Play Console で問題が起きているプロジェクトに入り、以下の画像の最新のリリースとApp Bundleへ進みます。

その App Bundle のページを下の方にスクロールすると、16KB非対応の項目が出てくると思います。
その項目をどこかにメモしておきましょう。
今回の場合はbase/lib/arm64-v8a/librenderscript-toolkit.soとbase/lib/x86_64/librenderscript-toolkit.soです。

Expo プロジェクト内での作業
まず Expo プロジェクトのルートにいきます。 すでに android 向けにビルドしているはずなので
cd android
で android ディレクトリに移り
以下の画像のように打ちます。
./gradlew app:dependencies > deps.txt

おそらく少し時間がかかると思いますが、android アップで使われている依存関係の一覧を deps.txt に列挙してくれています。
gradlewコマンドが完了したら以下のように打ちます。
⚠️renderscript部分は先ほど Google Play Console であった.so の内容に合わせる必要があります。私の場合は、../librenderscript-toolkit/.soという形だったので、renderscriptで検索をかけました。
grep -i renderscript deps.txt

すると、今回はvexoというライブラリが問題の根源であるということがわかりました。
package.jsonを見てみると確かにありますね。

一応公式ドキュメントを確認してみると、まさかのマイナーアップデート 1 つずれ 😱
expo-imageとかが原因だと思っていたので、1 から探していたら非常に時間がかかっちゃっていたと思います。。。

おわり
いかがだったでしょうか。今回の記事が少しでも参考になったら幸いです。
ぜひサイドバーからアプリの閲覧、メールなどもお待ちしています ☺️