為さねば成らぬ

retia.verno@gmail.com

リリースしようとしたらネイティブサポートが減っていた

背景

Google Play Consoleからアプリのアップデートをリリースしようとした

課題

警告が出ていて、よく見ると前回のapkからネイティブサポートの値が減っている(mips)

f:id:verno3632:20200602003146p:plain
before
f:id:verno3632:20200602003150p:plain
after

このアプリの対象端末数は変換がないのでおそらくリリースに影響はないだろうが、本当に影響がないか調査する

調査

developer.android.com

注: これまで NDK は ARMv5(armeabi)、32 ビットおよび 64 ビットの MIPS をサポートしていましたが、こうした ABI のサポートは NDK r17 で削除されました。

gihyo.jp

2011年頃には,携帯端末への進出を狙い,AndroidでもMIPSを搭載するタブレットが一時的に存在していましたが,いまやその影をみることもありません。 おそらく現在使われているmipsAndroid端末はないだろう。

qiita.com

アプリの対応abiは、apkをunzipした lib 以下に入っているみたい。

実装

今回のリリースで入った変更なので、どこのコミットで消えてるかを見ればわかるはず。

  1. 前回のリリースから、マージコミットの最初のコミットを一覧する git log ${last_version}.. --first-parent --oneline
gggggg Merge pull request #7
ffffff Merge pull request #6
eeeeee Merge pull request #5
dddddd Merge pull request #4
cccccc Merge pull request #3
bbbbbb Merge pull request #2
aaaaaa Merge pull request #1
  1. だいたい真ん中のコミットをチェックアウト git checkout dddddd

  2. apk生成 ./gradlew assembleRelease

  3. apkの中身を見る unzip -l app/build/outputs/apk/production/release/app-release.apk | grep lib/

2184400 00-00-1980 00:00 lib/arm64-v8a/libRSSupport.so 72000 00-00-1980 00:00 lib/arm64-v8a/librsjni.so 70192 00-00-1980 00:00 lib/arm64-v8a/librsjni_androidx.so 1783824 00-00-1980 00:00 lib/armeabi-v7a/libRSSupport.so 59888 00-00-1980 00:00 lib/armeabi-v7a/librsjni.so 54256 00-00-1980 00:00 lib/armeabi-v7a/librsjni_androidx.so 1504188 00-00-1980 00:00 lib/x86/libRSSupport.so 57956 00-00-1980 00:00 lib/x86/librsjni.so 65288 00-00-1980 00:00 lib/x86/librsjni_androidx.so 1475264 00-00-1980 00:00 lib/x86_64/libRSSupport.so 67912 00-00-1980 00:00 lib/x86_64/librsjni.so 74256 00-00-1980 00:00 lib/x86_64/librsjni_androidx.so

以上を2分探索で繰り返し、どこでmipsが消えてるかを探す。

結果、とあるライブラリのアップデートでで消えているのに気づいた。 さらに調べると、そのライブラリの依存しているライブラリが、minSdkVersionが9から14に上がっていた。おそらくこれだろう。

まとめ・考察・雑感

  • ネイティブサポートが減っていたら含まれるライブラリアップデートも考慮して、minSdkVersionの変化がないかを疑う。
  • 古いサポートが切られた結果apkサイズが若干減った。これは古いライブラリを新しくすることにより起こることもあるので、ライブラリのアップデート積極的にやりたい。
  • そもそもmipsAndroid端末のリストが全く出てこなかった。