Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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

runners
スポーツで世界を良くしたいエンジニアチーム。応援navi、.finisher、run&といった製品開発をしています!
https://www.wantedly.com/projects/167082
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away