MacOS系统实现React-Native跨平台开发(IOS和Android)

一、React-Native环境搭建

 

(1)参考官网地址:https://reactnative.cn/docs/getting-started.html

 

   1》安装相应的node环境、(npm、yarn)包管理器、(watchman)文件检测服务、

      (react-native-cli)脚手架、(CocoaPods)第三方包依赖管理器

      (注:具体安装的cmd就不贴了,不会的网上搜吧)

 

appledeMacBook-Pro:~ apple$ node -v
v12.11.1

appledeMacBook-Pro:~ apple$ npm -v
6.11.3

appledeMacBook-Pro:~ apple$ yarn -v
1.19.1

appledeMacBook-Pro:~ apple$ react-native -v
react-native-cli: 2.0.1
react-native: n/a - not inside a React Native project directory

appledeMacBook-Pro:~ apple$ brew -v
Homebrew 2.2.0
Homebrew/homebrew-core (git revision fd693a; last commit 2019-11-21)

appledeMacBook-Pro:~ apple$ watchman -v
4.9.0

appledeMacBook-Pro:~ apple$ pod --version
1.8.4

 


 

  2》使用cli脚手架初始化项目

 

 


 

安装过程中,会卡在这一步(不会太久,因环境而异,不超过60s)

 

 


 

随后会蹦出来:

 

(node:62939) UnhandledPromiseRejectionWarning: Error: Failed to install CocoaPods dependencies for iOS project, which is required by this template.
Please try again manually: "cd ./firstApp/ios && pod install".
CocoaPods documentation: https://cocoapods.org/
    at runPodInstall (/Users/apple/Appleyk/github/react/react-native-example/firstApp/node_modules/@react-native-community/cli/build/tools/installPods.js:99:13)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
(node:62939) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 2)
(node:62939) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

 


 

注意这个:

 

Please try again manually: "cd ./firstApp/ios && pod install".

 

莫慌,往下看

 


 

3》注意Native官网友情提示

 

 


 

我们看下我们的版本是多少,vscode打开项目,看下package.json 的依赖如下:

 

 

ok,正好符合官网说的第二条,我们点进去看一下:

 

 


 

 

第二部分操作完后(需要一些时间),我们将以下的内容复制粘贴到ios文件夹下的Podfile文件中的第一行

 

source 'https://mirrors.tuna.tsinghua.edu.cn/git/CocoaPods/Specs.git'

 

 


 

 

保存后,我们在当前目录下,执行命令(下载第三方依赖包):pod install

 

 


 

由于博主之前装过了(时间比较久,大概15分钟左右),所以,再次install的时候,走的本地缓存就比较快了(5s不到)

 

 


 

安装完成后,提示这样就算OK了:

 

Generating Pods project
Integrating client project

[!] Please close any current Xcode sessions and use `firstApp.xcworkspace` for this project from now on.
Pod installation complete! There are 33 dependencies from the Podfile and 37 total pods installed.
appledeMacBook-Pro:ios apple$ 

 


 

 

二、安装XCode

 

  直接在App Store中搜索,下载或更新即可:

 

(1)找到App Store

 

 

(2)搜&下载|更新

 

 

下载下来的App信息如下:

 

 


 

(3)打开XCode,目睹芳容

 

 


 

 

 

(4)创建一个(打开)Helloworld的项目,如下

 

 


 

点击左上角的开始按钮,运行在模拟器上的效果如下:

 

 

 

三、安装Andriod Studio&配置SDK

 

 

 

 


 

 

(1)官网说,下载、配置AS时要翻墙

 

 

      其实,真实走下来,博主这边时没有翻墙的,下面提供百度网盘的AS(MacOS版)下载地址:

 

 

     链接:https://pan.baidu.com/s/149T66JtVs74nisuUioOZ5A  密码:sdyq

 


 

(2)安装as应用后,直接打开(注意,第一次打开时,会提示你没有找到sdk,你需要找到AS安装的位置,配置一下)

 

 

 

 


 

编辑Contents/bin/idea.properties内容,再最后一行添加内容:disable.android.first.run=false

 

 


 

