zhuSass / blog

不定期更新
0 stars 0 forks source link

React Native 环境篇 #2

Open zhuSass opened 4 years ago

zhuSass commented 4 years ago

学习一次,随处书写。

npm Version

概述

使用React为Android和iOS创建本机应用

React Native将本机开发的最佳部分与React(用于构建用户界面的一流JavaScript库)结合在一起。 少用或多用。您现在可以在现有的Android和iOS项目中使用React Native,也可以从头开始创建一个全新的应用程序。

用JavaScript编写-使用本机代码呈现

React原语渲染到本机平台UI,这意味着您的应用程序使用与其他应用程序相同的本机平台API。 许多平台,一个React。创建特定于平台的组件版本,以便单个代码库可以跨平台共享代码。使用React Native,一个团队可以维护两个平台并共享一种通用技术-React。

面向所有人的原生开发

React Native可让您创建真正的本机应用程序,而不会影响用户的体验。它提供了一套核心的像与平台无关本地组件的ViewTextImage直接映射到该平台的原生UI积木。

无缝跨平台

React组件包装了现有的本机代码,并通过React的声明性UI范例和JavaScript与本机API进行交互。这样就可以为全新的开发人员团队进行本机应用程序开发,并且可以让现有的本机团队更快地工作。

快速刷新

保存后立即查看更改。借助JavaScript的强大功能,React Native可让您以闪电般的速度进行迭代。无需等待本地构建完成。保存,查看,重复。

会谈

React Native团队的成员经常在各种会议上发表演讲。您可以在Twitter上关注React Native团队的最新消息

Facebook支持,社区驱动

Facebook在2015年发布了React Native,并一直保持至今。 在2018年,React Native 在GitHub中任何存储库的贡献者数量中排名第二。今天,React Native得到了来自世界各地的个人和公司的支持,包括Callstack,Expo,Infinite Red,Microsoft和Software Mansion。 我们的社区一直在运送令人兴奋的新项目,并通过诸如React Native Windows和React Native Web之类的仓库来探索Android和iOS以外的平台。

谁在使用React Native?

从成熟的《财富》 500强公司到热门的新兴创业公司,成千上万的应用程序都在使用React Native。如果您好奇使用React Native可以完成什么,请查看这些React Native官方展示柜

与Flutter优缺对比

优势

缺点

RN环境配置

Option:Expo CLI快速入门

cd AwesomeProject npm start || expo start # 运行项目


- 运行您的React Native应用程序
在iOS或Android手机上安装Expo客户端应用程序,然后连接到与计算机相同的无线网络。在Android上,使用Expo应用程序从终端扫描QR码以打开您的项目。在iOS上,按照屏幕上的说明获取链接。

### Option:React Native CLI快速入门

