【React Native十日谈】第一日: 开发环境搭建

文本转载自我的一个学生涅磐广广的简书上的系列文章,本人进行重新编辑。
原文链接: React Native01 - 开发环境搭建

前言

本篇的主要内容是 React Native 的环境配置,并不会涉及 React Native 的其他任何内容。之所以会在这里用这么多笔墨,是因为很多计划进军 React Native 的开发人员,就是因为这一步不成功而放弃 React Native(我曾经也是其中一员)。

在这里我给大家提供了一种亲测可行的在 window 上的环境配置方式,在配置过程中可能会因为电脑环境的不同而出现各种奇葩的问题,这个就需要各位自行百度解决了,算是对你学习 React Native 决心的一种检验。废话不多说了,开始跟我一起遨游 React Native 吧。

必须要安装的软件

Chocolatey

Chocolatey 是一个 Windows 上的包管理器,可以简单理解为帮助我们在命令行中安装或者写在软件的工具,此时我们主要是利用该包管理器帮助我们安装 PythonNodejs

安装方式:

@powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin

可能碰到的问题:

因为安装 Chocolatey 访问的是国外的服务器,所以在安装过程中可能会安装很慢或者安装失败,此时建议多试几下:

如果实在不行那就分别到 Python 和 Nodejs 的官网下载这两个软件进行手动安装。

注意: Python 必须下载 Python2 版本

Python2

使用 chocolatey 安装 Python2。

目前不支持 Python3 版本。

chocolatey 安装方式:

choco install python2

到上面提供的官网下载安装包,手动安装。

NodeJS

目前已知 Node7.1 版本无法正常工作

node.js 安装方式:

choco install nodejs.install

到上面提供的官网下载安装包,手动安装。

安装完node后建议设置npm镜像以加速后面的过程

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

Yarn、React Native 的命令行工具(react-native-cli)

Yarn 是 Facebook 提供的替代 npm 的工具,可以加速 node 模块的下载。React Native 的命令行工具用于执行创建、初始化、更新项目、运行打包服务(packager)等任务。

安装方式:

npm install -g yarn react-native-cli

可能碰到的问题:

如果你遇到EACCES: permission denied权限错误,可以尝试运行下面的命令(限linux系统): sudo npm install -g yarn react-native-cli。

Java Development Kit(JDK)

需要JDK 1.8或者更高版本

可以在命令行中输入 java -version 来查看版本号,如果显示 java 不是命令,就说明你没有安装 java。

Java 的安装方式:

  • chocolatey 的安装方式:

choco install jdk8
  • 到java官网下载安装包,手动安装。请移步 java 官网

Android Studio

需要 Android Studio 2.0 或者更高版本。

Android Studio 包含了运行和测试 React Native 应用所需的 Android SDK 和模拟器。

除非特别注明: 请不要改动安装过程中的选项。比如 Android Studio 默认安装了 Android Support Repository,而这也是 React Native 必须的(否则在 react-native run-android 时会报 appcompat-v7 包找不到的错误)。

记得将你的SDK安装到哪里了,后面马上就会用到。

Android Studio 的安装步骤

android studio中文官网下载安装包。安装过程中,确认按钮都勾选了,尤其是Android SDK和Android Device Emulator。

在初步安装完成后,选择 Custom 安装项。

安装完成后,在Android Studio的欢迎界面中选择 Configure | SDK Manager。

在 SDK Platforms 窗口中,选择 Show Package Details在Android 6.0 (Marshmallow)中勾选以下选项

  • Google APIs、

  • Android SDK Platform 23、

  • Intel x86 Atom System Image、

  • Intel x86 Atom_64 System Image

  • Google APIs Intel x86 Atom_64 System Image。

在 SDK Tools 窗口中,选择 Show Package Details,在 Android SDK Build Tools中勾选Android SDK Build-Tools 23.0.1(必须是这个版本)。还要勾选最底部的Android Support Repository。

设置 ANDROID_HOME 环境变量

打开控制面板 -> 系统和安全 -> 系统 -> 高级系统设置 -> 高级 -> 环境变量 -> 新建

具体的路径可能和下图不一致,请自行确认。

推荐安装的工具

Gradle Daemon

开启Gradle Daomon可以极大地提升java代码的增量编译速度。

(if not exist "%USERPROFILE%/.gradle" mkdir "%USERPROFILE%/.gradle") && (echo org.gradle.daemon=true >> "%USERPROFILE%/.gradle/gradle.properties")

将Android SDK的Tools目录添加到PATH变量中

把Android SDK的tools和platform-tools目录添加到PATH变量中,以便在终端中运行一些Android工具。

打开控制面板 -> 系统和安全 -> 系统 -> 高级系统设置 -> 高级 -> 环境变量 -> 选中PATH -> 双击进行编辑,同一个环境变量如果有多个路径,用分号隔开

安卓模拟器-Genymotion

比起Android Studio自带的原装模拟器,Genymotion 是一个性能更好的选择,但它只对个人用户免费。

测试安装

在当前命令行所在路径创建一个React Native项目,

  • 时间会比较长,有VPN的同学,建议打开VPN

react-native init AwesomeProject
  • 结束以后你会得到如下一个目录

进行到项目所在目录

cd AwesomeProject

在模拟器上运行安卓项目

运行之前要保证模拟器已经打开,或者已经连接上真机:

react-native run-android

完成以后,会新建一个命令行窗口,帮我们打开一个端口号为8081的服务器,如果你把这个新建的命令行窗口关了,服务器就关了,就无法实现热更新了。

如果在模拟器或者真机上如下显示就正常了

真机运行项目,无法正常显示解决办法。

  1. 是否打开该软件的弹出框的权限。

  2. 是否和电脑连接同一个网络。

  3. 是否配置IP地址,配置过程如下:

    1. 这时候我们摇一摇手机(这是安卓,iOS是双击屏幕),会出现一个窗口

    2. 点击Dev Settings后,点击Debug server host & port for device,

    3. 设置电脑的无线局域网IP地址和端口号,端口号默认是8081,例如192.168.2.13:8081

    4. 重启这个软件。

修改项目

现在你已经成功运行了项目,我们可以开始尝试动手改一改了:

  • 使用你喜欢的文本编辑器打开index.android.js找到里面的文本进行修改。

  • 然后摇动手机低级Reload刷新(模拟器双击键盘上的R键即可)。

补充

1. react native在iOS上仅支持iOS7以上,Android仅支持Android4.1以上。

中文帮助文档 github地址

2. 由于React Native的版本更新速度很快,如果没有深厚的JavaScript基础,建议选择。
  1. 功能适中,交互一般,不需要考虑特别多的系统原生支持。

  2. 对于部分复杂的应用,可以考虑原生+React Native混合开发。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 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