[教學] React Native 開發環境安裝教學 (Linux + Android)

React 是目前很多人使用的 Web 框架之一,而 Facebook 有特別做了一個 APP 框架 React Native,讓開發者用寫 React 的方式來寫跨平台APP,並且用 javascript 語法呼叫系統相關操作,對於原本寫 Web 應用的人可以更容易的上手,本篇教學如何安裝 React Native 開發環境。

React Native 官方網站 : https://facebook.github.io/react-native/

Githib 網址 : https://github.com/facebook/react-native

安裝 Nodejs

使用 React Native 需要先有 node js 的環境

先裝 nodejs (也可以透過 nvm 安裝)

sudo apt-get install nodejs

設定 Android 環境

開發 Android 需要有 Android Studio 裝的 SDK 與 AVD,Android Studio 安裝教學請參考前一篇 [教學] Android Studio 開發環境安裝教學 (Linux版)

而因為 react-native 在執行需要使用Android SDK,所以還需要設定 ANDROID_HOME 環境變數

假如是按照前一篇文章 Android 預設會安裝在 ~/Android/Sdk

在 $HOME/.bash_profile 加入以下內容

export ANDROID_HOME=$HOME/Android/Sdk
export ANDROID_SDK_ROOT=$HOME/Android/Sdk
export ANDROID_AVD_HOME=$HOME/.android/avd
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

修改完後輸入指令重新讀取設定

source $HOME/.bash_profile

安裝 Watchman

react native 會使用 watchman 來檢查檔案是否有變動,來達到 hot reload 功能

安裝Watch需先安裝編譯所需要的工具

sudo apt-get install -y autoconf automake build-essential python-dev libtool pkg-config libssl-dev

接著編譯並安裝 watchman

git clone https://github.com/facebook/watchman.git
cd watchman
git checkout v4.9.0  # the latest stable release
./autogen.sh
./configure
make
sudo make install

安裝 react-native-cli 與建立專案

用 npm 安裝 react-native-cli

npm install -g react-native-cli

建立專案 (project-name 為自己想要的專案名稱)

react-native init <project-name>

這邊用MyProject當作專案名稱示範

react-native init MyProject

執行 APP

共有兩種方法可以執行APP

  1. 使用模擬器執行
  2. 使用Android實體手機執行

1. 使用模擬器執行

要使用模擬器執行需要先建立模擬器(參考前一篇

接著可以透過Android Studio開啟模擬器或是透過下面的指令

顯示目前有哪些模擬器指令:

emulator -list-avds

接著使用指令啟動模擬器:

emulator -avd <avd-name>

模擬器開啟後接著要啟動 react-native Metro server

react-native start

跑完的時候開啟另外一個 terminal 視窗啟動 APP

react-native run-android

模擬器出現APP畫面就表示成功

2. 使用實體Android實體手機執行

首先需要在手機開啟開發者模式

預設開發者模式是隱藏的 需要在 [設定] 中的 [關於手機][版本號碼] 七次打開

按七次後出現 “您現在已成為開發人員” 就表示成功啟用

(不同廠牌的手機方式可能不同,可以查一下自己手機的出現方式)

接著就會出現 [開發者選項] 啟用 [開啟開發人員選項]

開啟 USB偵錯 以及 USB安裝

接著在PC中安裝adb

sudo apt-get install adb
sudo usermod -aG plugdev $LOGNAME

然後把手機USB接上電腦,輸入以下指令顯示目前有哪些USB裝置連在電腦上

lsusb

會顯示類似如下的資訊 (有時會難以辨識哪個是USB裝置,可以先比對USB插上與沒有插上輸入指令時的差異,有差異的那個就是)

而這邊我的裝置是 Bus 003 Device 019: ID 2719:ff47,其中後面的ID是要的資訊 2719:ff47

Bus 003 Device 007: ID 058f:6366 Alcor Micro Corp. Multi Flash Reader
Bus 003 Device 005: ID 046d:c534 Logitech, Inc. Unifying Receiver
Bus 003 Device 006: ID 0bda:8179 Realtek Semiconductor Corp. RTL8188EUS 802.11n Wireless Network Adapter
Bus 003 Device 004: ID 1a40:0101 Terminus Technology Inc. Hub
Bus 003 Device 019: ID 2719:ff47
Bus 003 Device 002: ID 05af:1012 Jing-Mold Enterprise Co., Ltd
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

這時我們要使用ID前四碼 2719 輸入以下指令

echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="2719", MODE="0666", GROUP="plugdev"' | sudo tee /etc/udev/rules.d/51-android-usb.rules

完成後將USB重新拔除並插上後 會詢問是否允許USB真錯 選擇確定

接著在PC輸入以下指令 會顯示目前有的Android裝置

adb devices

如果有成功顯示 device 就表示成功

List of devices attached
820fca0d        device

接著到專案根目錄啟用 react-native Metro server

react-native start

跑完的時候開啟另外一個 terminal 視窗啟動APP

react-native run-android

這時手機會出現USB安裝提示,選擇繼續安裝就會開始安裝

成功後就會在手機啟動APP

其他問題

實體手機顯示 Could not connect to development server 要怎麼辦?

原因是手機的localhost並不是電腦的IP,可以輸入以下指令進行proxy

adb reverse tcp:8081 tcp:8081

移除的指令

adb forward --remove tcp:8081

如何顯示 debug 訊息

在 react native 可能會使用 console.log 顯示訊息

查看方法是在專案目錄中輸入以下指令 就可以在terminal視窗顯示了

react-native log-android