简要:本系列文章讲会对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这块东西没有详细看,大家可以来和我交流

更多>>

接下来就开始撸码


构建独立应用程序

本指南旨在帮助您创建适用于iOS和Android的expo用程序的独立二进制文件,并将其提交至Apple App Store和Google Play Store。

构建iOS独立应用需要Apple开发者帐户,但构建Android独立应用不需要Google Play开发者帐户。如果您想提交给任一应用商店,则需要该商店的开发者帐户。

阅读关于部署到应用商店的最佳实践是一个不错的主意,以确保您的应用能够很好地被接入进入Apple和Google市场。

1.安装exp

XDE目前不包括构建独立应用程序的选项,因此我们需要exp。运行npm install -g exp来获取它。

如果您之前没有使用过exp,那么您需要做的第一件事就是使用exp login登录您的expo账户。

Windows用户必须启用WSL。我们建议从Windows应用商店挑选Ubuntu。确保至少启动一次Ubuntu。之后,使用Admin powershell运行:Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

2.配置app.json

{
"expo": {
"name": "Your App Name",
"icon": "./path/to/your/app-icon.png",
"version": "1.0.0",
"slug": "your-app-slug",
"sdkVersion": "XX.0.0",
"ios": {
"bundleIdentifier": "com.yourcompany.yourappname"
},
"android": {
"package": "com.yourcompany.yourappname"
}
}
}

iOS bundleIdentifier和Android的package字段使用反向DNS表示法,但不必与域相关。将“com.yourcompany.yourappname”替换为适用于您的应用的任何内容。

您可能并不感到惊讶,因为名称,图标和版本都是必需的。

slug是你的应用程序的JavaScript发布到的URL名称。例如:expo.io/@community/native-component-list,其中community是我的用户名,native-component-list是slug。

sdkVersion告诉expo什么expo运行版本使用,这对应于一个React本地版本。尽管在示例中列出了“XX.0.0”,但您的app.json中已经有一个sdkVersion,除非您想更新到Expo的新版本,否则不应更改它。

还有其他选项可能需要添加到app.json中。我们只涵盖了需要的内容。例如,有些人喜欢配置自己的内部版本号,链接方案等等。我们强烈建议您阅读完整规范的app.json配置。这也是您最后一次检查我们对App Store元数据的建议的机会。

3.开始构建

运行exp build:android或exp build:ios。如果你还没有为这个项目运行一个包(if you don’t already have a packager running for this project),exp会为你启动一个。

如果您选择为Android构建

您第一次构建项目时,系统会询问您是要上传密钥库还是让我们为您处理。如果您不知道密钥库是什么,请将其留给我们()。否则,请随意上传自己的。

[exp] No currently active or previous builds for this project.

Would you like to upload a keystore or have us generate one for you?
If you don't know what this means, let us handle it! :) ) Let Expo handle the process!
) I want to upload my own keystore!

注意:如果您选择第一个选项,然后决定上传您自己的密钥库,我们目前提供一个选项,通过运行exp build:android --clear-credentials,从我们的构建服务器中清除您当前的Android密钥库。 这是不可逆的,所以只有在你知道你在做什么的时候才运行这个命令! 您可以通过运行exp fetch:android:keystore来下载密钥库的备份副本。 如果您没有密钥库的本地副本,则无法将新版本的应用发布到Play商店。 您唯一的选择是生成一个新的密钥库并将您的应用程序重新上传为一个新的应用程序。您可以详细了解代码签名和密钥库在Android文档中的工作方式。(**)

如果您选择为iOS构建

您可以选择让exp客户为您创建必要的凭据,同时还有机会提供您自己的覆盖。 您的Apple ID和密码在本地使用,永远不会保存在Expo的服务器上。

[exp] Making sure project is set up correctly...
[exp] Your project looks good!
[exp] Checking if current build exists... [exp] No currently active or previous builds for this project.
? How would you like to upload your credentials?
(Use arrow keys)
❯ Expo handles all credentials, you can still provide overrides
I will provide all the credentials and files needed, Expo does no validation

