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 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个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...
随机推荐
- 无监督学习——K-均值聚类算法对未标注数据分组
无监督学习 和监督学习不同的是,在无监督学习中数据并没有标签(分类).无监督学习需要通过算法找到这些数据内在的规律,将他们分类.(如下图中的数据,并没有标签,大概可以看出数据集可以分为三类,它就是一个 ...
- Dynamo(Amazon分布式存储引擎)
参考资料: http://blog.csdn.net/zgl_dm/article/details/6291984 http://blog.csdn.net/cywosp/article/detail ...
- GitLab 修改主机名,更换 IP 配置,配置 SMTP
# find / -name gitlab.yml /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml /var/opt/gitla ...
- wnmp(windows+nginx+mysql+php)环境搭建和配置
要求 必备知识 熟悉基本编程环境搭建. 运行环境 windows 7(64位); nginx-1.4.7;MySQL Server 5.5php-5.4.39-nts 下载地址 环境下载 Nginx是 ...
- PHP之高性能I/O框架:Libevent(一)
Libevent 是一个用C语言编写的.轻量级的开源高性能I/O框架,支持多种 I/O 多路复用技术: epoll. poll. dev/poll. select 和 kqueue 等:支持 I/O, ...
- TCP滑动窗口
TCP利用滑动窗口实现流量控制基本的数据单位不是数据段,而是字节 滑动窗口本质上是描述接受方(本地)的TCP数据报缓冲区大小的数据,发送方根据这个数据来计算自己最多能发送多长的数据.如果发送方收到接受 ...
- 代码部署工具walle(一)
一.概述 代码部署上线.权限控制.一键版本回滚,github地址:https://github.com/meolu/walle-web walle是基于php语言做的,所以需要一个php的安装环境. ...
- 3D转弯保护区长啥样?
3D转弯保护区长啥样? 2015-12-06 刘崇军 风螺旋线 在课本中.规范中看到的转弯保护区一直是平面化的样子.我们知道副区是由主区外扩而成,但具体怎样精确外扩无从知晓:我们知道主区边界至副区边界 ...
- BFS算法(——模板习题与总结)
首先需要说明的是BFS算法(广度优先算法)本质上也是枚举思想的一种体现,本身效率不是很高,当数据规模很小的时候还是可以一试的.其次很多人可能有这样的疑问,使用搜索算法的时候,到底选用DFS还是BFS, ...
- spring cloud zuul在使用中遇到的坑 : 转发时自动去掉prefix
在使用zuul的时候遇到的坑总结一下: 逐渐增加更新以后遇到的 1.在路由的时候莫名其妙的把serviceId给去掉,导致404.比如请求:/serviceId/search/book,zuul会把s ...