React Native というモバイルアプリを作るツールがあります。
そこで作ったアプリを Android Studio のエミュレータで動かすことができます。
React Native のプロジェクトを WSL2(Windows Subsystem for Linux 2) の内部に置くこともできるのですが、
やり方を調べても情報が古かったり日本語の記事が少なかったりうまくいってなかったりで結構苦労したので、ここにまとめたいと思います。
参考:React Native no Emulador Android Studio com WSL2 · GitHub
地球の反対側の人の投稿が大いに役に立ちました。笑
私の動作環境は次の通りです。
- Windows 10 Home バージョン 2004
- Android Studio Version 4.1.2
- WSL 2
- Ubuntu 20.04.1 LTS
[Windows] いろいろ設定
セキュリティの除外設定
Windows セキュリティのウイルスと脅威の防止 > ウイルスと脅威の防止の設定 > 除外から
Ubuntu のフォルダ(C:\Users\<username>\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_...
)を除外します。
私のPCではこの項目が表示されていなかったので、レジストリエディタをいじって表示させて除外しました。
参考:Windowsセキュリティでウイルスと脅威の防止が表示されない。 - マイクロソフト コミュニティ
これをしないと WSL で起動した Metro と Windows 側の Android Studio が繋がらないようです。
インストールなど
Windows に Android Studio をインストールします。
Android Studio の設定は、基本的に公式の Windows + Android の説明に沿っていきます。
インストールした後に Configure > SDK Manager から選択して追加でインストールできるので、
Android SDK Platform 29
と
Intel x86 Atom_64 System Image
またはGoogle APIs Intel x86 Atom System Image
をチェック。
さらに SDK Tools タブに移ってAndroid Sdk Build-Tools
> 29.0.2
をチェックしてインストールします。
その後、Android SDK のパスを通します。
環境変数にC:\Users\<username>\AppData\Local\Android\Sdk\platform-tools
を追加します。
Android Studio では Configure > AVD Manager から Q API Level 29 image の仮想デバイスを作成しておきます。
[WSL] インストールなど
基本的にはこの投稿の通りですが、若干古い部分があるので改めて書きます。
# ホームディレクトリに移動$ cd# unzip コマンドをインストール~ $ sudo apt install unzip# Linux 用 command line tools を入手する。# 最新版は https://developer.android.com/studio#command-tools から確認できる。~ $ wget https://dl.google.com/android/repository/commandlinetools-linux-6858069_latest.zip# Android ディレクトリとして解凍する~ $ unzip commandlinetools-linux-6858069_latest.zip -d Android# zip を消す~ $ rm -rf commandlinetools-linux-6858069_latest.zip# JDK とエミュレータをインストール# 9 以降だと tools.jar がないとかなんとかでエラーになるらしい~ $ sudo apt install -y lib32z1 openjdk-8-jdk# Java 確認~ $ java -version~ $ cd Android# ディレクトリ構成変更# こうしないと ./sdkmanager --install でコケる# もともとは cmdline-tools/ の中にいろいろあるが、# cmdline-tools/latest/ の中に移動する~/Android $ mv cmdline-tools latest~/Android $ mkdir cmdline-tools~/Android $ mv latest cmdline-tools~/Android $ cd cmdline-tools/latest/bin# いろいろインストールする# React Native の推奨が 29 だったので 29 を入れる~/A/c/l/bin $ ./sdkmanager --install "platform-tools" "platforms;android-29" "build-tools;29.0.2"# アップデート~/A/c/l/bin $ sdkmanager --update# Gradle をインストール~/A/c/l/bin $ sudo apt install gradle# Gradle 確認~/A/c/l/bin $ gradle -v
ここからは元投稿に書いていなかったことです。
~/A/c/l/bin $ cd ~/Android# sdkmanager によってフォルダができている~/Android $ lsbuild-tools cmdline-tools emulator licenses patcher platform-tools platform-tools-2 platforms tools~/Android $ cd platform-tools# platform-tools の中に adb コマンドがある~/A/platform-tools $ ls adbadb# adb を無効化する~/A/platform-tools $ mv adb adb2# 代わりに Windows 側の adb を使うようにシンボリックリンクを貼る~/A/platform-tools $ ln -s /mnt/c/Users/<username>/AppData/Local/Android/Sdk/platform-tools/adb.exe adb
React Native が~/Android/platform-tools/adb
を使うみたいで、
この設定をしないとsdkmanager
によって作られたadb
を使ってしまい、react-native run-android
したときにエラーになってしまいます。
Windows 側のadb.exe
は Android Studio のものなので、これでつなげることができます。
つづいて環境変数を設定します。
これは、例えば fish を使用している場合はそれを呼び出している bash の.bashrc
と fish の.config/fish/config.fish
の両方に設定する必要があります。
~/.bashrc1export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd642export PATH=$PATH:$JAVA_HOME/bin34export ANDROID_HOME=$HOME/Android5export PATH=$PATH:$ANDROID_HOME/emulator6export PATH=$PATH:$ANDROID_HOME/tools7export PATH=$PATH:$ANDROID_HOME/tools/bin8export PATH=$PATH:$ANDROID_HOME/platform-tools
~/.config/fish/config.fish1set JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd642set ANDROID_HOME $HOME/Android3set PATH $PATH $JAVA_HOME/bin $ANDROID_HOME/emulator $ANDROID_HOME/tools $ANDROID_HOME/tools/bin $ANDROID_HOME/platform-tools
プロジェクトを実行
まず、Android Studio から AVD を起動します。
AVD Manager で仮想デバイスの一覧が表示されるので、さきほど作成したものを緑色の三角ボタンで起動します。
次に PowerShell を立ち上げ、次のコマンドを打ちます。
adb kill-serveradb -a nodaemon server start
新たに WSL Ubuntu を開き、まだ React Native のプロジェクトを作成していない場合は作成します。
npx react-native init AwesomeProjectcd AwesomeProject
そして Metro を立ち上げます。
npx react-native start --host 127.0.0.1
新たに WSL Ubuntu を開き、プロジェクトのルートディレクトリ以下で次のコマンドを打ちます。
npx react-native run-android --variant=debug --deviceId emulator-5554
これでうまくいっていれば、Android Studio のエミュレータの表示が切り替わるはずです。
これで fish を使いながら開発できる!うれしい!
2回目以降は Android Studio の AVD 起動
→ PowerShell でadb
コマンド
→ WSL で Metro 立ち上げ
→ WSL で run-android または Android Studio エミュレータでアプリ再起動
これだけで OK!
この記事がお役に立てれば幸いです。
ではまた