今天在archlinux下搭建react native + android,遇到一些問題,終於折騰成功,特此記錄。
參照react native文件的步驟進行安裝,安裝完畢後,開啟Android Studio,匯入你的專案專案(或者官方提供的實驗專案AwesomeProject)資料夾,開啟安卓虛擬機器(Android Emulator,當然也可以選擇真機除錯),然後進入命令列,cd到專案資料夾下,中執行:react-native run-anroid
就能在模擬器中進行除錯了。
當然你也許會遇到以下問題:
相關問題解決
- Thread(png-cruncher_20) has a null payload
安裝lib32zl(包名也可能是 lib32-zlib)
- Error: java.util.concurrent.ExecutionException: java.lang.RuntimeException: AAPT process not ready to receive commands
安裝lib32stdc++6(如果沒有6 也可以安裝 lib32stdc++5)
注意:對於以上兩個軟體安裝,你可能需要手動開啟lib32源(例如archlinux需要開啟multilib源)。目前這兩個軟體還沒法用64位的代替。
提示:具體包名可在http://pkgs.org 搜尋關鍵字查詢。
-
kvm相關(用以對模擬器加速)
根據發行版安裝qemu(具體包名可在http://pkgs.org 搜尋關鍵字查詢,或使用包管理器搜尋關鍵字),啟用kvm相關模組(一般會自動啟用)。
參閱文件qemu#.E5.90.AF.E7.94.A8_KVM) kvm#.E5.A6.82.E4.BD.95.E4.BD.BF.E7.94.A8KVM) kernel modules#.E6.89.8B.E5.8A.A8.E5.8A.A0.E8.BD.BD.E5.8D.B8.E8.BD.BD)
- kvm硬體支援情況
grep -E "(vmx|svm)" --color=always /proc/cpuinfo
如果執行後沒有顯示,那麼你的處理器不支援硬體虛擬化
-
檢查kvm啟用狀況
- bios裡面檢視是否開啟虛擬化
-
lsmod | grep kvm
檢視是否載入了kvm相關模組 有類似一下輸出kvm_intel 225280 4 kvm 696320 1 kvm_intel
一般在安裝kvm後重啟,系統會自動將這些模組進行載入。
- kvm硬體支援情況
-
啟動安卓模擬器提示 /dev/kvm device permission denied
將當前使用者新增到kvm使用者組即可,加入當前使用者名稱為username
usermod -aG kvm username newgrp #立即生效 也可以重啟系統或者登出登入後生效
-
啟動安卓模擬器失敗Emulator: Process finished with exit code 1
開啟log有類似:
libGL error: unable to load driver: i965_dri.so
libGL error: driver pointer missing
libGL error: failed to load driver: i965
libGL error: unable to load driver: swrast_dri.so
libGL error: failed to load driver: swrastln -sf /usr/lib/libstdc++.so.6* $ANDROID_SDK_HOME/emulator/lib64/libstdc++/
更新:android studio的模擬器效能捉急 建議使用genymotion
安裝genymotion後,在settings-ADB點選use custom android sdk,然後在下面選上sdk的位置(一般是xxx/android-sdk)
命令列控制模擬器
對於react-native開發,大多時候並不需要開啟android studio,只是希望快速開啟android emulator進行除錯,這裡對從命令列啟動和建立虛擬機器進行簡要說明。
更多命令可使用android -h
獲取。
啟動虛擬機器
-
列出所有建立的虛擬機器
emulator -list-avds
-
emulator @虛擬機器名字
可啟動一個虛擬機器例如某個虛擬機器名為Nexus_5X_API_27_x86,執行以下命令啟動:
emulator @Nexus_5X_API_27_x86
如果當前只有一個虛擬機器,可以執行一下命令直接啟動:
emulator @`emulator -list-avds`
!錯誤:如果提示
Could not launch `/home/levin/../emulator/qemu/linux-x86_64/qemu-system-x86_64`: No such file or directory
可以使用
$ANDROID_HOME/tools/emulator
代替emulator
:$ANDROID_HOME/tools/emulator @`emulator -list-avds`
為了方便使用,可在
~/.bashrc
新增相關別名,例如:alias avds=`emulator -list-avds` #列出所有虛擬機器 alias emulator=`$ANDROID_HOME/tools/emulator` #emulator #啟動虛擬機器(適合只有一個時) alias avd=`$ANDROID_HOME/tools/emulator @`emulator -list-avds``
建立/刪除虛擬機器
-
列出所有sdk
android list target
會有類似以下內容:
id: 3 or “android-27”
Name: Android API 27
Type: Platform
API level: 27
Revision: 1其中的id就是下面建立虛擬機器需要的選項之一
-
建立虛擬機器
android create avd -n new_android -t 3
其中-n後面指定虛擬機器的名字,-t後面的數字指定上面列出的id值。
使用
emulator @new_android
即可啟動名為new_android的虛擬機器。 -
刪除虛擬機器
android delete new_android