我们问您是否希望我们处理您的证书或使用您自己的证书。 与Android密钥库类似,如果您不知道证书是什么,请让我们为您处理。 如果您确实需要上传您自己的证书,我们建议您按照制作p12文件的优秀指南进行操作。

注意:Expo构建服务支持普通的App Store分发(distribution )以及企业分发(distribution )。 要使用后者,您必须是“Apple开发人员企业计划”的成员。 只有普通的Apple开发人员帐户只能构建可提交给Apple App Store的应用程序,只有企业开发人员帐户才能构建可使用企业分发方法分发的应用程序。 当您调用exp build:ios时,请使用--apple-enterprise-account标志。 目前,独立应用程序构建器不支持“ad hoc”分发证书或设置配置文件。

4.等待它完成建设(Wait for it to finish building)

我们将打印一个您可以访问的网址(例如expo.io/builds/some-unique-id)以查看您的构建日志。或者,您可以通过运行exp build:status来检查它。完成后,您会看到.apk(Android)或.ipa(iOS)文件的网址 - 这是您的应用。将链接复制并粘贴到浏览器中以下载文件。

注意:我们为iOS启用bitcode,因此iOS的.ipa文件比用户可用的最终App Store下载要大得多。有关更多信息,请参阅应用程序细化

5.在您的设备或模拟器上测试它(Test it on your device or simulator)

您可以将.apk拖放到您的Android模拟器中。这是测试构建成功的最简单方法。但它不是最令人满意的。

  • 要在Android设备上运行它,请确保您已安装了与adb一起安装的Android平台工具,然后运行adb install app-filename.apk,并在设备上启用USB调试并插入设备。
  • 要在iOS模拟器上运行它,首先通过运行exp build:ios -t simulator来构建您的expo项目,然后使用运行exp build:status时完成的链接下载tarball。通过运行tar -xvzf your-app.tar.gz解压缩tar.gz。然后,您可以通过启动iOS Simulator实例运行它,然后运行xcrun simctl install booted <app path>和xcrun simctl launch booted <app identifier>。
  • 要使用Apple TestFlight测试设备版本,请将.ipa文件下载到本地机器。您已准备好将您的应用上传到TestFlight。在TestFlight中,点击加号图标并创建一个新的应用程序。确保你的bundleIdentifier匹配你在exp.json中放置的内容。

注意:你将不会在这里看到你的构建!您需要先使用Xcode或Application Loader来上传您的IPA。一旦你这样做了,你可以在Activity下检查你的版本的状态。处理应用程序可能需要10-15分钟才能显示可用的构建版本。

6.将其提交给相应的商店

我们并未自动执行此步骤,但此时您应该能够遵循Apple和Google文档向独立商店提交您的独立二进制文件。有关如何擦亮应用并确保其已被Apple和Google市场接受的更多信息(or more info on how to polish your app and ensure it is accepted to the Apple and Google marketplaces),请阅读部署到应用商店的指南

7.更新你的应用程序

大多数情况下,当您想更新应用时,只需从exp或XDE再次发布即可。您的用户将在下次打开应用程序时下载新的JS。为确保您的用户拥有下载JS更新的无缝体验,您可能需要启用后台JS下载。但是,有几个原因可能会导致您重建并重新提交本机二进制文件:

  • 如果您想更改原生元数据,如应用程序的名称或图标
  • 如果你升级到一个更新的sdkVersion你的应用程序(这需要新的本地代码)

为了跟踪这一点,你也可以更新二进制的versionCode和buildNumber。浏览app.json文档以了解您可以更改的所有属性,例如图标,深层链接url方案,手机/平板电脑支持等等。

如果您在此过程中遇到问题,我们非常乐意帮助!加入我们的论坛,让我们知道你是否有任何问题。


