私はしばらくの間Android開発を行っていないので、現代のAndroid開発に関する私の知識は不十分です。
React Native。プライマリ開発環境としてWSLを使用しています。Androidエミュレーターをセットアップするのはおそらく面倒なので、学習しようとしています。 Linux/WSLでは、エミュレーターをWindowsで直接実行したいのですが、WSLでreact-native run-Android
を実行できるようにしたいと思います。
WSLでreact-native run-Android
を実行し、WindowsのReactエミュレーターでアプリを実行できるように、ネイティブでAndroid Nativeを設定するにはどうすればよいですか?
私のAndroid_HOME
変数は正しく設定されているはずですが、Androidについては、これが何かを行っているかどうかを知るのに十分な知識がありません。
export Android_HOME=/mnt/c/Users/Leo/AppData/Local/Android/sdk
export PATH=${PATH}:${Android_HOME}/tools
export PATH=${PATH}:${Android_HOME}/platform-tools
AFAIKいくつかの問題があるため、WSLでreact-nativeを使用することはできません。
例えば https://github.com/Microsoft/BashOnWindows/issues/152
ただし、ネイティブWindows AndroidビルドとWSLのnpmスタックを組み合わせた回避策を見つけました。現実的には、ネイティブのWindows Android Studio/SDKをインストールして、Intellij IDEとエミュレーターを使用することをお勧めします。秘訣は、GradleベースのAndroidコンパイルを分離することです。
ワークフロー
すべてのプロジェクトのセットアップとパッケージ管理は、npm/yarnを使用してWSLで実行されます。 WSLにグローバルにインストールされたreact-native-cli。重複するWindowsバイナリノード/ npmスタックは必要ありません。
react-native run-Android
を使用せず、代わりにcmdからコンパイルしてデプロイします。プロジェクト内の/Android
ディレクトリから、gradleラッパーgradlew.bat installDebug
を実行するか、Creator's Updateを使用して、WSLbashシェル/mnt/c/Windows/System32/cmd.exe /C gradlew.bat installDebug
内からこれを実行できます。 UNIXのgradlewスクリプトは使用しないでください。
APKがアセンブルされ、デバイスまたはエミュレーターにアップロードされたら、コマンドreact-native start
を使用してWSL内からデバッグサーバーを実行します。
複数のネイティブAndroidコンポーネントを使用して、かなり複雑なプロジェクトでこれをテストしました。お役に立てれば。
WSLでreact-native run-Android
を実行しながら、エミュレータがWindowsで実行されるように設定することができます。 @psclの方法よりもこの方法で行うことの利点は、この方法が自動リンクをサポートすることです。これが機能するためにあなたがする必要があることです。
Windows側で必要なのは、 Android Studio をインストールし、エミュレーター/仮想デバイスをセットアップすることだけです。これは非常に簡単なので、ここでは説明しません。
物事のこちら側を設定することにはもう少しありますので、我慢してください。 (私のWSLはUbuntu 18.04です。これは、他のフレーバーではテストされていません。)
tools
という名前のディレクトリを~/Android/Sdk/tools
に移動します。 (~/Android/Sdk
ディレクトリが存在しない場合は作成します。)sdkmanager
が機能しません。後で使用します。 )/opt/jdk8u222-b10
に移動します。 (実際には、これを好きな場所に配置できます。Java_HOME
環境変数がこの解凍されたフォルダーを指していることを確認してください。)~/.bashrc
ファイルに次の環境変数を設定します。 (パスはあなたにとって異なるかもしれません!)export Android_HOME=/home/your-name/Android/Sdk
export Java_HOME=/opt/jdk8u222-b10
export PATH=$PATH:$Android_HOME/platform-tools
export PATH=$PATH:$Android_HOME/tools/bin
sdkmanager "platform-tools"
を実行して、最新のプラットフォームツールをダウンロードします。 (adb
ツールはここから来ています。)すべてがセットアップされたので、プレイする時が来ました!
react-native start
を実行します。 (この端末は開いたままにします)。react-native run-Android
を実行します。 (これを初めて実行すると、React Nativeは仮想デバイスに基づいて他のいくつかのSDKをダウンロードします。sdkmanager --list
を実行すると、インストールされているすべてのSDKを確認できます。 詳細については、sdkmanager のドキュメントを参照してください。)デバイスで実行中
これは、アプリを物理デバイスにインストールできるようにするための簡単なメモです。ここでの秘訣は、両方のadb
実行可能ファイルが同じバージョンにあることを確認することです。 (sdkmanager
を介してインストールしたためです。)
C:\Users\your-name\AppData\Local\Android\Sdk\platform-tools\adb.exe version
/home/your-name/Android/Sdk/platform-tools/adb version
それらが同じバージョンであることを確認したら、Windows実行可能ファイルからadbサーバーを起動するようにしてください(adb.exe kill-server && adb.exe start-server
を実行)。次に、WSLでadb devices
を実行して動作するかどうかをテストすると、接続されているデバイスが表示されます。
Windows 10 Android StudioをWSL2にあるreact-nativeプロジェクトで動作させるのに苦労している人のために。
Windows 10 Android Studioにインストールする必要があります。
ユーザー変数を設定します:_Android_HOME=C:\Users\<YOUR_USER>\AppData\Local\Android\Sdk
_
システム変数PATHに追加:%Android_HOME%\emulator %Android_HOME%\platform-tools %Android_HOME%\tools %Android_HOME%\cmdline-tools\latest (I'm not sure if this one is necessary)
次に、WSL2に移動して、以下をインストールします。
Sudo apt-get install unzip
_Sudo apt-get install openjdk-8-jdk
_を使用してjdk8をインストールします_export Java_HOME=/usr/lib/jvm/Java-8-openjdk-AMD64
export JRE_HOME=/usr/lib/jvm/Java-8-openjdk-AMD64/jre
export PATH=$PATH:$Java_HOME/bin
export ADB_SERVER_SOCKET=tcp:<YOUR_WSL_IP_ADDRESS_FROM_POWERSHELL>:5037 (check your WSL adapter IP by running `ipconfig` in powershell.)
export Android_HOME=$HOME/Android
export PATH=$PATH:$Android_HOME/emulator
export PATH=$PATH:$Android_HOME/tools
export PATH=$PATH:$Android_HOME/tools/bin
export PATH=$PATH:$Android_HOME/platform-tools
_
sdkmanager --sdk_root=${Android_HOME} "platform-tools"
_を実行しますadb version && adb.exe version
_を実行し、バージョンが一致するかどうかを確認しますadb kill-server
_(ps)/ _adb.exe kill-server
_(wsl2 bash)adb -a -P 5037 nodaemon server
_(ps)/ _adb.exe -a -P 5037 nodeamon server
_(wsl2 bash)-ターミナルウィンドウを閉じないでください!emulator -avd <YOUR_AVD_NAME>
_(ps)/ _emulator.exe -avd <YOUR_AVD_NAME>
_ --ターミナルウィンドウを閉じないでください!adb kill-server
_(WSL2 bash)を実行しますadb devices
_(WSL2 bash)-エミュレートされたデバイスがIDを取得するのが表示されます。react-native run-Android --deviceId=<YOUR_DEVICE_ID>
_を実行しますUSB接続デバイスでも同じフローが維持されます。変更されているのは、手順4の代わりに、開発者対応の電話をPCに接続し、新しいデバイスが接続されていることを示すadbサーバーログを実行しているターミナルウィンドウを表示する必要があることだけです。
注:Windows 10で環境変数を定義し、PATHシステム変数を拡張した場合にのみ、_.exe
_とパスを使用せずにエイリアスでPowerShellのすべてのコマンドを実行できます。 WSL2 bashのすべてのコマンドを使用する場合、Windows側で何かを実行するときは、常に_.exe
_を追加する必要があります。これにより、WSL2はWindows実行可能ファイルに到達する必要があることを認識します。