配置SDK

 

 


 

 


 

至于SDK PlatForms 、 SDK TooLs 里面够需要勾选哪些,参考官网就行了,不做过多说明

 

 

(3)安装完SDK后,我们还需要配置下ANDROID_HOME都环境变量

 

   配置很简单,直接参考官网都来就行,不再做过多说明

 

 

配完后,记得source以下,使配置文件立即生效!!!,如我机器上配置的内容如下:

 

 


 

然后保存,随即source一下:

 

 


 

(4)创建第一个安装模拟器(如果用外挂的,请自行配置,如夜神安卓模拟器等)

          

 


 

 


 

 


 

博主安装的虚拟(仿真)模拟器如下:

 

 


 

5)还有一个地方要交代以下,android studio用到了grandle构建工具,其默认位置在:

 

 


 

 

一般来说,基于系统默认指定的位置我们不动就行了,如果想动的话,自行搞定吧,不是多难的事情了。

 


 

 

四、运行ios和androd

 

(1)运行ios应用

 

  使用react-native run-iosyarn ios 即可,这里我们选择后者,走一波看看

 

 


 

稍等片刻后,我们便可以看到本地启动了一个server,如下:

 

 

其目的,是通过bundle把本地react-native中的index.js(就是我们写的移动端的代码)传输(安装)到我们的模拟器上,如下:

 

 


 

百分百后,我们就可以在仿真器上看到我们的demo(当然是初始化项目的时候,脚手架默认给我们创建好的demo示例)效果了

 

 


 

(2)运行android应用

 

 注意,这个不要关!!!

 

 


 

终端中,再次输入 yarn android

 

 


 

稍等片刻,便可看到android模拟器运行的效果,来个整体的对比,看一下:

 

 


 

 

五、编写代码,定制我们的App内容

 

(1)vscode打开firstApp项目,将App.js中的内容删改后,如下:

 

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

const App: () => React$Node = () => {
  return (
    <>
      <StatusBar barStyle="dark-content" />
      <SafeAreaView>
        <View>
         <Text style={{fontSize:40}}>你好,朋友,
         欢迎打开我的第一个移动端App,祝你玩的愉快!</Text>
        </View>
      </SafeAreaView>
    </>
  );
};

export default App;

 

 

(2)保存后,效果如下

 

 

 

 


 

 

六、关于Android打包(apk)& IOS打包(ipa)

 

 

(1) Android Studio 打包

 

 


 

 


 

 


 

 


 

 

 


 

 


 

 


 

 

 


 

 


 

最后,我们定位到目录~/android/app/release/,找到我们的apk如下:

 

 

此apk,就可以在安卓手机上下载、安装、使用了

 


 

 

