作为一个主打react的前端,最近开始新学react native。本人没有开发过原生,并且直接看官方文档觉得吃力,于是找了能带自己入门的教学视频。开始部分,一切都很顺利,直到遇到我想要用终端开启安卓模拟器:
一、安装node、xCode、androidStudio、jdk(这里有坑后面说)
二、用mac终端开始敲命令
1、安装react命令行工具:npm install -g react-native-cli;
2、初始化一个RN项目:react-native init 'rNapp';rNapp是自己定义的项目名称
3、运行这个项目:react-native run-ios/react-native run-android、
或者用xCode和androidStudio进行运行都可以。
问题来了:在运行react-native run-android的时候,要有安卓模拟器啊。视频上说就一句话:用“emulator -avd a7’’来启动安卓模拟器。
天真的我,跟着敲了,结果“emulator: command not found”。这时候我开始一脸懵逼,emulator是干啥的?-avd是啥啊?a7又是啥???
三、mac安装安卓模拟器(以下使用的都是命令行工具,有些命令和操作我自己现在还不太理解或者有其他更方便的实现方式,深入之后再回来补充吧)。
1、要安装Android SDK。
我自己的做法很傻瓜,第一次用androidStudio打开项目的时候,它的底部就提示了我少东西,推荐安装,我就点了,安装完以后打开项目,根据提示又安装了一个Nexus_6_API_22模拟器,就可以打开项目了。
2、找到SDK路径。
打开androidStudio→File→Other Settings→Default Project Structure出来的第一个路劲就是SDK的路径。
3、用命令打开 cd Library/Android/sdk/tools/;
然后敲android的时候,会报错,The "android" command is deprecated.这属于版本问题。
于是我找到一篇文章:http://www.jianshu.com/p/049871577392,根据文章替换sdk下的tools文件夹。
再敲击.android 就可以弹出Android SDK Manager界面了,选择你需要下载的安装包,点击install下载。
4、下载完,我乐呵呵的去敲击emulator -avd 。
又给我提示emulator: command not found。又是一通查资料,知道我没有配置安卓的环境变量。
还是看到的文章:http://www.jianshu.com/p/84f3baf1682c 。
5、然后我去试emulator -avd。
为什么不加后面的a7呢,这时候我知道a7是模拟器的名字,而我自己的模拟器我还不知道名字。
然后emulator -avd -list-avds,这个命令,找到了我的模拟器Nexus_6_API_22。
再试emulator -avd Nexus_6_API_22 。完美用命令行打开了安卓模拟器!
四、react-native run-android。
你以为到这就结束了吗,太天真了。
找到我的rnAPP目录下,敲击react-native run-android。满心欢喜的等待,结果等来三个问题。
1、FAILURE :Build failed with an exception.
What went wrong :Could not determine java version from ‘9.0.1’。
这个是因为我下载的jdk版本过高了。
卸载:命令行运行:sudo rm -rf /Library/Java/JavaVirtualMachines/jdk9.0.1.jdk;
然后又下载一个8版本的。
2、FAILURE :Build failed with an exception. What went wrong:
problem occurred configuring root project 'rnApp '
Could not resolve al1files for configuration ':classpath'.
Could not find.com.android.tools.build:gradle:3.8.1.
Searched in the following locations:
https: //jcenter.bintray.com/com/android/tools/build/gradle/3.8.1/gradle-3.8.1.pomhttps://jcenter.bintray.com/com/android/tools/build/gradle/3.0.1/grad1e-3.0.1.jar
这个问题是因为,我打开androidStudio之后它提示让我更新,我就傻傻的更新了。
导致项目里gradle-wrapper.properties文件的和build.gradle文件的版本相差太大了。
大神告诉我这两个版本要一一对应。(我现在还不懂是什么意思,待我研究之后再来补充。)
解决方式就是我去重新:react-native init了一个项目。
3、接下来,启动新项目启动起来了。但是模拟器上报错了,一片红.
React Native version mismatch.
JavaScript version: 0.50.4
Native version: 0.51.0
Make sure that you have rebuilt the native code.If the problem persists try clearing the Watchmanandon 0.50.packager caches with"watchman watch-del- all&&1.51.0react-native start--reset-cache'.
这个就是js版本0.50.4和native版本0.51.0版本不匹配了。
解决方式还是重新react-native init xxxx --version 0.50.4,加了版本号。我暂时还没找到一劳永逸的解决方式。
到此,项目算是终于能启动了。期间有很多不必要的弯路,其实就是自己死磕非要用命令行启动项目造成的。也有很多地方虽然问题解决了不知道原理。接下来慢慢学。感激百度到的各位牛人的文章,和群里大神们的教导。