react native环境搭建+genymotion

一开始准备用weex做app,鉴于坑太多,应该是用react native,接下来演示怎么配置环境,可以看react native中文官网,上面也有大概的配置教程。因为一开始想用weex,和react native一样也需要安卓环境,所以先把这块说一下。
1.jdk
下载jdk并且配置jdk环境变量,这步是基础也没难度。不详细说明
jdk下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
然后配置环境变量网上也有很多教程,百度经验里也有,随便一看即可搞定,但还是要小心一些,建议最后用java,javac,java -version 这三个命令在命令行里检测一下,如果输出提示命令和版本信息就是成功了。
2.安卓环境变量和sdk
2.1sdk
下载Android studio,地址:https://developer.android.com/studio/index.html
我选择的是推荐版本携带sdk包的,然后安装过程会选择两个安装路径一个是studio是个sdk的安装位置建议不要选择c盘,然后记住选择的sdk安装位置。安装完成后会打开Android studio,然后选择settings设置——>android sdk把其他需要的sdk工具装上。具体可以看react中文http://reactnative.cn/docs/0.31/getting-started.html 按要求打钩下载,如下是我的设置选择


sdk platforms Android6或7都可以,注意sdk tools里要按要求下载全。

2.2环境变量
和jdk环境变量一样,这里也需要配置安卓环境变量,大家去网上搜具体配置这个教程。注意Android Home的地址不要写错就是sdk的安装目录,刚才说过最好记住sdk的安装位置。

然后检查是否安卓环境配置成功,cmd里输入命令adb测试一下。这里我测试的时候出现了奇怪的问题,我配置好了安卓环境变量后在cmd里输入adb出现相应提示则没问题,之后用weex生成的脚手架项目里git输入adb却提示没有配置安卓环境变量,因此上网查了一下,在这里我们需要:

注意是4步哟,sdk目录地址写绝对路径就可以。再次在项目里git 输入adb就不报错了。*所以这里建议在全局和项目目录下都输入adb都测试没问题再进行下一步,免除后患!*

3.安装node和npm这也是最基本的,去node.js官网下载就可以了,然后去Python官网下载一个Python2,2开头的版本,注意react native官网说不支持python3。最后建议装git,命令行工具这个大家应该都知道。

4.用npm装yarn、和react native命令行工具react-native-cli。 Yarn是Facebook提供的替代npm的工具,可以加速node模块的下载。React Native cli命令行工具用于执行创建、初始化、更新项目、运行打包服务(packager)等任务。如下:把这俩一起装了

npm install -g yarn react-native-cli

设置npm和yarn的镜像源

npm config set registry https://registry.npm.taobao.org --global
npm config set disturl https://npm.taobao.org/dist --global
yarn config set registry https://registry.npm.taobao.org --global
yarn config set disturl https://npm.taobao.org/dist --global

5.接下来可以初始化项目

react-native init 项目名
cd 项目名
执行adb

注意初始化成功后在项目工程目录里我们先git执行一下adb确保安卓环境没问题。

6.这里我装了genymotion模拟器
去官网需要注册并下载https://www.genymotion.com/,需要注册登录再下载的。注意下载with virtualBox版本,然后安装完成后需要登录,就是刚才注册的账号。登录后进入这个页面做两个操作

这里我已经添加一个虚拟设备了就是your virtual devices,刚安装完成是空白没有虚拟设备的,第一个操作点击+Add添加一台设备,我随便选了第一个,然后会下载,这里极容易断,不要放弃等它下载完。。第二个操作点击settings,选择adb设置sdk就是刚才一直用的sdk安装路径,如下:

7.启动项目,点击genymotion里的start启动我们刚才安装好的的虚拟设备,是这个样子的,此时我们刚才初始化的项目还没连上虚拟设备

然后在我们的工程项目里执行adb devices会列出当前启动的虚拟设备,能检测到说明没问题,如下图里最后一行显示的就是刚才我们开启的genymotion那台虚拟设备。

最后项目目录里执行

