跳到内容
Tauri

iOS 代码签名

在 iOS 上进行代码签名是必需的,以便通过官方 Apple App Store 或可能在欧盟的替代市场以及通常在最终用户设备上安装和执行来分发您的应用程序。

准备工作

iOS 上的代码签名需要注册 Apple Developer 计划,在撰写本文时,该计划的费用为每年 99 美元。您还需要一台 Apple 设备来执行代码签名。这是签名过程所必需的,并且由于 Apple 的条款和条件。

要分发 iOS 应用程序,您必须在 App Store Connect 中注册您的 bundle identifier,拥有合适的 iOS 代码签名证书和一个移动 provisioning profile,将它们链接在一起并启用您的应用程序使用的 iOS 功能。这些要求可以由 Xcode 自动管理或手动提供。

自动签名

让 Xcode 管理您应用程序的签名和 provisioning 是导出要分发的 iOS 应用程序的最便捷方式。它会自动注册您的 bundle identifier,管理 iOS 功能更改,并根据您的导出方法配置合适的证书。

默认情况下启用自动签名,并在本地计算机上使用时使用在 Xcode 中配置的帐户进行身份验证。
要注册您的帐户,请打开 Xcode 应用程序,然后在 Xcode > 设置 菜单中打开“设置”页面,切换到“帐户”选项卡,然后单击 + 图标。

要在 CI/CD 平台中使用自动签名,您必须创建 App Store Connect API 密钥并定义 APPLE_API_ISSUERAPPLE_API_KEYAPPLE_API_KEY_PATH 环境变量。
打开 App Store Connect 的用户和访问页面,选择“集成”选项卡,单击“添加”按钮,然后选择名称和“管理员”访问权限。APPLE_API_ISSUER (Issuer ID) 显示在密钥表上方,APPLE_API_KEY 是该表上“密钥 ID”列中的值。您还需要下载私钥,这只能完成一次,并且仅在页面重新加载后可见(按钮显示在新创建密钥的表行中)。私钥文件路径必须通过 APPLE_API_KEY_PATH 环境变量设置。

手动签名

要手动签名您的 iOS 应用程序,您可以通过环境变量提供证书和移动 provisioning profile

  • IOS_CERTIFICATE:从 Keychain 导出的证书的 base64 表示形式。
  • IOS_CERTIFICATE_PASSWORD:从 Keychain 导出证书时设置的密码。
  • IOS_MOBILE_PROVISION:provisioning profile 的 base64 表示形式。

以下部分说明如何获取这些值。

签名证书

注册后,导航到 证书 页面以创建新的 Apple Distribution 证书。下载新证书并将其安装到 macOS Keychain。

要导出证书密钥,请打开“Keychain Access”应用,展开证书的条目,右键单击密钥项,然后选择“导出 <key-name>”项。选择导出的 .p12 文件的路径并记住其密码。

运行以下 base64 命令将证书转换为 base64 并将其复制到剪贴板

base64 -i <path-to-certificate.p12> | pbcopy

剪贴板中的值现在是签名证书的 base64 表示形式。保存它并将其用作 IOS_CERTIFICATE 环境变量值。

证书密码必须设置为 IOS_CERTIFICATE_PASSWORD 变量。

Provisioning Profile

此外,您必须为您的应用程序提供 provisioning profile。在 标识符 页面中,创建一个新的 App ID,并确保其“Bundle ID”值与 identifier 配置中设置的标识符匹配。

导航到 Profiles 页面以创建新的 provisioning profile。对于 App Store 分发,它必须是“App Store Connect”profile。选择适当的 App ID 并链接您先前创建的证书。

创建 provisioning profile 后,下载它并运行以下 base64 命令来转换 profile 并将其复制到剪贴板

base64 -i <path-to-profile.mobileprovision> | pbcopy

剪贴板中的值现在是 provisioning profile 的 base64 表示形式。保存它并将其用作 IOS_MOBILE_PROVISION 环境变量值。

现在您可以构建您的 iOS 应用程序并在 App Store 上分发了!


© 2025 Tauri 贡献者。CC-BY / MIT