带你从零学ReactNative开发跨平台App开发(九)
ReactNative跨平台开发系列教程:
这是reactnative系列文章第九篇,感觉没有反响,也许大家都忙着搞rn,也许是expo在国内市场不成熟,反正是我先把我自己踩过的坑分享一下,好了,废话不多说,开始撸码,你准备好了吗?
Detaching to ExpoKit
这篇主要说一下分离expo项目,到rn原生混合开发模式。这里引出了expo kit。这是一个强悍的东西,下面我简单以官方的口吻介绍一下expo kit。
expo kit是一个允许你用expo平台把你已经创建的expo项目作为更大的标准native项目一部分的objective-c和java的类库。说白了就是一个类库。当你把expo项目分离后,
你就可以用xcode或者Androidstudio或者react-native init 打开项目。
我们为何要把expo项目detache呢?
因为当我们用expo创建项目后,但我们想调用native modules的时候,这在expo里是不允许的,因为expo是纯js写的,并且不会 “drop down” 到ios或者Android层,然而这也是expo的核心也是expo快速和强大使用的一部分。
然而某些情况下,一些高级开发者,需要用到native的功能,而这些共能,超出了expo提供的范围,那么把expo项目detache,分离出来,就是一个大家通用的做法。
分离出来的项目,可以用xcode打开,也可以用androidstudio运行,并且分离出来的项目对expo kit有依赖关系。我们分离后,也依然依赖expo sdk,也就是说,expo提供的api,我们可以用,但是expo提供的部分服务,我们将不再可以使用,这是一件很不幸的事情。
这里官方给出了几点建议,什么情况下,你应该分离,什么情况下,你不应该分离:
You might want to detach if:
Your Expo project needs a native module that Expo doesn’t currently support. We’re always expanding the Expo SDK, so we hope this is never the case. But it happens, especially if your app has very specific and uncommon native demands.
You should not detach if:
All you need is to distribute your app in the iTunes Store or Google Play. Expo can build binaries for you in that case. If you detach, we can’t automatically build for you any more.
You are uncomfortable writing native code. Detached apps will require you to manage Xcode and Android Studio projects.
You enjoy the painless React Native upgrades that come with Expo. After your app is detached, breaking changes in React Native will affect your project differently, and you may need to figure them out for your particular situation.
You require Expo’s push notification services. After detaching, since Expo no longer manages your push certificates, you’ll need to manage your own push notification pipeline.
You rely on asking for help in the Expo community. In your native Xcode and Android Studio projects, you may encounter questions which are no longer within the realm of Expo.好,依然创建一个新的项目,下面我们来做分离:(分离前的目录结构)
分离后,我们的js文件依然保存,但是他会额外的添加
iosandandroid的文件夹,并且他们都依赖于React Native and on Expo的核心SDK.。下面分离,分离其实很简单,一句话
exp detach
然而,这个过程,将会下载必要的依赖,并且创建
iosandandroid文件夹
给我报错,打脸,让我在配置文件里设置一些debug模式,过程比较慢,很尴尬!
我在这里给他加 了一个debug,他提示我不应该
不过最后还是提示成功了,
现在在看一下我们的目录结构:
Android文件夹就多出来了,这里应为我没有mac环境跳过了ios文件夹,我觉得这就是赤裸裸的歧视了!!
看我下面执行的命令:
react-native run-android
说明我们的项目已经成功分离出来,没有问题很好,很强大。
我的github地址 项目在这里找到!
后续文章持续更新,敬请期待!
文章为作者原创,转载请注明出处。
带你从零学ReactNative开发跨平台App开发(九)的更多相关文章
- 带你从零学ReactNative开发跨平台App开发(二)
ReactNative跨平台开发系列教程: 带你从零学ReactNative开发跨平台App开发(一) 带你从零学ReactNative开发跨平台App开发(二) 带你从零学ReactNative开发 ...
- 带你从零学ReactNative开发跨平台App开发(一)
ReactNative跨平台开发系列教程: 带你从零学ReactNative开发跨平台App开发(一) 带你从零学ReactNative开发跨平台App开发(二) 带你从零学ReactNative开发 ...
- 带你从零学ReactNative开发跨平台App开发-[react native 仿boss直聘](十三)
ReactNative跨平台开发系列教程: 带你从零学ReactNative开发跨平台App开发(一) 带你从零学ReactNative开发跨平台App开发(二) 带你从零学ReactNative开发 ...
- 带你从零学ReactNative开发跨平台App开发(十一)
ReactNative跨平台开发系列教程: 带你从零学ReactNative开发跨平台App开发(一) 带你从零学ReactNative开发跨平台App开发(二) 带你从零学ReactNative开发 ...
- 带你从零学ReactNative开发跨平台App开发(十)
ReactNative跨平台开发系列教程: 带你从零学ReactNative开发跨平台App开发(一) 带你从零学ReactNative开发跨平台App开发(二) 带你从零学ReactNative开发 ...
- 带你从零学ReactNative开发跨平台App开发[expo 打包发布](八)
ReactNative跨平台开发系列教程: 带你从零学ReactNative开发跨平台App开发(一) 带你从零学ReactNative开发跨平台App开发(二) 带你从零学ReactNative开发 ...
- 带你从零学ReactNative开发跨平台App开发(七)
ReactNative跨平台开发系列教程: 带你从零学ReactNative开发跨平台App开发(一) 带你从零学ReactNative开发跨平台App开发(二) 带你从零学ReactNative开发 ...
- 带你从零学ReactNative开发跨平台App开发(六)
ReactNative跨平台开发系列教程: 带你从零学ReactNative开发跨平台App开发(一) 带你从零学ReactNative开发跨平台App开发(二) 带你从零学ReactNative开发 ...
- 带你从零学ReactNative开发跨平台App开发(五)
ReactNative跨平台开发系列教程: 带你从零学ReactNative开发跨平台App开发(一) 带你从零学ReactNative开发跨平台App开发(二) 带你从零学ReactNative开发 ...
随机推荐
- (转)AWK函数
http://wiki.jikexueyuan.com/project/awk/built-in-functions.html-------内置函数 http://wiki.jikexueyuan.c ...
- certificate verify fails (https://gems.ruby-china.org错误
首先:执行这一步报错的背景是: 更换gems源, 通常执行 gem sources --add https://gems.ruby-china.org/ --remove https://rubyge ...
- vmware 实现linux目录映射window本地目录
---恢复内容开始--- 背景: 1,使用lnmp环境 2,代码可以在windows上面写,直接映射到linux的lnmp环境下面 第一步: vmware 新建一个linux虚拟机 一路下一步到完成 ...
- list转换为树结构--递归
public static JSONArray treeMenuList(List<Map<String, Object>> menuList, Object parentId ...
- ES6-Object‘s Extends
依赖文件地址 :https://github.com/chanceLe/ES6-Basic-Syntax/tree/master/js <!DOCTYPE html> <html&g ...
- 解释mysql 语句 ——解释CREATE DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
在我们创建mysql数据库的时候我们经常会用到这句SQL:CREATE DATABASE `test` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ ...
- WINCRIS的使用
附件下载:http://pan.baidu.com/s/1sj7EsOH 1.首先大家先到官网上下载自己的BIOS , 准备一个U盘格式化成FAT/FAT32格式. (网上说U盘的大小不要超过2G,这 ...
- google tensorflow bert代码分析
参考网上博客阅读了bert的代码,记个笔记.代码是 bert_modeling.py 参考的博客地址: https://blog.csdn.net/weixin_39470744/article/de ...
- 【转】SQL SERVER 日期格式化
0 或 100 (*) 默认值 mon dd yyyy hh:miAM(或 PM) 1 101 美国 mm/dd/yyyy ...
- 微信开放平台Android应用的签名
微信开放平台Android应用签名的本质便是我们签名文件keystore的MD5值. keytool -list -v -keystore qj_test.keystore 获得: 别名: naoli ...






