简要:本系列文章讲会对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 sdk api之 DocumentPicker,Contacts(获取手机联系人信息),Branch
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
-
Expo大作战(三十八)--expo sdk api之 FileSystem(文件操作系统)
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
-
Expo大作战(三十七)--expo sdk api之 GLView,GestureHandler,Font,Fingerprint,DeviceMotion,Brightness
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
-
Expo大作战(三十六)--expo sdk api之 ImagePicker,ImageManipulator,Camera
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
-
Expo大作战(三十五)--expo sdk api之Location!
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
-
Expo大作战(三十四)--expo sdk api之LinearGradient(线性渐变),KeepAwake(保持屏幕不休眠),IntentLauncherAndroid,Gyroscope,
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
-
Expo大作战(三十三)--expo sdk api之MapView(地图),MailComposer(磁力传感计),Lottie(动画)
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
-
Expo大作战(三十二)--expo sdk api之Noifications
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
-
Expo大作战(三十一)--expo sdk api之Payments(expo中的支付),翻译这篇文章傻逼了,完全不符合国内用户,我只负责翻译大家可以略过!
简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
随机推荐
-
【Python】实现简单循环
# -*- coding:utf-8 -*- #猜数字游戏 lucky_num = 6 count = 0 while count < 3: input_num = int(raw_input( ...
-
比较好用的web打印控件&mdash;&mdash;Lodop
前一段时间公司一项目比较特殊,客户要求打印单必须是淘宝上卖的那种三联打印单.如果还是使用原来系统自带的打印的话,就会造成无法打印出来理想的效果,于是找了下相关的打印控件,比较网络上比较流行的几款插件, ...
-
FreeBSD修改root密码错误passwd: pam_chau(www.111cn.net)thtok(): error in service module from:http://www.111cn.net/sys/freebsd/66713.htm
在FreeBSD中修改帐号密码有时候会出现一些错误,针对passwd: pam_chauthtok(): error in service module这样的错误提示,简单整理了以下解决方案:错误提示 ...
-
如何定位到append的当前位置,不用拉滚动条scrollIntoView方法
var bb_mes_con = $('bb_mes_con'); var mes_html = document.createElement('div'); mes_html.setAttribut ...
-
python学习之字符串(下)
----------------------------------------------实际应用中的其他常见的字符串方法 >>>line = "the knights ...
-
【bzoj4817】[Sdoi2017]树点涂色&;&;bzoj3779-重组病毒
题解: 两道几乎差不多的题(所以说当年sdoi考了道原题) 都是将树上一段改为新颜色询问颜色数目 可以把改成新颜色这个操作看成access操作 然后通过线段树+dfs序来维护 另外换根了为什么还可以用 ...
- Kb和KB的区别
-
Markdown 引用
Markdown 使用 > 来标记区块引用,语法及效果如下: > 这是第一级引用 > > > 这是第二级引用 > > 现在回到第一级引用 > > ...
-
2019.01.02 poj1322 Chocolate(生成函数+二项式定理)
传送门 生成函数好题. 题意简述:一个袋子里有ccc种不同颜色的球,现要操作nnn次,每次等概率地从袋中拿出一个球放在桌上,如果桌上有两个相同的球就立刻消去,问最后桌上剩下mmm个球的概率. 第一眼反 ...
-
go语言学习之路(一)Hello World
为什么要使用 Go 语言?Go 语言的优势在哪里? 1.部署简单. 2.并发性好. 3.良好的语言设计. 4.执行性能好. Go环境搭建 Golang下载 国外镜像 https://www.gola ...