简要:本系列文章讲会对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. Python多线程-Event(事件对象)

    Event 事件对象管理一个内部标志,通过set()方法将其设置为True,并使用clear()方法将其设置为False.wait()方法阻塞,直到标志为True.该标志初始为False. 方法: i ...

  2. Javascript图片预加载详解 分类: JavaScript HTML+CSS 2015-05-29 11:01 768人阅读 评论(0) 收藏

    预加载图片是提高用户体验的一个很好方法.图片预先加载到浏览器中,访问者便可顺利地在你的网站上冲浪,并享受到极快的加载速度.这对图片画廊及图片占据很大比例的网站来说十分有利,它保证了图片快速.无缝地发布 ...

  3. Mysql压缩包版的安装方法详解

    Mysql安装的时候可以有msi安装和zip解压缩两种安装方式.zip压缩包解压到目录,要使用它还需对它进行一定的配置.下面对Mysql压缩包版的安装方法进行详细的描述,要是此文有不正确的认识,希望大 ...

  4. linux下实现进度条小程序

    转载自:实现一个简单的进度条 我们平常总会在下载东西或者安装软件的时候看到进度条,这里我们就在linux下实现这个进度条的功能. 1.我们使用的关键打印语句是printf函数: printf(&quo ...

  5. Vue笔记:在项目中使用 SCSS

    背景概述 1. CSS预处理器 css预处理器定义了一种新的编程语言,编译后成正常的CSS文件.为CSS增加一些编程的特性,无需考虑浏览器的兼容问题,让CSS更加简洁,适应性更强,可读性更佳,更易于代 ...

  6. centos 修改时区

    # date 2014年 07月 22日 星期二 :: EDT # cat /etc/sysconfig/clock -------------------------- ZONE="Ame ...

  7. Selenium3自动化问题二:各chrome版本对应的chromedriver版本

    一:问题说明 最近用到selenium3在火狐浏览器中执行自动化脚本,遇到了一些问题,最后解决方案中占比最多的就是浏览器和驱动版本不一致导致的,故这里给出chrome.firefox驱动的不同版本对应 ...

  8. CRM项目测试第一天

    经过前几天代码的修改,界面的完善.主要的功能都实现了!今天主要是交换各组的项目,互相来测试,找bug. 在互相测试的过程,我听见有一组应该算是讨论的比价激烈的!我们组我们自己找到了bug,但是测试我们 ...

  9. js设计模式总结5

    1.同步模块模式 随着页面功能的增加,系统的业务逻辑越来越复杂.多人开发的功能经常耦合在一起.有时分配任务给多人实现的时候,常常因为某一处功能耦合了很多人的代码,出现排队修改的现象,这很不利于团队开发 ...

  10. .20-浅析webpack源码之compile流程-Template模块

    这里的编译前指的是开始触发主要的事件流this-compilaiton.compilation之前,由于还有一些准备代码,这一节全部弄出来. 模块基本上只走构造函数,具体的方法调用的时候再具体讲解. ...