(2)XCode 打包后面再说

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: Electron和React Native都是用于构建跨平台应用程序的工具,但它们的实现方式和用途略有不同。下面是它们各自的优缺点: **Electron** 优点: - Electron使用Web技术(HTML、CSS、JavaScript等)构建桌面应用程序,因此开发人员可以使用现有的Web开发技能和工具来构建应用程序。 - Electron在多个平台上都能提供相同的用户体验,可以在Windows、macOS和Linux等操作系统上运行。 - Electron具有丰富的第三方库和插件生态系统,可以加速应用程序的开发和扩展。 缺点: - Electron的应用程序相对较大,因为它需要包含应用程序代码和整个Electron框架。 - Electron应用程序可能会出现性能问题,因为它需要在本地运行Web技术,而不是原生代码。 - Electron应用程序在某些方面可能会缺乏操作系统特定的功能或外观。 **React Native** 优点: - React Native使用JavaScript和React构建本机移动应用程序,因此它可以提供与原生应用程序相同的性能和用户体验。 - React Native具有跨平台开发的优势,可以在iOSAndroid等操作系统上运行。 - React Native具有活跃的社区和生态系统,有大量的第三方库和插件可用,可以加速应用程序的开发和扩展。 缺点: - React Native相对于原生开发可能会有一些限制或障碍。 - React Native需要针对每个平台进行特定的优化和调整,因为每个操作系统都有不同的约束和要求。 - React Native的性能可能会受到JavaScript运行时的限制,尤其是在处理大量数据或执行复杂操作时。 总的来说,Electron和React Native都具有各自的优缺点。如果开发人员已经掌握了Web技术并且需要构建桌面应用程序,那么Electron可能是一个不错的选择。如果需要构建本机移动应用程序并且需要更好的性能和用户体验,那么React Native可能更适合。 ### 回答2: Electron和React Native是两种流行的跨平台应用开发框架,它们分别用于开发桌面应用和移动应用。下面是它们各自的优缺点比较: Electron的优点: 1. 跨平台性强:Electron可以在Windows、Mac和Linux等多种操作系统上运行,开发一次即可在多个平台上使用。 2. 前端技术栈:Electron使用HTML、CSS和JavaScript进行开发,因此熟悉前端开发的人员可以快速上手。 3. 社区活跃:Electron拥有一个庞大的开源社区,提供了丰富的插件和扩展,开发者可以借助这些工具提高开发效率。 4. 高性能:Electron使用Chromium作为渲染引擎,具备出色的性能和良好的用户体验。 Electron的缺点: 1. 资源占用较大:Electron的桌面应用体积较大,占用内存较多,可能导致一些低配置的设备性能下降。 2. 外观不一致:由于Electron开发的应用会使用不同平台上的本地控件,可能导致应用在不同操作系统上的外观不一致。 React Native的优点: 1. 跨平台性强:React Native可以同时开发iOSAndroid应用,并且提供了一致的用户界面和用户体验。 2. 性能较好:React Native的底层代码是以原生组件的形式运行,相较于传统的混合应用开发框架,性能更好。 3. 社区支持:React Native具有庞大的开源社区,提供了丰富的组件和工具,开发者可以快速构建功能丰富的移动应用。 4. 热更新:React Native支持热更新,可以在不重新编译应用的情况下进行代码更新。 React Native的缺点: 1. 学习曲线陡峭:相对于Electron,对于不熟悉React和JavaScript的开发者来说,学习React Native可能需要更多的时间。 2. 第三方插件:尽管React Native提供了很多组件和API,但某些特定功能的实现可能需要依赖第三方插件或原生模块。 综上所述,Electron适用于开发跨平台的桌面应用,而React Native适用于开发iOSAndroid的移动应用。选择哪种框架取决于项目需求、开发团队的技术栈和资源限制等因素。 ### 回答3: Electron和React Native是两个流行的跨平台开发框架,各自具有一些优点和缺点。 首先,Electron是一个基于Web技术的框架,使用HTML、CSS和JavaScript来构建桌面应用程序。它的主要优点是具有广泛的兼容性,可以在Windows、macOS和Linux等多个操作系统上运行。由于使用了Web技术,它也具备开发效率高、可扩展性强、前端开发者易于上手等特点。 然而,Electron也有一些缺点。首先,它的应用程序比较占用系统资源,有时候运行速度较慢。其次,由于使用了Web技术,Electron的应用程序在视觉体验方面可能不如原生应用。此外,Electron需要将整个Web引擎和应用程序打包在一起,导致应用文件较大。 相比之下,React Native是一个使用JavaScript构建原生移动应用程序的框架。它的主要优点是可以开发同时运行在iOSAndroid平台上的应用,且性能接近原生应用。React Native还具有热重载和热更新的特性,可以在开发过程中实时预览和调试应用。 然而,React Native也有一些缺点。首先,由于需要负责桥接JavaScript和原生代码,React Native的开发学习曲线较陡峭,不太适合没有前端经验的开发者。其次,由于React Native并非直接运行在原生环境中,一些特定的原生功能可能需要使用原生模块或插件进行集成。 综上所述,Electron和React Native各有优点和缺点。选择哪个框架应该根据具体需求和项目特点来决定,如需开发跨平台的桌面应用,Electron可能更适合;如需开发原生移动应用且性能要求较高,React Native可能更合适。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值