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

2019/06/13

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なんかがネイティブモジュールを使っていますね。

ここはうまいやり方が分からず。手順としては以下でできるんですが原始的過ぎる……。

  • 1. aarファイルを入手する
    • gradleのキャッシュディレクトリからサルベージする or Maven Repositoryからダウンロードする
  • 2. aarファイルの拡張子を.zipに変更する
  • 3. zipファイルを展開する
  • 4. jniディレクトリの中を確認してlibディレクトリ内に.soファイルが格納されているかどうかを調べる

どのaarに含まれているかが分ればライブラリが分りますね。

5. ライブラリを64bit対応版に更新する

32bit対応しかしていないライブラリが見つかった場合は、そのライブラリを64bit対応版に更新しましょう。

ある程度新しいライブラリなら64bit対応していると思うのですが、古めだったりマイナーだったりすると非対応のものもあるかもしれません。その場合は自前でビルドし直すしかないですかね……。




関連(するかもしれない)記事


おススメ