ReactNative入门(一)——环境搭建及第一个RN项目—HelloWorld

2023-10-31

ReactNative入门——本篇以及接下来的几篇有关RN的文章,是默认你对前端相关知识如Node,React,以及原生移动端Android可以熟练使用的情况下(最起码达到了解会用的程度)为前提的!不然你就需要先去了学习前端(React为主)以及Android端知识了!另外,文章的内容都是在Windows环境下进行的!

ReactNative是个什么东西?这里我就不做详细讲解了,直接去官网查看即可!https://www.reactnative.cn/简单来讲,就是一种跨平台开发技术,可以使用前端语言React去开发原生安卓和ios应用,目前除了RN外,类似的技术还有uni-app(nvue)和Flutter

环境搭建

参考官网:https://www.reactnative.cn/docs/environment-setup

1.去Nodejs官网下载nodejs并安装,选择LTS版本即可!

2.去oracle官网下载安装JDK,并配置环境变量!这里我们选取java11版本,原因是如果你使用最新版的AndroidStudio并且Gradle构建工具的版本在7.0以上时强制要求jdk版本最低为11,如果你安装1.8版本的话就只能使用低版本的AS以及低版本的Gradle,而且很可能会在你后面的编译打包过程中出现不必要的错误!
另外你在安装完AndroidSDK后,会自带JavaJDK环境:

在这里插入图片描述

安装在PC上的JDK和Android自带的JDK有什么区别?

主要区别就是你所使用的编译方式:

  • 如果你通过AndroidStudio开发工具编译,比如运行应用到手机或Build APK时会使用AndroidSDK自带的JDK环境(如上图,当然你也可以修改为PC上的JDK环境,AndroidSDK自带就是为了防止你的pc上没有安装)。
  • 如果你是在cmd或powershell命令行下,使用gradlew命令进行编译时,这是就会使用到PC上安装的JDK环境了。

3.安装AndroidStudio

4.安装VSCode!其实我比较喜欢WebStrom,集成环境比较强大,开发体验也很好,因为用惯了AndroidStudio,IDEA!奈何收费,所以使用轻量级的前端比较流行的编辑器VSCode,也是相当不错的!

5.可以根据rn官网建议,使用npm切换源,这样在安装第三方的一些库时,速度会很快!

在这里插入图片描述
如果你选择安装了yarn,那就可以用yarn代替npm命令了!

创建项目

使用命令行创建RN项目:

npx react-native init HelloWord

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
项目创建成功!

需要注意的是,你在百度一些rn的开发教程时,文章里时长会告诉你直接用命令 :

react-native xxx

如:

react-native run-android

此时就会报错,因为这是老版本的用法,新版本需要使用npx命令:

npx react-native init HelloWord
npx react-native run-android
npx yarn android

使用VSCode打开刚创建的HelloWord项目:
在这里插入图片描述
index.js即为程序入口,App.js可以理解为UI的入口,我们可以在APP.js中修改UI首页及路由配置等等!

准备运行程序到手机:

1.选择VSCode顶部工具栏终端选项:
在这里插入图片描述
2.输入命令:npx yarn android未安装yarn就使用npx react-native run-android
运行完命令,首先会自动下载对应的gradle版本,然后会自动进行android项目的编译,需要一定的时间,耐心等待即可!
不出意外的话意外发生了,编译报错了,如下图:
在这里插入图片描述
意思就是没找到我的AndroidSDK路径,这是因为我的AndroidSDK并没有安装在默认路径,而是放在了D盘自定义路径!我们打开android\local.properties文件,发现没有?那我们就创建一个,并添加如下代码:

sdk.dir=D\:\\SDK\\Android\\Sdk

在这里插入图片描述

sdk.dir=你的androidSDK路径,再次执行npx yarn android

在这里插入图片描述

启动服务成功会弹出(注意一定不要有其它资源占用8081端口号),你在rn中打印的log会在这里显示:

在这里插入图片描述
编译:

在这里插入图片描述

第一次编译时间会稍长,因为它要下载很多安卓环境需要的一些库文件!

在这里插入图片描述

注意点:首次安装app到手机需要你配置Bundle Location,具体方法为摇晃手机,弹出选择框,选择Change Bundle Location,填入你pc的ip地址如:http://192.168.1.xxx:8081

