查看: 2025|回复: 0

[手机开发] Expo大作战(二十一)--expo如何分离(detach),分离后可以比react native更有优势,但也失去了expo的部分优势,

发表于 2018-3-21 08:00:01

简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网

我猜去全部机翻+个人修改补充+demo测试的形式,对expo进行一次大补血!欢迎加入expo兴趣学习交流群:597732981

【之前我写过一些列关于expo和rn入门配置的东i西,大家可以点击这里查看:从零学习rn开发】

相关文章:

Expo大作战(一)--什么是expo,如何安装expo clinet和xde,xde如何使用

Expo大作战(二)--expo的生命周期,expo社区交流方式,expo学习必备资源,开发使用expo时关注的一些问题

Expo大作战(三)--针对已经开发过react native项目开发人员有针对性的介绍了expo,expo的局限性,开发时项目选型注意点等

Expo大作战(四)--快速用expo构建一个app,expo中的关键术语

Expo大作战(五)--expo中app.json 文件的配置信息

Expo大作战(六)--expo开发模式,expo中exp命令行工具,expo中如何查看日志log,expo中的调试方式

Expo大作战(七)--expo如何使用Genymotion模拟器

Expo大作战(八)--expo中的publish以及expo中的link,对link这块东西没有详细看,大家可以来和我交流

更多>>

接下来就开始撸码


分离到ExpoKit

ExpoKit是一个Objective-C和Java库,允许您将Expo平台和现有的Expo项目用作较大标准本地项目的一部分 - 您通常会使用Xcode,Android Studio或反应本机初始化创建该项目。

这个是来做什么的?

如果您在XDE中创建了Expo项目并且想要添加自定义本机模块的方式,本指南将解释如何使用ExpoKit来达到此目的。

通常,expo应用程序是用纯JS编写的,从不“下降(drop down)”到本地iOS或Android层。这是expo理念的核心,也是exoi快速而强大使用的一部分。

但是,在某些情况下,高级开发人员需要在expo开箱即用之外的本地功能。最常见的情况是,当一个项目需要特定的本地模块时,它不受React Native Core或Expo SDK的支持。

在这种情况下,Expo允许您从Expo iOS / Android客户端分离纯JS项目(Expo allows you to detach your pure-JS project from the Expo iOS/Android clients),为您提供可以使用Xcode和Android Studio打开并构建的本地项目。这些项目将依赖于ExpoKit,所以你已经构建的所有东西都会像以前一样继续工作。

我们称之为“分离”,因为你仍然依赖expo的SDK,但你的项目不再住在标准的expo客户端。您可以控制本地项目,包括自己配置和构建它们。

我应该分离吗?(Should I detach?)

如果出现以下情况,您可能需要分离

  • 您的expo项目需要expo目前不支持的本地模块。我们一直在扩大expo会的SDK,所以我们希望你永远不会是这样。但是它发生了,特别是如果你的应用程序有非常特定和不常见的本地需求。
如果:
  • 您只需将应用程序分发到iTunes Store或Google Play即可。在这种情况下,expo可以为你制作二进制文件。如果你分离,我们不能再为你自动构建。
  • 编写本机代码让你感到不舒服。分离的应用程序将要求您管理Xcode和Android Studio项目。
  • 您可以享受expo带来的无痛React Native升级版。在你的应用程序被分离后,重做React Native中的更改会对你的项目产生不同的影响,你可能需要根据你的具体情况来计算它们。
  • 你需要expo推送通知服务。分离后,由于Expo不再管理推送证书,因此您需要管理自己的推送通知管道。
  • 你依靠在expo社区寻求帮助。在您的原生Xcode和Android Studio项目中,您可能会遇到不属于expo领域的问题。
说明

以下步骤用于将纯JS项目(例如从XDE创建的项目)转换为依赖于ExpoKit的本机iOS和Android项目。

分离之后,所有JS文件将保持不变,但我们还将在项目文件夹中创建ios和android目录。这些将分别包含Xcode和Android Studio项目,并且它们将依赖于React Native和Expo的核心SDK。

您仍然可以从XDE开发和测试您的项目,并且您仍然可以以相同的方式发布您的Expo JS代码。但是,如果您添加未包含在expo中的本机依赖项,??则其他用户将无法使用expo应用运行您应用的这些功能。您需要自己分发本地项目。

注意:detach目前是alpha功能,您可能会遇到问题。您的项目必须运行Expo SDK 16.0.0或更新版本才能分离。请自行承担风险,并请就您遇到的任何反馈意见或问题与我们联系。

1.安装exp
  • 如果你没有它,运行npm install -g exp来获得我们的命令行库。
  • 如果您之前没有使用过exp或XDE,您需要做的第一件事就是使用exp login登录您的expo户。
2.确保你在app.json中有必要的键

分离需要与构建独立应用程序相同的键。在继续下一步之前,请遵循这些指示。

3.分离

在您的项目目录中运行 exp detach。这将下载所需的依赖关系,并在ios和android目录下创建本地项目。

4.设置并运行您的本地项目

恭喜你,你现在有一个本地项目与expo!按照使用ExpoKit进行开发下的指导来完成设置和运行。

5.进行本??地更改

你可以在Xcode和Android Studio项目中做任何你想做的事情。

要为React Native添加第三方本机模块,应支持诸如react-native link 等非expo特定指令。阅读有关更改ExpoKit项目中本地依赖关系的更多详细信息。

6.分发你的应用程序

从XDE / exp发布你的JS仍然可以工作。只要应用程序重新加载应用程序,您的应用程序的用户就会在其设备上获得新的JS;如果它没有改变,你不需要重建你的本地代码。

如果您确实进行本地更改,那么没有您的本机代码的用户如果尝试使用依赖于这些更改的功能,则可能会遇到崩溃。

如果您决定将您的应用分配为ipa或apk,它会自动打到您应用的发布网址,而不是您的开发XDE网址。阅读关于你的应用的JS网址的高级细节。

一般来说,在将您的应用程序一直用于制作之前,浏览高级 ExpoKit主题指南是一个不错的主意。

下一张继续介绍,这一篇主要介绍了:expo如何分离(detach),分离后可以比react native更有优势,但也失去了expo的部分优势,欢迎大家关注我的微信公众号,这篇文章是否被大家认可,我的衡量标准就是公

众号粉丝增长人数。欢迎大家转载,但必须保留本人博客链接!



回复

使用道具 举报