今天在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