こんにちは、開発部エンジニアの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