2019年2月9日土曜日

Android アプリの 64bit 必須化に対応する方法

How to support 64 bit libraries

2019年1月、Google Play で公開する一部のアプリは 64bit 対応が必須であることが発表されました。
Android Studio などで開発した 64bit に対応していないネイティブコードを含むアプリは2019年8月以降 Google Play から段階的に削除される可能性があります。
翻訳が間違っていたらすみません。
https://android-developers.googleblog.com/2019/01/get-your-apps-ready-for-64-bit.html

Android Studio で開発したアプリの 64bit 対応状況の調べ方と 64bit 化する方法をまとめました。


環境

  • Windows 10
  • Android Studio 3.3


64bit への対応が必要な条件

自作やサードパーティ製にかかわらず、C/C++ などで開発したネイティブコードを含むアプリは 64bit 版 x86 と 64bit 版 ARM のネイティブコードをサポートする必要があります。
32bit のライブラリを使わず、Java や Kotlin のみで開発したアプリなら必要ないと解釈出来ます。

原文はこちら
Uses any C/C++ (native) code in your app.
Links with any third party native libraries.
Is built by a third-party app builder that uses native libraries.

For the ARM architecture, the 32-bit libraries are located in armeabi-v7a. The 64-bit equivalent is arm64-v8a.
For the x86 architecture, look for x86 for 32-bit and x86_64 for 64-bit.


ネイティブコードを含んでいるかを確認する方法

Android Studio で自作したアプリの APK ファイルを調べてネイティブコードを含んでいるかを確認する方法です。
メニューから
Build -> Analyze APK
を開きます。

File ツリーが表示され、ネイティブコードを含むアプリは lib フォルダーがあります。
lib を展開し arm64-v8a と x86_64 のフォルダーに so ファイルがあればそれが 64bit のネイティブコードです。


自作ネイティブコードを 64bit 化する方法

apk ファイルの lib フォルダーに 64bit の so ファイルがなければ 64bit の so ファイルをビルド(コンパイル)する必要があります。
so ファイルのビルド方法はコンパイラーごとに異なるので公式サイトに載っていた方法をまとめました。


Gradle でネイティブコードをビルドする場合

build.gradle の
android -> defaultConfig
の ndk.abiFilters の行を次のように記述します。


CMake でネイティブコードをビルドする場合

arm64-v8a の so ファイルをビルドするには次のコマンドラインオプションを使います。


x86_64 の so ファイルをビルドするには次のコマンドラインオプションを使います。


ndk-build でネイティブコードをビルドする場合

app.mk ファイル (Android.mk) の APP_ABI の行を次のように記述します。


これら以外の方法でコンパイルしている場合はそれに合わせた 64bit のコンパイルが必要です。


参考にしたサイト

Ensure that your app supports 64-bit devices | Android Developers https://developer.android.com/distribute/best-practices/develop/64-bit


関連ブログ

Eclipse の Android Project を Android Studio にインポートしてビルドする方法
[Android] Xamarin で jar (Javaライブラリー) を実行する方法
[Android Studio] Xamarin で実行可能な jar (Javaライブラリー) の作り方
[Unity3D] Unity5のプロジェクトをAndroid Studioにインポートする方法