时间着实有点长啊啊啊啊…,将近15分钟,不过这是首次,后面再编译就快了!

手机APP界面:

在这里插入图片描述

说好的HelloWord呢?别急,打开App.js,修改代码:

import React from 'react';
import type { Node } from 'react';
import {
  SafeAreaView,
  StatusBar,
  StyleSheet,
  Text,
  View,
} from 'react-native';

const App: () => Node = () => {
  return (
    <SafeAreaView>
      <StatusBar barStyle='dark-content' backgroundColor='#fff' />
      <View style={styles.container}>
        <Text style={{ color: '#000', fontSize: 30, fontWeight: 'bold' }}>HelloWord</Text>
      </View>
    </SafeAreaView>
  );
};

const styles = StyleSheet.create({
  container: {
    flexDirection: 'column',
    alignItems: 'center',
    justifyContent: 'center',
    backgroundColor: '#fff',
    height:'100%',
    width: '100%'
  }
});

export default App;

按Ctrl+S保存,app会自动刷新UI:

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ReactNative入门(一)——环境搭建及第一个RN项目—HelloWorld 的相关文章

  • 如何将本地主机 IP 地址转发到 Android 模拟器?

    我知道可以将端口从我的开发机器转发到 Android 模拟器 但是这是如何完成的呢 我在 android developers 网站上找到了解决方案 但我不明白他们的说明是什么意思 有人对此有明确的指示吗 我的开发机器运行的是 Window
  • ANTLR4 的最小示例 Gradle 项目(带有 antlr 插件)是什么?

    我创建了新的 Gradle 项目 添加了 apply plugin antlr and dependencies antlr org antlr antlr4 4 5 3 to build gradle Created src main a
  • 如何使用 Gson 跳过空条目

    使用 Gson 反序列化 JSON 时 有没有办法跳过 JSON 数组中的空条目 text adsfsd title asdfsd null text adsfsd title asdfsd 生成的 List 有 3 个条目 第二个条目为空
  • Xamarin:找不到“libmonodroid.so”模拟器错误

    我已经遇到这个问题几天了 但还没有找到解决方案 我一直在使用Android 7 0 ARM armeabi v7a 我的模拟器的图像 因为它太慢了 我一直在尝试使用Android 7 0 Intel Atom x86 64 with HAX
  • Android模拟器收不到推送通知

    我在谷歌云上使用推送通知 但是由于某种原因我无法在模拟器上接收推送通知 然而 当我在真实设备上测试时 同一个应用程序确实会收到通知 有其他人遇到过这个问题或找到解决方案吗 模拟设备具有网络访问权限 并且与真实设备具有相同的 Android
  • 如何在运行时更改android应用程序名称和图标?

    安装 Android 应用程序后 当您按下应用程序中的按钮时 是否可以动态更改应用程序图标和名称 在运行时 这是到目前为止的代码 getPackageManager setComponentEnabledSetting new Compon
  • 具有多个 orderBy 的 Android firebase 查询

    我想检索我的 firebase 数据库中所有类型为 福音 的数据 这是我的数据库 DatabaseReference infoRef FirebaseDatabase getInstance geReference child info i
  • 如何在 jetpack compose 中预览对话框?

    我有这个代码 Composable fun SomeDialog Dialog onDismissRequest properties DialogProperties Preview showBackground true Composa
  • 尝试运行我的 Espresso 测试时 RecyclerViewMatcher 中出现 NullPointerException

    我想跑Espresso Testing on my Android project 第 1 步 找到我的RecyclerView 第 2 步 检查上的项目RecyclerView 第一步成功运行 但第二步应该检查recycler view项
  • 如何过滤EditText的输入?

    我想过滤一个的输入EditText 只允许使用数字和字母 首先我使用TextWatcher处理最后一个输入字符 但是当您移动光标或将某些内容粘贴到EditText 这个方法失败了 现在我想知道有没有办法过滤非法输入并反馈给用户 Add In
  • 使用 sdk 3.0 在 Facebook 墙上发布

    我试图在由其 ID 定义的用户墙上发布一条消息 但作为响应 我收到错误 未知方法 我的代码是 final Bundle params new Bundle params putByteArray message Test getBytes
  • Android 中的弹出消息

    我正在开发一个应用程序 我想创建一条弹出消息 在我们不关闭时该消息将保持稳定 我想要一些教程来帮助我制作警报对话框 提前致谢 我认为您正在搜索 对话框 框 从而可以向用户显示警报消息 确认消息等 欲了解更多信息 请参阅此 http deve
  • RecyclerView onItemClickListener 不工作

    我正在研究回收视图并尝试对 recyclerview 的每个项目使用点击侦听器界面 这是我的活动课程 public class LegacyHomeActivity extends ActivityBaseDrawer private Li
  • 如果没有当前类的引用,svgLoader 无法工作

    这是我的主类 通过这个类 我通过 url 从 api 获取数据 并创建一个适配器类来维护它 但发生了意外错误 这是MainActivity java public class MainActivity extends AppCompatAc
  • 为并行的小型已知冻结进程创建匿名 AsyncTask 是一个好习惯吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 例如 您要做一些需要几秒钟的事情 并且不想冻结您的 UI 线程 对吗 您可以使用 AsyncTask 但您不想创建外部 或内部 类来解决小冻结问
  • 如何获取 Android 版 Chromium 的源代码

    我正在尝试为 Android 构建 Chromium 开源浏览器 我已经提到过 Visit http code google com p chromium wiki AndroidBuildInstructions http code go
  • 旋转后,精灵和矩形位置在 Libgdx 中未对齐

    我有以下代码 其中紧密映射的精灵 矩形和多边形在 libgdx 中以相同角度旋转 旋转后矩形与精灵不对齐 虽然精灵在绘制时会旋转 但旋转后坐标和尺寸保持不变 矩形的情况并非如此 请参阅下面的代码和结果图 public void rotate
  • 注意通知持续时间

    是否可以将抬头通知的持续时间设置为无限 现在它只显示 5 秒 已经尝试过不同的事情 例如更改类别 但持续时间始终为 5 秒 这是我的代码 Notification notification notificationBuilder setCa
  • 在Android中创建自定义按钮类

    我正在尝试为我的 Android 应用程序创建自定义按钮类 public class TicTacButton extends Button 我已经在里面设置了所有构造函数TicTacButton并创建了自定义方法和属性 在我的主要活动中
  • 如何解决“布局有超过 80 个视图,对性能不利”?

    我正在做一个有点复杂的布局 只是我无法修复 LINT 指示的错误 黑莓浏览次数超过 80 对性能不利 这是布局