react-native run-android

打开genymotion,欢迎页面出来了,成功,修改一下文字,重新加载一遍,成功。

第一次认不是热加载形式,就是改变文件内容需要手动刷新的,这里设置一下热加载,以后内容这里就会自动刷新,Windows是执行ctrl+m,选择第四个hot reloading如下

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


react 中的高阶组件主要是对于 hooks 之前的类组件来说的,如果组件之中有复用的代码,需要重新创建一个父类,父类中存储公共代码,返回子类,同时把公用属性...
我们上一节了解了组件的更新机制,但是只是停留在表层上,例如我们的 setState 函数式同步执行的,我们的事件处理直接绑定在了 dom 元素上,这些都跟 re...
我们上一节了解了 react 的虚拟 dom 的格式,如何把虚拟 dom 转为真实 dom 进行挂载。其实函数是组件和类组件也是在这个基础上包裹了一层,一个是调...
react 本身提供了克隆组件的方法,但是平时开发中可能很少使用,可能是不了解。我公司的项目就没有使用,但是在很多三方库中都有使用。本小节我们来学习下如果使用该...
mobx 是一个简单可扩展的状态管理库,中文官网链接。小编在接触 react 就一直使用 mobx 库,上手简单不复杂。
我们在平常的开发中不可避免的会有很多列表渲染逻辑,在 pc 端可以使用分页进行渲染数限制,在移动端可以使用下拉加载更多。但是对于大量的列表渲染,特别像有实时数据...
本小节开始前,我们先答复下一个同学的问题。上一小节发布后,有小伙伴后台来信问到:‘小编你只讲了类组件中怎么使用 ref,那在函数式组件中怎么使用呢?’。确实我们...
上一小节我们了解了固定高度的滚动列表实现,因为是固定高度所以容器总高度和每个元素的 size、offset 很容易得到,这种场景也适合我们常见的大部分场景,例如...
上一小节我们处理了 setState 的批量更新机制,但是我们有两个遗漏点,一个是源码中的 setState 可以传入函数,同时 setState 可以传入第二...
我们知道 react 进行页面渲染或者刷新的时候,会从根节点到子节点全部执行一遍,即使子组件中没有状态的改变,也会执行。这就造成了性能不必要的浪费。之前我们了解...
在平时工作中的某些场景下,你可能想在整个组件树中传递数据,但却不想手动地通过 props 属性在每一层传递属性,contextAPI 应用而生。
楼主最近入职新单位了,恰好新单位使用的技术栈是 react,因为之前一直进行的是 vue2/vue3 和小程序开发,对于这些技术栈实现机制也有一些了解,最少面试...
我们上一节了了解了函数式组件和类组件的处理方式,本质就是处理基于 babel 处理后的 type 类型,最后还是要处理虚拟 dom。本小节我们学习下组件的更新机...
前面几节我们学习了解了 react 的渲染机制和生命周期,本节我们正式进入基本面试必考的核心地带 -- diff 算法,了解如何优化和复用 dom 操作的,还有...
我们在之前已经学习过 react 生命周期,但是在 16 版本中 will 类的生命周期进行了废除,虽然依然可以用,但是需要加上 UNSAFE 开头,表示是不安...
上一小节我们学习了 react 中类组件的优化方式,对于 hooks 为主流的函数式编程,react 也提供了优化方式 memo 方法,本小节我们来了解下它的用...
开源不易,感谢你的支持,❤ star me if you like concent ^_^
hel-micro,模块联邦sdk化,免构建、热更新、工具链无关的微模块方案 ,欢迎关注与了解
本文主题围绕concent的setup和react的五把钩子来展开,既然提到了setup就离不开composition api这个关键词,准确的说setup是由...
ReactsetState的执行是异步还是同步官方文档是这么说的setState()doesnotalwaysimmediatelyupdatethecomponent.Itmaybatchordefertheupdateuntillater.Thismakesreadingthis.staterightaftercallingsetState()apotentialpitfall.Instead,usecom