下面我就作为一个手机native开发小白来聊聊如何在Windows环境下搭建react-native:
第1步:安装最新版Java
我们在Windows下面搭建react-native环境就是为了开发Android程序,必须有Java环境。
下载安装JDK 注意根据自己的机型选择x64还是x86。 官网地址: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 配置环境 这个比较简单,直接看度娘:
下载安装Android SDK
直接下载SDK Tools,然后通过SDKManager安装react-native运行所需要的环境,注意选择x64还是x86。
官网下载地址: https://developer.android.com/sdk/installing/index.html
国内下载地址: http://androiddevtools.cn/
配置Android环境
这个跟配置JDK环境变量基本一样,看度娘: http://jingyan.baidu.com/article/f71d603757965b1ab641d12a.html, 记得把SDK目录和platform-tools目录添加到环境变量中。platform-tools加入环境变量是因为它内置了adb命令,方便我们查看设备。
设置SDK
根据官网提示,打开Android SDK Manager,我们需要安装以下项目的最新版本:
Tools/Android SDK Tools Tools/Android SDK Platform-tools Tools/Android SDK Build-tools Android 6.0 (API 23)/SDK Platform Extras/Android Support Library Extras/Local Maven repository for Support Libraries 直接看图安装: 第3步:安装C++
编译node.js的C++模块时需要用到,我也就一说,其实大部分同学肯定是已经安装了的,因为大家早就已经用上node.js。需要安装的童鞋可以在 https://www.visualstudio.com/ 下载Visual Studio 2013或2015,也可选择Windows SDK、cygwin或mingw等其他C++环境。
第4步:安装node.js
这个不用说了,前端童鞋怎能没有node环境!?
第5步:安装react-native命令行工具
折腾了辣么多的依赖环境,终于来到激动人心的部分,我们要开始折腾reac-native啦!首先就是要通过npm安装react-native命令行工具:
$ npm install -g react-native-cli 也可以在 react-native github 通过git clone或者Download ZIP下载解压,然后执行以下代码:
$ cd react-native-cli $ npm install -g react-native-cli是一个终端命令,它可以完成其余的设置工作,刚才这条命令会往你的终端安装一个叫做react-native的命令。
第6步:创建react-native项目
有了react-native命令行工具,我们就可以用它在创建初始化一个react-native项目:
$ react-native init AwesomeProject 这个命令会初始化一个工程、下载React Native的所有源代码和依赖包,最后在AwesomePrjoect/iOS/AwesomeProject.xcodeproj和AwesomeProject/android/app下分别创建一个新的XCode工程和一个gradle工程。
如果你网络不怎么样,这里会耗时相当相当久,甚至经常因为网络的原因下载项目失败!所以 react-native中文官网 推荐你使用淘宝镜像:
$ npm config set registry https://registry.npm.taobao.org 当然如果你也可以使用vpn加速,不过我推荐你使用中文官网推荐的 完整的绿色纯净新项目包 。
第7步:运行packager
为了避免一会儿run-android报警告,我们现在先通过下面命令开启运行packager:
$ cd AwesomeProject $ npm start 如果你碰到了ERROR Watcher took too long to load的报错,请尝试将这个文件node modules/react-native/packager/react-packager/src/FileWatcher/index.js中的MAX WAIT_TIME值改得更大一些。
运行packager的目的是让node开启一个服务来实时将我们项目的.js文件编译成功.jsbunde文件,我们可以通过 http://localhost:8081/index.android.bundle?platform=android 来访问到这个文件。 这就是react-native开发native程序的亮点之一,react-native通过实时编译并获取这个文件来做到native app实时热更新。
第8步:链接设备或者模拟器
如果正确配置了Android SDK环境变量,我们在docs命令控制行中运行 adb devices 应该可以看到下面界面: 我们看到列表为空,是因为我们还未连接任何设备。我通过USB接入手机,再运行看看: 我们可以看到设备号为 JNIJP7NFZ5JZYDWK 已经连接成功,这就是我那吊炸天的红米手机! 我们还可以运行Android模拟器, react-native中文官网 推荐 Genymotion 。不过Genymotion依赖VirtualBox(虚拟机),如果你懒得折腾,还可以下载其他模拟器,比如 BlueStacks 等等。
第8步:编译运行Android
我们进入AwesomeProject目录, $ cd AwesomeProject ,然后在AwesomeProject目录下运行 $ react-native run-android ,就会构建工程并自动安装到你的模拟器或者设备,同时启动用于实现动态代码加载的Node服务。说的轻巧,第一次运行的时候,会下载 gradle 文件,然而在我们的办公网络环境运行就会报下面的错: 我的解决办法是:
先到 http://androiddevtools.cn/ 找到gradle-2.4-all.zip这个文件的下载地址: http://pan.baidu.com/s/1c0dcgfe, 将它下载到本地。 然后将E:/AwesomeProject/android/gradle/wrapper/gradle-wrapper.properties中的distributinotallow= https://services.gradle.org/distributions/gradle-2.4-all.zip 改为distributinotallow=file:///E:/AwesomeProject/gradle-2.4-all.zip,让它本地离线下载。 graddle构建过程中会下载很多jar包,如果出现下载失败,多重试几次。这里简单解释一下gradle(其实我也不太懂,囧...),我的理解是,graddle其实就是一种自动化构建工具,它通过依赖管理自动化编译测试部署等过程产生具体的apk,类似我们前端常用的grunt,gulp等工具。ok,如果你运行顺利,就能在模拟器或者设备上看到一个名为AwesomeProject的Android App,前提是要确保如第7步所说的,你的设备已经正确连接。说实话,我运行的时候,事情远没这么顺利,再看一个奇怪的报错:
解决办法 : 将android/build.gradle文件中的 classpath 'com.android.tools.build:gradle:1.3.1' 改为 classpath 'com.android.tools.build:gradle:1.2.3' 。猜测是插件包不兼容导致。
**第9步:运行程序 ** 此时我们便可以打开真机运行AwesomeProject程序啦,初次运行可能会遇到一些坑:
程序白屏 请找到并开启AwesomeProject的悬浮窗权限。 设置 --> 其他应用管理 --> 已下载 --> 点击AwesomeProject --> 权限管理 --> 显示悬浮窗 --> 允许 。 miui系统的设置在此处 。 Unable to download JS bundle 如果此时你看到一个大红色的报错,那么你成功也不远啦!这个报错是因为app获取不到packager生成的jsbundle文件,我们打开AwesomeProject,摇晃一下设备,就会看到下面的界面: 我们可以设置本地服务器环境解决: Dev settings -> Debug server host & port for device -> 设置电脑IP:port
点击 Reload JS 成功的话就可以看到我们期待已久的Hello World!
第10步:调试程序
再看一下我们通过摇晃设备弹出的菜单选项:
Reload JS 我们修改项目上任何js代码,都可以通过 Reload JS 命令查看到最新的改动; Debug JS 这个命令可以 帮助我们在chrome的调试控制台调试react-native代码,我们在chrome浏览器打开 http://localhost:8081/debugger-ui ,然后点击设备的 Debug JS 就可以在控制台看到我们程序中打印的console.log,我们还可以断点调试。 Disable Live Reload 这个命令默认打开,我们开发过程中保存代码的同时,设备就会实时刷新。 检查元素 通过 检查元素 我们可以在设备上面看到我们的css元素布局,不过这个功能跟chrome比,真的弱爆了。 Disable Perf Monitor 打开可以实时显示程序渲染帧频。 Dev Settings 打开开发调试设置。