跳到主要内容

应用凭证

了解Android和iOS应用程序所需的应用凭证。

Expo自动化了为Android和iOS签名应用的过程,但在这两种情况下,您都可以选择提供自己的覆盖。EAS Build可以生成签名或未签名的应用程序,但要通过商店分发您的应用程序,它必须是一个签名的应用程序。

在本页面上,您将了解每个平台所需的凭证。如果您想了解我们如何在我们这边存储您的凭证,请查看我们的安全文档。

Android

Google要求所有Android应用程序在安装到设备或更新之前都必须使用证书进行数字签名。通常,一个私钥及其公共证书存储在一个密钥库中。过去,上传到商店的APK需要使用应用签名证书(一个将附加到Play商店中的应用程序的证书),如果密钥库丢失了,就没有办法恢复或重置它。现在,您可以选择使用Google Play的App签名,并简单地上传一个使用上传证书签名的APK,Google Play将自动将其替换为应用签名证书。旧方法(应用签名证书)和新方法(上传证书)本质上是相同的机制,但使用新方法,如果您的上传密钥库丢失或受到威胁,您可以联系Google Play支持团队来重置密钥。

从Expo构建过程的角度来看,无论应用程序是使用上传证书还是应用签名密钥签名,都没有区别。无论如何,eas build将生成当前与您的应用程序关联的密钥库签名的**.apk.aab**。如果您想手动生成上传密钥库,可以按照创建原始密钥库的方式进行。

查看Android的文档以获取有关此过程的更多信息。

Google Play的App签名

当您第一次上传发布到Google Play时,您将看到一个关于"Google Play的App签名"和"Google正在保护您的应用签名密钥"的通知。这是默认行为,除了按"继续"外,不需要您采取任何行动。

如果您目前管理您的应用签名密钥,并希望Google为您管理它,请参见使用Google Play的App签名。

丢失了您的密钥库?了解如何在Google Play上重置您的上传密钥。

要将您的Expo密钥库与Google同步,请按照以下步骤操作:

  1. 在终端窗口中:

    1. 运行 eas credentials
    2. 选择Android作为平台和您希望下载凭证的配置文件。
    3. 选择 credentials.json: 在EAS服务器和您的本地json之间上传/下载凭证
    4. 选择 从EAS下载凭证到credentials.json

    您的应用程序的密钥库应该是私有的。在任何情况下,您都不应将其检入到您的存储库中。 调试密钥库是唯一的例外,因为我们不使用它们来上传应用程序到Google Play商店。

  2. 将密钥库导出为pem格式

    一旦您下载了凭证和密钥库,请将其导出为pem格式,以便您可以将其提交给Google:

    1. 在您的credentials.json文件中找到keyAlias键下的密钥别名。
    2. 使用keytool导出证书:
      keytool -export -rfc -alias alias_from_step_1 -file certificate_for_google.pem -keystore ./path/to/keystore.jks
  3. 联系Google支持

    联系Google支持,并请求他们使用此支持表单更改您的密钥。在填写表单时,附上从密钥库导出的pem文件。

    一旦Google在您的账户上更新了这个,通过eas build创建的构建将被正确签名,符合Google Play商店的预期。请注意,Google将将新上传证书的有效起始日期设置为72小时后,因此在执行此过程后的第一次提交之前,您需要等待。

iOS

与您的Apple Developer账户相关的3个主要iOS凭证是:

  • 分发证书
  • 配置文件
  • 推送通知密钥

无论您是让EAS处理所有凭证,还是您自己处理,了解每个凭证的含义、使用时间和地点以及它们过期或被撤销时会发生什么都是有价值的。您可以通过运行eas credentials来检查和管理所有凭证。

分发证书

分发证书是关于您,开发人员,而不是关于任何特定应用程序的。您可能只有一个与您的Apple Developer账户关联的分发证书。

这个证书将用于您所有的应用程序。如果这个证书过期,您在生产中的应用程序不会受到影响。但是,如果您想上传新应用程序到App Store或更新任何现有应用程序,您将需要生成一个新的证书。删除分发证书不会影响已经上架的应用程序。您可以通过运行eas credentials并按照提示来清除Expo当前为您的应用程序存储的分发证书。

推送通知密钥

Apple推送通知密钥(通常缩写为APN密钥)允许相关应用程序发送和接收推送通知。

您可以最多有2个APN密钥与您的Apple Developer账户关联,并且一个密钥可以与任意数量的应用程序一起使用。如果您撤销了一个APN密钥,所有依赖该密钥的应用程序将无法再发送或接收推送通知,直到您上传一个新的密钥来替换它。上传一个新的APN密钥不会更改您的用户的Expo推送令牌。推送通知密钥不会过期。您可以通过运行eas credentials并按照提示来清除Expo当前为您的应用程序存储的APN密钥。

Expo创建的APN密钥可以在Expo网站上下载。

配置文件

每个配置文件都是特定于应用程序的,这意味着您将为您提交到App Store的每个应用程序都有一个配置文件。这些配置文件与您的分发证书相关联,所以如果证书被撤销或过期,您将需要重新生成应用程序的配置文件。与分发证书类似,撤销您的应用程序的配置文件不会影响已经上架的应用程序。

配置文件在12个月后过期,但这不会影响生产中的应用程序。您只需要在下次构建应用程序时创建一个新的配置文件,通过运行eas build -p ios,或者手动使用eas credentials

总结

凭证每个账户的限制特定于应用程序?可以撤销而不产生生产侧效果?使用于
分发证书2NoYes构建时
推送通知密钥2NoNo运行时
配置文件无限YesYes构建时

清除凭证

当您使用eas credentials命令删除您的凭证时,这只从Expo的服务器中移除这些凭证,它不会从苹果的角度删除凭证。这意味着要完全删除您的凭证(例如,如果您想要一个新的推送通知密钥,但是您已经有了两个),您需要从Apple Developer Console中进行。

重新签名新凭证

您可以使用eas build:resign对现有的iOS .ipa 进行代码签名到一个新的临时配置文件。这有助于减少内部分发的时间 - 例如,如果您想向现有构建中添加一个新的测试设备,您可以使用此命令更新配置文件以包含该设备,而无需从头重新构建整个应用程序。

运行命令时,它会要求您选择要重新签名的构建。例如,在示例项目中运行命令会显示一个可用的构建:

选择构建后,按照步骤登录到您的Apple Developer账户。当提示显示设备并再次询问时,您可以选择一个新的配置文件。

选择一个新的设备,命令将再次运行EAS Build。请注意,这次触发的构建重用了所选构建的应用程序工件,并使用新的配置文件进行了代码签名。完成此过程后,您可以使用这个新的构建链接在添加到配置文件的iOS设备上安装**.ipa**。