LoginSignup
0
0

More than 3 years have passed since last update.

React Nativeのrun-androidはデバイスIDの有無で実行されるタスクが違う

Last updated at Posted at 2020-07-21

はじめに

React Nativeのrun-androidコマンドはPCに接続したAndroid端末すべてにapkをインストールします。
一方で--deviceIdでデバイスIDを指定すると特定のAndroid端末だけにapkをインストールできます。
ですがデバイスID指定ありとなしでは実行されるGradleタスクに違いがあったので調べた結果をまとめました。

バージョン

  • @react-native-community/cli-platform-android: 4.9.0

実行されるタスクの調査方法

react-native コマンドの --verbose オプションを指定すると実行されるコマンドが分かるのでこれで確認します。

デバイスIDを指定しない場合

$ react-native run-android --verbose
info Running jetifier to migrate libraries to AndroidX. You can disable it using "--no-jetifier" flag.
Jetifier found 1041 file(s) to forward-jetify. Using 8 workers...
info JS server already running.
info Installing the app...
debug Running command "cd android && gradlew.bat app:installDebug -PreactNativeDevServerPort=8081"

app:installDebugタスクが実行されています。これはアプリをビルドして全Android端末にapkをインストールします。

デバイスIDを指定する場合

$ react-native run-android --verbose --deviceId xxxxx
info Running jetifier to migrate libraries to AndroidX. You can disable it using "--no-jetifier" flag.
Jetifier found 1391 file(s) to forward-jetify. Using 8 workers...
info JS server already running.
info Building the app...
debug Running command "gradlew.bat build -x lint"

buildタスクが実行されています。これはアプリのビルド、テスト、Javadocのビルドなどが実行されます。
更に--tasksオプションでタスクを指定しても反映されないのでビルド以外のタスクを除外できません。

apkビルドだけで特定の端末にインストールしたい

現状はオプションなどで変更できないので以下のどちらかしかなさそうです。

  • インストールしたくないAndroid端末の電源を切るかUSBケーブルを抜く
  • node_modules/@react-native-community/cli-platform-android/build/commands/runAndroid/index.jsbuildApk内の"build""assembleDebug"に書き換える

以下のPull Requestが取り込まれるとビルドコマンドが統一されてassembleDebugタスクに置き換わるので将来的には解消しそうです。

0
0
0

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
0
0