专业IOS签名团队
闪电售后,性价比秒杀上架,快速上线、测试
提供 iOS 企业证书签名服务,让您的 iOS App 无需提交 App Store 或设置
UDID 即可在iPhone、iPad 等设备上直接安装,帮助您快速完成应用内测
过程,降低测试成本,缩短上线时间。

构建独立ios签名应用程序

2019-07-12 07:39 栏目:ios签名 查看()

本指南的目的是帮助您创建适用于iOS和Android的Expo应用程序的独立二进制文件,可以将其提交到Apple App Store和Google Play Store。

构建iOS签名独立应用程序需要Apple Developer帐户,但构建Android独立应用程序不需要Google Play Developer帐户。如果您想要提交到任一应用商店,您将需要该商店的开发者帐户。

阅读有关部署到应用商店的最佳实践是一个好主意,以确保您的应用程序处于良好状态,以便被Apple和Google市场所接受。我们可以为您生成构建版本,但是您可以自己制作应用程序。

1.安装Expo CLI

Expo CLI是开发和构建Expo应用程序的工具。运行npm install -g expo-cli(或yarn global add expo-cli)获取它。

如果您之前未创建过Expo帐户,则会在运行build命令时要求您创建一个。

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"为您的应用程序有意义的任何内容。

你可能并不感到惊讶name,icon而且version是必需的。

slug是您的应用的JavaScript发布到的网址名称。例如:expo.io/@community/native-component-list,community我的用户名在哪里,native-component-list是slug。

在sdkVersion讲述世博会世博会是什么版本的运行使用,相当于一个阵营原生版本。虽然"XX.0.0"在示例中列出,但您已经sdkVersion在app.json中有一个,除非您想要更新到新版本的Expo,否则不应更改它。

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

3.开始构建

跑expo build:android或expo build:ios。如果您还没有为此项目运行的打包程序,expo则会为您启动一个打包程序。

如果您选择为Android构建

第一次构建项目时,系统会询问您是否要上传密钥库或让我们为您处理。如果你不知道密钥库是什么,你可以让我们为你生成一个。否则,请随意上传自己的。

如果您选择让Expo为您生成密钥库,我们强烈建议您稍后运行expo fetch:android:keystore 并将密钥库备份到安全位置。将应用程序提交到Google Play商店后,该应用的所有未来更新都必须 使用相同的密钥库进行签名才能被Google接受。如果出于任何原因,您将来删除项目或清除凭据,如果您尚未备份密钥库,则无法向ipa签名应用程序提交任何更新。

[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! :)
   1) Let Expo handle the process!
   2) I want to upload my own keystore!

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

如果您选择为iOS构建

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

$ expo build:ios
    [16:44:37] Checking if current build exists...
[16:44:37] No currently active or previous builds for this project.
    [16:44:37]
We need your Apple ID/password to manage certificates, keys
and provisioning profiles from your Apple Developer account.
    Note: Expo does not keep your Apple ID or your Apple ID password.
    ? What's your Apple ID? xxx@yyy.zzz
        ? Password? [hidden]
√ Authenticated with Apple Developer Portal successfully!
    [16:44:46] You have 4 teams associated with your account
    ? Which team would you like to use? 3) ABCDEFGHIJ "John Turtle" (Inpidual)
√ Ensured App ID exists on Apple Developer Portal!
    [16:44:59] We do not have some credentials for you: Apple Distribution Certificate, Apple Push Notifications service key, Apple Provisioning Profile
    ? 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 limited validation

我们会问您是否希望我们处理您的分发ios企业证书或使用您自己的分发证书。如果您之前曾使用过expo-cli为不同项目构建独立应用程序,那么我们会询问您是否要重用现有的分发app惬意证书。与Android密钥库类似,如果您不知道分发证书是什么,请让我们为您处理。如果您确实需要上传自己的证书,我们建议您遵循这篇关于制作P12文件的优秀指南。 注意:本指南建议将P12的密码留空,但需要P12密码才能将自己的证书上传到Expo的服务中。请在出现提示时输入密码。我们还将帮助您处理推送通知服务密钥。请记住,Push Notifications服务密钥在同一Apple Developer帐户下发布的所有应用程序之间共享。