下一张继续介绍,这一篇主要介绍了:expo如何发布成独立应用程序,打包成apk或者ipa,发布到对应应用商店, 欢迎大家关注我的微信公众号,这篇文章是否被大家认可,我的衡量标准就是公众号粉丝增长人数。欢迎大家转载,但必须保留本人博客链接!

Expo大作战(十八)--expo如何发布成独立应用程序,打包成apk或者ipa,发布到对应应用商店的更多相关文章

  1. Expo大作战(十九)--expo打包后,发布分用程序到商店的注意事项

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

  2. Expo大作战(十六)--expo结合firebase 一个nosql数据库(本章令我惊讶但又失望!)

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

  3. Expo大作战(十五)--expo中splash启动页的详细机制

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

  4. Expo大作战(十四)--expo中消息推送的实现

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

  5. Expo大作战(十二)--expo中的自定义样式Custom font,以及expo中的路由Route&Navigation

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

  6. Expo大作战(十)--expo中的App Icon,expo中的Assets,expo中的ErrorHandling错误处理

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

  7. Expo大作战(三十一)--expo sdk api之Payments(expo中的支付),翻译这篇文章傻逼了,完全不符合国内用户,我只负责翻译大家可以略过!

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

  8. Expo大作战(二十七)--expo sdk api之Util(expo自带工具类),tackSnapshotAsync,Svg,SQLite

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

  9. Expo大作战(二十三)--expo中expo kit 高级属性(没干货)

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

随机推荐

  1. List集合和Set集合的遍历方法

    Set集合遍历方法: 对 set 的遍历 1.迭代遍历: Set<String> set = new HashSet<String>(); Iterator<String ...

  2. vtk文件编写

    在paraview中加载vtk文件,可以很好的显示三维空间图像,如下cpp代码: #include <iostream> #include <fstream> #include ...

  3. [java工具类01]__构建格式化输出日期和时间的工具类

    在之前的学习中,我写过一篇关于字符串格式化的,就主要设计到了时间以及日期的各种格式化显示的设置,其主要时通过String类的fomat()方法实现的. 我们可以通过使用不同的转换符来实现格式化显示不同 ...

  4. spring mvc 404页面制作

    1.404页面 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  5. MySQL中的三中循环 while 、 loop 、repeat 求 1~n 的和

    -- MySQL中的三中循环 while . loop .repeat 求 1-n 的和 -- 第一种 while 循环 -- 求 1-n 的和/* while循环语法:while 条件 DO 循环体 ...

  6. openerp7 时区问题解决--改成本地时区

    由于目前openerp的时区,读取的是UTC时间,而我国本地时间比UTC快8小时 问题就导致,写入数据库的时候时间相差8小时,以及Openerp日志输出时间格式也相差8小时和前端显示问题 1.更改op ...

  7. HDU 1576 A/B(欧几里德算法延伸)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1576 题目: Problem Description 要求(A/B)%9973,但由于A很大,我们只 ...

  8. map映照容器(常用的使用方法总结)

    map映照容器的数据元素是由一个键值和一个映照数据组成的,键值和映照数据之间具有一一对应的关系.map与set集合容器一样,不允许插入的元素的键值重复. /*关于C++STL中map映照容器的学习,看 ...

  9. Spark入门——什么是Hadoop,为什么是Spark?

    #Spark入门#这个系列课程,是综合于我从2017年3月分到今年7月份为止学习并使用Spark的使用心得感悟,暂定于每周更新,以后可能会上传讲课视频和PPT,目前先在博客园把稿子打好.注意:这只是一 ...

  10. MSSQL如何将查询结果拼接成字符串

    在博问上看到一个提问“MSSQL如何将查询结果拼接成字符串” ,想了一下应该怎么实现呢,在c#等语言下好实现,但在sql里实现.还真没做过. 目标:想要在SQL中将查询的结果拼接为 '1','2',' ...