随机推荐

  • Java解析zip文件,并识别压缩包里面的文件转换成可操作的IO流

    前几天项目遇到一个棘手的问题 批量上传人员的证件照 因为java操作文件夹不好操作 最后决定把存放人员证件照的文件夹压缩成zip文件 通过java去解析 然后把里面的文件转成list集合 这里使用的jdk提供的 java util zip包
  • Python3链接HIVE

    几个必要的pip 如果用anaconda 安装pyhive的时候会附带都给安装上 pip install pyhive pip install thrift pip install sasl pip install thrift compi
  • PyQt输入部件:QKeySequenceEdit快捷键输入部件简介和使用案例

    PyQt输入部件 QKeySequenceEdit快捷键输入部件简介和使用案例 QKeySequenceEdit是PyQt中的一个输入部件 用于接受用户输入的快捷键序列 它提供了一个用户友好的界面 允许用户直接按下键盘上的按键来定义快捷键
  • python web开发笔记--如何采用uwsgi来部署你的Django项目

    接上一文 python web开发笔记 MAC上Django uwsgi构建总结 最近对于采用uwsgi进行成功部署自己的项目已经成功搞定 因此写下这篇博客 这绝对是一篇值得需要的人读的用心好博文 废话不多少 开始正题 1 进入你的项目目录
  • 阿里云STS获取临时授权

    获取阿里云oss授权 public function sts url https sts aliyuncs com action AssumeRole RoleArn rolearn RoleSessionName client Durat
  • STM32-FreeRTOS源码下载及移植步骤(基于Keil)

    FreeROTS源码获取及基于Stm32移植 获取源码 其实找资料没有那么复杂 官网就是最好的地方了 FreeRTOS的官网是 FreeRTOS官网 当然了 这个网站是全英文的 不过没关系 我们可以简单了解一下 如下图 在这个网页里点击左侧
  • 快速安装最新版Burp Suite Professional

    官网下载链接 https portswigger net burp releases JDK 官方下载 https www oracle com java technologies downloads jdk19 windows 一路默认安
  • 文件的流

    一 文件名词解释 文件 是存贮在某种介质上的 如磁盘 磁带等 并具有文件名的一组有序信息的集合 流设备 大多数的字符设备 如键盘 打印机等 传输的信息均由 一组顺序出现的字符序列组成 文件系统 操作系统对系统的软件资源 不论是应用软件和系统
  • IDEA 项目突然出现异常无法启动时的有效解决办法 ...

    解决方法有效的前提是 项目本身是可以正常启动的 但是因为某些原因无法正常启动 原因包括但不限于以下几种 不小心删除了项目中的文件 导致无法启动 项目很久没更新 更新之后 导致无法启动 项目更新之后出现很多报错信息 导致无法启动 通常做法 根
  • 抖音、快手、B站的广告投放原理

    抖音 快手 B站的广告投放原理 文章目录 抖音 快手 B站的广告投放原理 TOC 文章目录 广告投放原理 编者按 本文来自微信公众号 鸟哥笔记 ID niaoge8 节选自 信息流广告入门 作者 宁阿姨 作者写的挺到位的 相互学习 共同进步
  • Unity网络编程之Photon Server(四)

    前言 上篇我们学习了Unity客户端如何和Photon服务器建立连接 这篇是如何与服务器进行数据的交互 惯例 基于上篇的服务器项目MyGameServer Unity客户端项目进行进一步的学习 客户端与服务器交互流程图解 前面我们有谈到 当
  • MySQL语句优化

    文章目录 1 MySQL的执行顺序 2 基础SQL优化 2 1建表优化 使用varchar代替char 使用 数值 代替 字符串 类型 字段设置为not null 批量插入性能提升 2 2查询优化 select 具体字段 避免在where子
  • 关于Adams View Error MSC_LISENSE_FILE=D:\MSC.......证书错误的解决方案

    首先右键我的电脑 gt 属性 gt 高级系统设置 gt 环境变量 gt 变量名字MSC LICENSE FILE 变量值是lisense dat的地址 在上述操作完成后将lisense dat的名字改为lisense lic
  • String部分方法

    package com javahexin hexin public class string public static void main String args String str dadad String str1 str 判断两
  • 第二十章 Spring5.X bean 的⽣命周期和⼆次处理

    1 Spring bean的 命周期 的init和destroy 法 2 bean的 次加 Spring5 x后置处理器 BeanPostProcessor 什么是BeanPostProcessor 是Spring IOC容器给我们提供的
  • Linux 查看各文件夹大小命令du -h --max-depth=1

    Linux 查看各文件夹大小命令du h max depth 1 du abcDhHklmsSx L lt 符号连接 gt X lt 文件 gt block size exclude lt 目录或文件 gt max depth lt 目录层
  • mysql -n_mysql top n 问题

    日常工作中 经常要查询分组的前几名或查询数据的前几条记录 第5条到第十条 等 TOP N分析法就是通过TOP N算法从研究对象中得到所需的N个数据 并从排序列表中选取最大或最小的N个数据 这就是一个TOP N算法 mysql中用limit
  • (6/300)一阶线性非齐次常微分方程的通解

    一阶线性非齐次常微分方程的通解 首先应该认识方程的形式 dy dx P x y Q x 然后就来思考怎么去解这个方程了 我们最终希望是得到一个y f x 的形式 怎么解呢 先通过线性代数的知识进行引入 求AX b的通解 那么我们先求得A 0
  • MATLAB 信号处理仿真入门实验

    MATLAB 信号处理仿真入门实验 实验目的 熟悉 Matlab 工具的基本用法 掌握 Matlab 代码编写方法 理解序列的离散时间傅里叶变换 理解 DFT 结果的频谱能量泄露 理解 DFT 和 DTFT 的对应关系 理解信号加窗的作用
  • ReactNative入门(一)——环境搭建及第一个RN项目—HelloWorld

    ReactNative入门 本篇以及接下来的几篇有关RN的文章 是默认你对前端相关知识如Node React 以及原生移动端Android可以熟练使用的情况下 最起码达到了解会用的程度 为前提的 不然你就需要先去了学习前端 React为主