今天在archlinux下搭建react native + android,遇到一些問題,終於折騰成功,特此記錄。php
參照react native文檔的步驟進行安裝,安裝完畢後,打開Android Studio,導入你的項目項目(或者官方提供的實驗項目AwesomeProject)文件夾,開啓安卓虛擬機(Android Emulator,固然也能夠選擇真機調試),而後進入命令行,cd到項目文件夾下,中執行:react-native run-anroid
就能在模擬器中進行調試了。html
固然你也許會遇到如下問題:java
安裝lib32zl(包名也多是 lib32-zlib)react
安裝lib32stdc++6(若是沒有6 也能夠安裝 lib32stdc++5)linux
注意:對於以上兩個軟件安裝,你可能須要手動開啓lib32源(例如archlinux須要開啓multilib源)。目前這兩個軟件還無法用64位的代替。android
提示:具體包名可在http://pkgs.org 搜索關鍵字查詢。ios
kvm相關(用以對模擬器加速)c++
根據發行版安裝qemu(具體包名可在http://pkgs.org 搜索關鍵字查詢,或使用包管理器搜索關鍵字),啓用kvm相關模組(通常會自動啓用)。git
參閱文檔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)github
grep -E "(vmx|svm)" --color=always /proc/cpuinfo
若是運行後沒有顯示,那麼你的處理器不支持硬件虛擬化
檢查kvm啓用情況
lsmod | grep kvm
查看是否加載了kvm相關模組 有相似一下輸出
kvm_intel 225280 4 kvm 696320 1 kvm_intel
通常在安裝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: swrast
ln -sf /usr/lib/libstdc++.so.6* $ANDROID_SDK_HOME/emulator/lib64/libstdc++/
安裝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