注意: Expo构建服务支持正常的App Store分发和企业分发。要使用后者,您必须是“Apple Developer Enterprise Program”的成员。只有普通的Apple开发者帐户才能构建可以提交到Apple App Store的应用程序,只有企业开发人员帐户才能构建可以使用企业分发方法分发的应用程序。当你打电话时expo build:ios,你只需要选择正确的团队,它就会被标记出来(In-House)。目前,独立应用构建器不支持“临时”分发证书或配置文件。

在iOS上切换到推送通知密钥

如果您正在使用推送通知证书并希望切换到推送通知密钥,则需要开始构建--clear-push-cert。我们将从服务器中删除证书并为您生成推送通知密钥。

4.等待它完成建设

当我们的一台建筑机器免费使用时,它将开始构建您的ipa企业签名应用程序。您可以查看您在Turtle状态站点上等待的时间。我们将打印您可以访问的网址(例如expo.io/builds/some-unique-id)以查看您的构建日志。或者,您可以通过运行来检查它expo build:status。完成后,您将看到.apk(Android)或.ipa(iOS)文件的网址- 这是您的应用。将链接复制并粘贴到浏览器中以下载文件。

如果您愿意,我们也可以在构建完成后调用您的webhook。您可以使用expo webhooks:set --event build --url <webhook-url>命令为项目设置webhook 。系统会要求您输入webhook密钥。它必须至少16个字符长,它将用于计算我们发送的请求正文的签名作为Expo-SignatureHTTP标头的值。您可以使用签名来验证webhook请求是否为正版。我们向您保证,我们会在您的数据库中安全地加密您的秘密。

我们使用HTTP POST请求调用您的webhook,并在请求正文中传递数据。Expo通过以下字段向您的webhook发送JSON对象:

  • status- 一个字符串,指定您的构建是否已成功完成(可以是finished或者errored)
  • id - 构建的唯一ID
  • artifactUrl - 构建工件的URL(如果构建成功,我们只包括此字段)

另外,我们发送一个Expo-SignatureHTTP头,其中包含有效负载的散列签名。您可以使用此签名来验证请求来自Expo。签名是请求正文的十六进制编码的HMAC-SHA1摘要,使用您的webhook秘密作为HMAC密钥。

这是您实现服务器的方式:

import crypto from 'crypto';
import express from 'express';
import bodyParser from 'body-parser';
import safeCompare from 'safe-compare';
const app = express();
app.use(bodyParser.text({ type: '*/*' }));
app.post('/webhook', (req, res) => {
    const expoSignature = req.headers['Expo-Signature'];
// process.env.SECRET_WEBHOOK_KEY has to match <webhook-secret> value set with `expo webhooks:set ...` command
    const hmac = crypto.createHmac('sha1', process.env.SECRET_WEBHOOK_KEY);
    hmac.update(req.body);
    const hash = `sha1=${hmac.digest('hex')}`;
    if (!safeCompare(expoSignature, hash)) {
        res.status(500).send("Signatures didn't match!");
    } else {
// do sth here
        res.send('OK!');
    }
});
app.listen(8080, () => console.log('Listening on port 8080'));

您始终可以使用第一次设置webhook的相同命令更改您的webhook URL和/或webhook密钥。要查看您的webhook当前设置的内容,可以使用expo webhooks:show命令。如果您希望我们停止向您的webhook发送请求,只需expo webhooks:clear在您的项目中运行即可。

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

5.在您的设备或模拟器上进行测试

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

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

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

阅读有关将应用程序上传到Apple App Store和Google Play的指南。

7.更新您的应用

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

  • 如果要更改应用程序名称或图标等本机元数据
  • 如果您升级到较新sdkVersion的应用程序(需要新的本机代码)

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

如果您在此过程中遇到问题,我们非常乐意为您提供帮助!加入我们的论坛,如果您有任何疑问,请告诉我们。

扫二维码与IOS签名经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/ios企业签名咨询/签名价格咨询/技术建议/互联网交流

上一篇:ios签名的应用分发的详细概述

下一篇:如何续订Apple MDM推送ios签名证书

郑重申明:IOS企业签名以外的任何单位或个人,不得使用该案例作为工作成功展示!
  • 咨询QQ:869349528
    邮箱:869349528@qq.com
    工作时间:08.30-23.30
友情链接: ios企业签名 微构网
Copyright © 2017-2019 www.wegto.com.版权所有  鄂ICP备19007640号-1    苹果企业签名  苹果签名  ios企业签名  
点击这里给我发消息