- **安装Node,Python2,JDK**(window)。<br/>  我们建议通过Chocolatey(适用于Windows的流行软件包管理器)安装Node和Python2 。React Native还需要Java SE Development Kit(JDK)和Python 2 的最新版本。两者都可以使用Chocolatey安装。打开管理员命令提示符(右键单击命令提示符,然后选择“以管理员身份运行”),然后运行以下命令:`choco install -y nodejs.install python2 jdk8`.如果您已经在系统上安装了Node,请确保它是Node 8.3或更高版本。如果您的系统上已经有JDK,请确保它是版本8或更高版本。您可以在Node的[Downloads页面](https://nodejs.org/en/download/)上找到其他安装选项。

- **安装React Native CLI**。<br/> 
Node随附npm,可让您安装React Native命令行界面。
在命令提示符或外壳程序中运行以下命令:`npm install -g react-native-cli`

- **Android开发环境**<br/>
如果您不熟悉Android开发,则设置开发环境可能会有些乏味。如果您已经熟悉Android开发,则可能需要配置一些内容。无论哪种情况,请确保仔细遵循以下几个步骤。<br/>
1.安装Android Studio
下载并安装Android Studio。当提示您选择安装类型时,请选择“自定义”设置。确保选中以下所有框旁边的框:

    - Android SDK
    - Android SDK Platform
    - Performance (Intel ® HAXM)([有关AMD,请参见此处](https://android-developers.googleblog.com/2018/07/android-emulator-amd-processor-hyper-v.html))
    - Android Virtual Device

    然后,单击“下一步”以安装所有这些组件。设置完成后,将显示“欢迎”屏幕,请继续执行下一步。<br/>
    2.安装Android SDK。Android Studio默认情况下会安装最新的Android SDK。但是,使用本机代码构建React Native应用程序Android 9 (Pie)特别需要SDK。<br/>
    3.配置ANDROID_HOME环境变量。React Native工具需要设置一些环境变量,以便使用本机代码构建应用程序。
    4.将平台工具添加到Path。在Windows控制面板中的“ 系统和安全性”下,打开“系统”窗格,然后单击“ 更改设置...”。打开“ 高级”选项卡,然后单击“ 环境变量...”。选择路径变量,然后单击编辑。单击“ 新建”,然后将“平台工具”的路径添加到列表中。

[更多环境配置详情](https://facebook.github.io/react-native/docs/0.60/getting-started)

## RN 基本命令行操作
```cmd
react-native init NameProject # 创建RN项目
react-native init NameProject --version X.XX.X # 使用特定版本
react-native init NameProject --template typescript # 创建RN TS项目
react-native start --reset-cache 
expo init NameProject # 也可以用expo

react-native run-android # 开发环境下运行RN项目(android)
react-native run-android --variant=release # 测试应用的发布版本,设置签名后,此选项才可用

reqact-native link xxx # 将第三方库与原生进行关联如果发生错误使用gradlew clean清理下

adb shell input keyevent 82 # 利用adb工具命令式打开控制台选项
adb reverse tcp:8081 tcp:8081 # 命令提示符下,然后重新运行项目
adb install apk文件路径
adb uninstall xxx(applicationId) 卸载

rm -f r $TMPDIR/react-* #重置打包程序缓存
watchman watch-del-all # 清除守望者手表

gradlew clean # 清理构建android文件
gradlew bundleRelease # 生成(Google Play)APK,会将运行您的应用程序所需的所有JavaScript捆绑到AAB
gradlew assembleDebug # 编译并打Debug包
gradlew assembleRelease # 编译并打Release的包

npm cache clean --force # npm清除包缓存
yarn cache clean # yarn清除包缓存

# 环境遇到的问题
# bug描述:Starting a Gradle Daemon, 1 busy and 6 stopped Daemons could not be reused, use --status for details
# 解决思路:停止运行Daemon进程
gradle --stop # Gradle会杀死任何闲置了3个小时或更长时间的守护程序,因此您不必担心手动清理它们。
gradle --status # 停止守护程序后,可查看下状态
  1. 创建typescript项目 的时候可能会报错,具体详情可点击此处查看即可。
  2. 上面出现的程序名gradlew需要特别说明下,说起gradlew就要聊聊gradle.介绍简单来说就是gradle会快速迭代版本,如果合作开发项目会导致成员自己下载gradle,导致版本不一,从而手忙脚乱,所以干脆包装起来,统一。因为gradle处于快速迭代阶段,经常发布新版本,如果我们的项目直接去引用,那么更改版本等会变得无比麻烦。而且每个项目又有可能用不一样的gradle版本,这样去手动配置每一个项目对应的gradle版本就会变得麻烦;所以需要包装,引入gradle-wrapper,通过读取配置文件中gradle的版本,为每个项目自动的下载和配置gradle,就是这么简单。我们便不用关心如何去下载gradle,如何去配置进项目来。下面一张图对gradle与RN的关系。
    通过gradle wrapper命令就可以愉快的gradlew了。

问题总结

RN项目基本所需库

关于react-native我认为最好的环境配置详情可参考tarotaro react-native更详细更全面。