Androidアプリが64bit対応が必要かどうかを判断する

8月1日からGoogle Playの64bit対応が必須になります。要件については「2019年のGoogle Play要件を整理しておく」でまとめた通りです。
実際に対応が必要なんだっけ?という判断はアプリごとにしなきゃなりません。公式情報として「アプリが 64 ビットデバイスをサポートしていることを確認する」が公開されているので、これを参考にして確認手順をおさらいしてみました。
1. apkを作る
普通にapkを作ればOKです。
2. Android StudioのAPK Analyzerで解析する
- Android Studioのメニューから Build > Analyze APK を選択
- ファイル選択ダイアログが表示されるので、先ほど作ったapkファイルを選択
3. 解析結果の lib ディレクトリ内を確認する
CPUアーキテクチャごとにディレクトリが決まっているので、ディレクトリが存在するかどうか、中に拡張子が .so
のファイルがあるかどうかを調べます。
- ARM
- 32bit: lib/armeabi-v7a
- 64bit: lib/arm64-v8a
- x86
- 32bit: lib/x86
- 64bit: lib/x86_64
ARMの32bitが存在するならARMの64bitを、x86の32bitが存在するならx86の64bitを用意する必要があります。
4. .so
ファイルがどのライブラリ由来のものなのかを調べる
ここまでは公式情報の案内通り。ここから先がちょっと厄介です。
ndkを使っている場合はビルド設定を見直せばOKです。
ndkを使っていないのに.so
ファイルがある場合はライブラリが.so
ファイルを含んでいる可能性大。その場合はどのライブラリ由来なのか調べることになります。よく使われるOSSライブラリだとRealmなんかがネイティブモジュールを使っていますね。
ここはうまいやり方が分からず。手順としては以下でできるんですが原始的過ぎる……。
- aarファイルを入手する
- gradleのキャッシュディレクトリからサルベージする or Maven Repositoryからダウンロードする
- aarファイルの拡張子を
.zip
に変更する
- aarファイルの拡張子を
- zipファイルを展開する
jni
ディレクトリの中を確認してlib
ディレクトリ内に.so
ファイルが格納されているかどうかを調べる
どのaarに含まれているかが分ればライブラリが分りますね。
5. ライブラリを64bit対応版に更新する
32bit対応しかしていないライブラリが見つかった場合は、そのライブラリを64bit対応版に更新しましょう。
ある程度新しいライブラリなら64bit対応していると思うのですが、古めだったりマイナーだったりすると非対応のものもあるかもしれません。その場合は自前でビルドし直すしかないですかね……。
関連(するかもしれない)記事
おススメ