Expo大作战--针对已经开发过react native项目开发人员有针对性的介绍了expo,expo的局限性,开发时项目选型注意点等
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Expo大作战--针对已经开发过react native项目开发人员有针对性的介绍了expo,expo的局限性,开发时项目选型注意点等相关的知识,希望对你有一定的参考价值。
简要:本系列文章讲会对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这块东西没有详细看,大家可以来和我交流
接下来就开始撸码
已经使用React Native?
本指南旨在为那些已经使用React Native的开发者提供一些关键概念,资源和使用Expo时遇到的差异的简要概述。
什么是expo?
Expo提供了一个共享的本地运行时,所以你不用编写本地代码,你专注于用javascript编写你的React应用程序。您不必担心ios或android的特定设置,甚至不必打开Xcode。 Expo拥有自己的工作流程,包括一个名为XDE的应用程序和命令行界面,使开发和部署变得轻松。如果您曾升级过React Native或本地模块,只需更改版本号,即可享受expo无缝完成此功能的功能。
Expo通过提供由团队维护的额外的经过测试的模块扩展了React Native平台。这意味着你花更少的时间配置和更多的时间建立。
如果你曾经经历过升级模块或安装诸如react-native-maps之类的问题,那么当事情正常时,你会明白的。
expo还提供OTA(空中下载||热更新)更新和推送通知服务。
如果您曾经遇到过在应用程序中发现拼写错误并需要等待Apple批准更改的情况,那么您会欣赏OTA更新 - 只要运行exp发布,就会显示这些更改!你也不限于文本,这也适用于图像和配置更新等资产!
无需重新构建或重新部署您的应用到应用和Play商店。这就像Code Push,如果你以前使用过。但是有一些限制。阅读有关这里的人。
Expo提供了一个我们称之为清单的共享配置文件。通常,您需要更新Xcode plist或Android Studio xml文件以处理更改。例如,如果你想锁定屏幕方向,改变你的图标,自定义你的启动画面或添加/删除权限,你会在app.json中做一次,它将适用于两者。
您通常在Xcode / plist文件或Android studio / xml文件中执行的配置通过app.json处理。例如,如果您想要锁定方向,更改图标,自定义初始屏幕,添加/删除权限和权利(在独立应用程序中),请为Google地图和其他服务配置密钥,您可以在app.json中进行设置。请参阅此处的指南。
借助expo,您可以在expo客户端(可在App / Play商店中使用)工作的同时,与世界上任何地方的任何人分享您的应用程序。扫描二维码,或输入电话号码,我们会向您发送一个链接,将您的应用程序立即加载到您的设备上。
无需通过iTunes连接注册几个外部测试人员,您可以轻松让他们下载expo客户端应用程序,并立即在手机上提供工作版本。
我们讨论我们在app.json中设置的权限,但也有Permissions Api。 app.json中的权限旨在被Android独立应用程序用于相机访问,地理定位,指纹等。另一方面,权限Api用于在运行时请求和验证访问权限。它提供了一个简单的API来询问您的用户推送通知,位置,相机,录音和联系人。
expo如何运作?
由于您使用Javascript编写代码,因此我们将其捆绑在一起并在S3中提供。每当您发布您的应用程序时,我们都会更新这些资源,然后将它们推送到您的应用程序,以便始终获得最新版本。在expo上开发
应用程序默认通过隧道服务从我们的exp / XDE提供服务(我们目前使用ngrok) - 这意味着您不必将设备连接到计算机,甚至不必连接到同一个房间或国家(或行星?我猜它应该从空间开始)作为开发机器,并且您仍然可以实时重新加载,使用热模块重新加载,启用远程JS调试,以及您可以通过React Native正常执行的所有事情。有一点需要注意的是,使用隧道比使用局域网地址或本地主机要慢一点,所以如果可以的话,你应该使用局域网或本地主机。看看如何在exp / XDE中配置它。Expo将您的设备日志传输到exp和XDE,因此您不需要运行adb logcat或iOS等价物 - 来自任何连接到您的应用的设备的console.log / warn /错误消息将自动显示在您的exp / XDE日志窗口。
expo不能做什么
- 有时expo不提供您可能需要的本地模块或API的访问权限。在这种情况下,您可以分离并使用ExpoKit。这使您可以继续使用Expo的基础,但允许您创建和使用任何自定义本机模块。
- 阅读更多关于分离的信息
部署到App / Play商店
当你准备好后,你可以运行exp build:ios或者exp build:android和Expo会构建你的应用并输出一个链接到你需要提交的二进制文件。然后,您可以使用类似Application Loader for iOS的应用程序,或直接上传适用于Android的APK。如果您更愿意在自己的机器上构建应用程序,则可以按照以下步骤操作。
有用的工具和资源
直接从您的浏览器测试和分享Expo功能的最佳方式。将手机指向QR代码,您可以在浏览器中创建沙箱环境,并直接在设备上进行测试。
如果有什么你不明白或想了解更多的信息,这是一个很好的开始。
从expo团队或社区获得帮助的最快途径
Expo Client和SDK都是开源的。如果您想解决某些问题,或者想知道我们如何实现我们的本地模块,欢迎您亲自查看代码!
Useful Commands
在expo开发时,您可以选择使用命令行工具。以下是我们的一些朋友最喜欢的命令和工作流程:
- exp start -c --localhost --ios
- 启动expo服务器,清除缓存,只加载本地主机并在iOS模拟器上打开
- exp start --tunnel
- 启动expo服务器(不要清除缓存)并在隧道上运行expo,以便与任何人分享!
- exp发送2245551234
- 发送一个链接到朋友的电话号码,以便他们可以在手机上查看我正在处理的内容
为什么不用expo(Why not Expo?)
expo尚未准备好用于所有应用程序。有很多情况下,目前的限制可能不适合您的项目。本文档的目的是概述其中的一些情况,以便您最终不会在expo上构建应用程序,并且在遇到障碍时无法克服障碍,无需分离到ExpoKit或弹出使用React Native没有expo。我们正在计划或积极致力于构建下列所有功能的解决方案,如果您认为缺少任何内容,请通过张贴到我们的功能请求委员会来提请我们注意。Expo应用程序不支持后台代码执行(当应用程序没有预先安装或设备正在睡眠时运行代码)。这意味着您不能使用后台地理位置,在后台播放音频,在后台处理推送通知等等。这是一个正在进行的工作。
Expo支持很多设备API(查看边栏中的“SDK API参考”),但并非所有iOS和Android API都可以在Expo中使用:需要蓝牙?对不起,我们还没有建立它的支持的WebRTC?不完全的。我们不断添加新的API,因此如果我们现在没有您需要的东西,您可以使用ExpoKit或关注我们的博客,查看我们每月SDK更新的发布说明。
如果你需要保持你的应用程序(包)的规模非常小,expo可能不是最好的选择。 iOS上的expo应用大小约为25mb,Android大约为20mb。这是因为expo包括一堆API,而不管你是否使用它们 - 这可以让你推动空气更新(热更新)以使用新的API,但是以二进制大小为代价。我们将在未来对此进行定制,以便您可以减小二进制文件的大小。
如果您知道您希望使用特定的推送通知服务(例如OneSignal)而不是expo的推送通知服务/ API,则您需要使用ExpoKit或React Native,而无需使用expo。
expo团队,真诚的向我们列出了expo的局限性,以及expo的有点,我们在项目选型的时候,也需要仔细斟酌!
下一张继续介绍,这一篇主要介绍了:针对已经开发过react native项目开发人员有针对性的介绍了expo,expo的局限性,开发时项目选型注意点等!欢迎大家关注我的微信公众号,这篇文章是否被大家认可,我的衡量标准就是公
众号粉丝增长人数。欢迎大家转载,但必须保留本人博客链接!
以上是关于Expo大作战--针对已经开发过react native项目开发人员有针对性的介绍了expo,expo的局限性,开发时项目选型注意点等的主要内容,如果未能解决你的问题,请参考以下文章
Expo大作战--expo如何使用Genymotion模拟器
Expo大作战--expo的生命周期,expo社区交流方式,expo学习必备资源,开发使用expo时关注的一些问题
Expo大作战(三十二)--expo sdk api之Noifications
Expo大作战(十七)--expo结合哨兵(sentry)进行错误异常记录
Expo大作战--expo中的App Icon,expo中的Assets,expo中的ErrorHandling错误处理
Expo大作战(二十九)--expo sdk api之registerRootComponent(注册跟组件),ScreenOrientation(屏幕切换),SecureStore,