18
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

React Native製 Android アプリの64bit対応

Posted at

2019/8/1から64bit対応していないAndroidアプリのストアへのアップロードができなくなります。
これにあたってReact Nativeアプリの64bit対応を行ったので方法をメモしておきます。
作業前にAndroidネイティブアプリの64bit対応についてのドキュメントを読んでおくと作業がスムーズにすすむと思います。

RN0.59

React Nativeのバージョンを0.59系にあげます

build.gradle

build.gradleを修正し64bitバイナリを含めるようにします

gradle|app/build.gradle
    defaultConfig {
        applicationId 'jp.co.runners.mimizuku'
        minSdkVersion "${rootProject.ext.minSdkVersion}"
        targetSdkVersion "${rootProject.ext.targetSdkVersion}"
        versionCode 33
        versionName "2.0.7"
        // ↓このブロックがあったら削除
        //ndk {
        //    abiFilters "armeabi-v7a", "x86"
        //}
    }

    splits {
        abi {
            reset()
            enable enableSeparateBuildPerCPUArchitecture
            universalApk false  // If true, also generate a universal APK
            //include "armeabi-v7a", "x86"
            // ↑これを↓こうする
            include "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
        }
    }

    // applicationVariants are e.g. debug, release
    applicationVariants.all { variant ->
        variant.outputs.each { output ->
            def versionCodes = ["armeabi-v7a":1, "x86":2]
            // ↑これを↓こうする
            def versionCodes = ["armeabi-v7a":1, "x86":2, "arm64-v8a": 3, "x86_64": 4]
            def abi = output.getFilter(OutputFile.ABI)
            if (abi != null) {  // null for the universal-debug, universal-release variants
                output.versionCodeOverride =
                        versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
            }
        }
    }

参考
https://github.com/facebook/react-native/commit/4b996da

apk確認

Android Studioの Build -> Analyze APK で lib以下の*.soファイルが各アーキテクチャに過不足なく存在するか確認します。
私の場合はlibrealmreact.soの64bit版が存在していませんでした。
ちょうど数日前に64bit対応されたバージョン2.28.0がリリースされていたので使用するrealmのバージョンも上げる必要がありました。
このようにネイティブバイナリを使っているライブラリの場合はこのような問題があるので、soファイルの存在チェックはアプリを動かす前にしたほうがよさそうです。

詳しいやり方
https://developer.android.com/distribute/best-practices/develop/64-bit#look_for_native_libraries_using_apk_analyzer

動作確認

64bit対応しているデバイスで動作確認します。
アプリのインストールはabiオプションを指定して次のようにすることで、64bitライブラリのみ使用するアプリがインストールできます。

adb install --abi arm64-v8a YOUR_APK_FILE.apk

デバイスが64bit対応しているか調べる方法は こちらの記事を参照してください。

詳しいやり方
https://developer.android.com/distribute/best-practices/develop/64-bit#test_your_app_on_64-bit_hardware

18
12
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?