[React Native Android安利系列]搭建React Native Android环境

news/2024/9/9 14:08:59

欢迎大家收看react-native-android系列教程,跟着本系列教程学习,可以熟练掌握react-native-android的开发,你值得拥有
https://segmentfault.com/blog...

(PS,和聊一聊系列写在一起也实在是没辙, 谁知道如何新建专栏,给我留个言.....)

React-Native的横空出世,满足了前端工程师们的愿景,摆脱了浏览器,前端开发者们又有了一个方向。但是本人认为,ReactNative更像是套了一层前端壳子的原生开发,要想了解RN还是需要多多理解原生开发的。废话不多说,想了解更多的RN心灵鸡汤,自己去百度就好了。

搭建react-native的文章虽然很多,但大多数都是搭建js层面的,没有结合原生android和android开发去讲。这一套教程,将会更多的结合原生的安卓去讲react-native。

1. 环境

首先,我们需要搭建一个开发环境。无论是window/mac/linux中的哪一个,必须要具备的条件有以下几点

1.1 安装jdk

windows的话,在cmd中执行java -version看就行,mac/linux的话。在终端下,直接执行java -version命令进行查看,如果没有,请百度"jdk安装与环境变量配置"。直到使用java -version的时候,出现了如下图所示的信息,则证明你安装成功了(如图1.1.1)。
151012_w1zW_1177792.png
图1.1.1

1.2 安装nodejs

nodejs的官网上有各个系统的下载包,window下可以直接下载exe可执行的node,然后把node.exe所在的路径,添加到环境变量中即可,这样安装更加干净。直到,在windows下的CMD,或者mac下的终端任意目录下,输入node,可以出现如图2.3.1所示即可。
103643_G2bE_1177792.png
图2.3.1

1.3 安装NPM

一般来讲,安装了nodejs,也会顺带着安装上npm,不过有的时候,我们需要单独安装,windows下,如果使用了node.exe的话,可以自行百度一下 "windows安装npm" 按照说明安装npm,并且把npm添加到环境变量中去。直到在终端或者CMD任意目录下,执行npm出现如图1.3.1所示信息,则意味着,你安装成功了。
103725_UFOf_1177792.png
图1.3.1

1.4 安装react-native-cli

这个工具是react-native的命令行工具,是我们接下来运行工程的基础。安装的话,直接使用。

npm install -g react-native-cli

命令进行安装即可,mac/linux下的话,可能会报错:
npm ERR! Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/react-native-cli'
这个时候,证明你的权限不够,可以在命令前面加上sudo:

sudo npm install -g react-native-cli

1.5 安装android sdk

这里建议把android studio与android sdk一起安装,android的官网上即可下载与安装,有bundle版的话,更加的省事。

1.6 安装安卓模拟器

如果有安卓手机的话,更推荐使用安卓手机进行真机调试,如果没有的话,我们也可以通过安卓模拟器进行调试,windows的话,建议下载blue stack(下载安装即可),mac/linux的话,可以使用android sdk里面自带的avd,创建新的设备进行调试。

2. react-native的helloworld

接下来,我们从一个使用了android studio与react-native的hello world入手。开启我们的react-native-android之旅。

2.1 创建工程

我们挑一个干净的文件夹来初始化我们的工程。windows的话,通过dos命令行(程序中查找cmd进入)。linux/mac的话,通过bash进入到文件夹下,执行以下命令创建工程,如图2.1.1

react-native init hellowReact

232831_0EIl_1177792.png
图2.1.1
等待片刻,我们会看到生成了一个新的项目(helloReact),生成的项目里面包含了IOS版本与Android版本的默认项目。

2.2 用android studio打开

此时我们可以使用android studio打开,新建项目下的android文件夹,如图2.2.1所示。
095226_S25n_1177792.png
图2.2.1
打开工程后,我们可以看到下方开始编译bundle,如图2.2.2。
095241_twjF_1177792.png
图2.2.2
等待build gradle的过程比较漫长,需要耐心等待一下。build好之后,我们就能看到在我们的andriod studio中出现了新建的工程。
如果发现没有build,那么请看看控制台,是否提示没有安装什么gradle,如果是的话,点击进行安装即可,如图2.2.3。
095457_vEgB_1177792.png
图2.2.3

2.3 将安卓工程编译并安装到机器上

在准备就绪后,工程上方的工具栏,会出现可以编译的按钮(如图2.3.1所示)我们点击绿色的运行按钮
095833_3Vlk_1177792.png
图2.3.1
如果使用了bluestack的话,请把bluestack打开,如果使用手机调试的话,请把手机的开发人员选项打开,并且把USB调试选项打开。我们这里直接使用了手机调试(如图2.3.2的调试列表中出现了我们连接的手机)。
095939_7FvN_1177792.png
图2.3.2
无论你用哪种方式,在点击完绿色的运行按钮之后,都会看到选择设备的列表。选择自己的设备,然后点击OK。开始编译(如图2.3.3)。
100048_iM5s_1177792.png
运行完成之后,我们果然看到了。。。。。。。BUG(如图2.3.4)
100352_Eraf_1177792.png
图2.3.4
不过,如果你运行到了这一步,恭喜你,你已经将react的安卓项目成功的编译并安装到手机上了。
出现这个BUG的原因主要是由于我们的app调试阶段回去远程寻找我们的js,而默认,它回去本地寻找,所以我们接下来要干两件事情,1. 搭建可以访问js的服务。 2.让手机上的react应用去按照这个服务寻找JS

