【React Native】ビルド高速化テクニック Android編

こんにちは、開発部エンジニアのK.Kです。

私が所属するチームでは遠隔臨場 SiteLiveという製品を担当をしており、 モバイルアプリに「React Native」というフレームワークを採用して開発しています。

その「React Native」で開発を進めていく上で避けて通れない問題の1つとして、 デバッグビルドの時間がとても長くなる問題があります。

今回は、Androidのビルド高速化テクニックについてご紹介します。

デバッグビルドが遅い原因

React Nativeではデバッグビルド時にCPUアーキテクチャ(armeabi-v7a、arm64-v8a、x86、x86_64)全てを対象にしたビルドを行います。
そのためデバッグで使用する機器以外のCPUアーキテクチャ用バイナリファイルも生成するため時間がかかります。

高速化の手順

デバッグで使用する機器のアーキテクチャのみをビルドするように設定を行います。

アーキテクチャごとにバイナリファイルを分割する設定

android\app\build.gradleの下記設定をtrueに変更します。

def enableSeparateBuildPerCPUArchitecture = true

デバッグ対象のアーキテクチャのみをビルドする設定

デバッグのオプションに--active-arch-onlyをつけることで、デバッグ対象のアーキテクチャのみがビルドされます。

  • コマンドラインを使用した例
npx react-native run-android --active-arch-only
  • VSCodeを使用した例
    .vscode\launch.jsonにrunArgumentsでオプションを追加します。
{
  "name": "Debug Android",
  省略
  "runArguments": ["--active-arch-only"]
}

動作確認

デバッグ開始後、コンソールに下記メッセージが表示されていれば動作しています。

info Detected architectures xxxxx

ビルドが終わりましたらバイナリファイルを確認してみましょう。
デバッグ対象のアーキテクチャのみが生成されているはずです。

結果

遠隔臨場 SiteLiveプロジェクトで試した結果、50%以上の高速化を実現することができました。

対応前:1分 51秒
対応後:54秒

検証環境:React Native 0.70.10

約1分の短縮なので10回のビルドで10分、100回では1時間40分も節約できます!
簡単に出来るので是非お試しください。

おわりに

KENTEMでは、様々な拠点でエンジニアを大募集しています!
建設×ITにご興味頂いた方は、是非下記のリンクからご応募ください。 hrmos.co https://hrmos.co/pages/kentem2211/jobs/A0008hrmos.co