2.4 搭建服务

用windows的CMD或者MAC/linux的终端,进入到hellowReact目录下(我们用react-native init创建的工程),然后执行,结果如图2.4.1:

react-native start

101114_GbgU_1177792.png
图2.4.1

运行成功后,我们看到react-native利用了本机的8081端口,开启了一个js的服务,我们访问一下(结果如图2.4.2所示)。
http://localhost:8081/index.a...
(PS:第一次访问编译会有点慢)
101314_rZky_1177792.png
图2.4.2

2.5 设置app寻找js的地址

接着,我们要进行第二步---让手机上的react应用去按照这个服务寻找JS
我们打开手机上那个报错的APP(hellowReact),然后摇一摇。(是的,摇一摇,不过不是微信)此时会出现开发者工具,如图2.5.1所示
101639_gFlu_1177792.png
图2.5.1
当然,你要是使用bluestack的话,也行,左侧工具栏里面有摇一摇。
如图2.5.2,点击Dev Settings,点击最下方的Debug server host & port for device,
101943_2hWD_1177792.png
图2.5.2
会弹出配置项,这个配置项就是寻找js的地址啦:

那么地址如何填呢?
如果是真机调试的话,手机最好和自己的电脑在一个局域网下(使用了同一个wifi也可以),如果是bluestack的话,则不用管这个了。
windows电脑,请在CMD命令下,输入ipconfig查看自己的ipv4地址。或者用电脑右下角的查看网络连接,来查看自己的ipv4地址。如果是mac/linux的话,查看一下网络设置,上面会有写。自己的ip地址。
在配置项里面填写自己的ip地址:8081,如图2.5.3
102925_Kyjz_1177792.png
图2.5.3

2.6 重新加载js,并运行成功

点击确定,返回主界面。再摇一摇手机,然后点击reload js。运行结果如图2.6.1
103126_n9gI_1177792.png
图2.6.1
于是,我们的hello world就大功告成啦,至此,我们的React-Native-Android环境也算大功告成了。

上述讲解,可以在这里找到代码例子:

https://github.com/houyu01/re...
不要走开,马上回来,下一篇,我们会介绍,如何在ReactNative中利用js编写我们想要的界面


http://lihuaxi.xjx100.cn/news/255085.html

相关文章

详解javascript: void(0);

原文 简书原文:https://www.jianshu.com/p/08ae8cbeb3be 什么是javascript: void(0); 我们经常会使用到 javascript:void(0) 这样的代码,那么在 JavaScript 中 javascript:void(0) 代表的是什么意思呢?  javascript:void(0) 中最关键的是 v…

LeetCode实战:二叉搜索树中第K小的元素

背景 为什么你要加入一个技术团队?如何加入 LSGO 软件技术团队?我是如何组织“算法刻意练习活动”的?为什么要求团队的学生们写技术Blog 题目英文 Given a binary search tree, write a function kthSmallest to find the kth smallest ele…

这个插件竟打通了Python和Excel,还能自动生成代码!

作者 | 云朵君来源丨数据STUDIO加载一个Jupyter插件后,无需写代码就能做数据分析,还帮你生成相应代码?没错,只需要加载这个名为Mito的小工具包,用Python做数据分析,变得和用Excel一样简单:介绍以…

Mybatis超强大的动态 SQL 大全

欢迎关注方志朋的博客,回复”666“获面试宝典读完这篇文章里你能收获到Mybatis动态SQL语句大全Mybatis中如何定义变量Mybatis中如何提取公共的SQL片段1. If 语句需求:根据作者名字和博客名字来查询博客!如果作者名字为空,那么只根…

魔与道的反复较量 反垃圾邮件技术

反垃圾邮件武器库不同的反垃圾邮件产品采用的技术有所不同,但总体来说,不外乎以下几种技术,其中,针对垃圾邮件的核心技术有贝叶斯智能分析、垃圾邮件评分、垃圾邮件指纹识别。转载于:https://blog.51cto.com/aonlin/17074

【单调栈 前缀和 异或】7.21序列求和

还要再细细思考的奇妙思路 题目描述 小A最近喜欢上了关于区间max的问题。她定义一个区间的价值是max(ai)(l<i<r)∗(alxoral1xor...xorar)max(ai)(l<i<r)∗(alxoral1xor...xorar)她想要知道&#xff0c;一个序列所有的连续子序列价值之和是多少。 输入格式 第一行一…

鱼佬:电信客户流失预测赛方案!

Datawhale干货 作者&#xff1a;鱼佬&#xff0c;武汉大学硕士2022科大讯飞&#xff1a;电信客户流失预测挑战赛赛事地址&#xff08;持续更新&#xff09;&#xff1a;https://challenge.xfyun.cn/topic/info?typetelecom-customer&chds22-dw-zs01赛题介绍随着市场饱和度…