蒲公英文档中心

最佳实践:使用重签名 API 实现在线 ipa 文件重签名

概述

为了简化开发者对于 iOS App 安装包文件(.ipa 文件)的重签名需求,蒲公英推出了在线重签名和证书管理的相关 API。利用这些 API,开发者可以方便的对发布到蒲公英上的 App 进行重签名,例如切换签名证书、发布渠道包、添加或删除 UDID 等。重签名后,开发者可以直接下载重签名后的安装包,也可以直接发布到蒲公英。

准备资料

要实现在线重签名的操作,首先必须准备好如下资料:

  1. 待签名的原始 ipa 文件
  2. 苹果开发者证书文件(包括一个 p12 文件和与之相匹配的 mobileprovision 文件)
  3. 调用蒲公英接口的 _api_key(在蒲公英网站控制台中查看)

用到的蒲公英接口有如下三个:

  1. App 发布接口(/apiv2/app/upload)
  2. 证书添加接口(/apiv2/certificate/add)
  3. 重签名接口(/apiv2/certificate/signApp)

具体步骤

我们大概的步骤分为如下三步:

  • 第一步:将 ipa 文件发布到蒲公英
  • 第二步:将证书文件上传到蒲公英
  • 第三步:重签名 ipa 文件,获取重签名后的新 ipa 文件

接下来,我们将向大家演示如下完成重签名的整个流程。为了代码简洁清晰,下面我们使用 curl 命令来发起 API 请求向大家演示。

第一步:将 ipa 文件发布到蒲公英

利用 App 发布接口,将我们的原始包 ipa 文件,上传到蒲公英

curl -F 'file=@/tmp/example.ipa' -F '_api_key=xxx58b3d9063c73cd68f0ee40215axxx' https://www.pgyer.com/apiv2/app/upload

该接口将上传 /tmp/example.ipa 到蒲公英平台,并返回相关信息。此时,我们记下返回信息中的 buildKey,该值代表这个安装包在蒲公英上的唯一 ID,后面要用到。

第二步:将证书文件上传到蒲公英

我们利用证书添加接口,上传证书文件:

curl -F 'fileCert=@/tmp/example.p12' -F 'fileProvision=@/tmp/example.mobileprovision' -F 'password=123456' -F '_api_key=xxx58b3d9063c73cd68f0ee40215axxx' https://www.pgyer.com/apiv2/certificate/add

成功后,该接口会返回 certificateKey 字段,代表的是证书存储在蒲公英上的 ID。此时,我们记录下该字段的值,后面要用到。

第三步:重签名 ipa 文件,获取重签名后的新 ipa 文件

在这一步,我们主要利用蒲公英的重签名接口,对 ipa 文件进行重签名。其中 buildKey 和 certificateKey 的值是我们从上面两步中获取到的。

curl -F 'buildKey=xxxdd80571f2ee2d5b38361bbd349xxx' -F certificateKey=xxxxxxxxxxx' -F 'isPublish=1' -F '_api_key=xxx58b3d9063c73cd68f0ee40215axxx' https://www.pgyer.com/apiv2/certificate/signApp

接口请求成功后,我们会在返回的响应内容中看到 downloadUrl,此时就可以根据这个地址下载到重新签名后的 ipa 安装包。如果参数中的 isPublish 是 1,该 app 文件将会自动发布到蒲公英,如果是 0,则不会自动发布到蒲公英。

总结

以上,就是我们利用蒲公英的重签名 API,对 ipa 文件进行重新签名的整个过程。总的来说还是相当简单的。这个功能,在我们内部分发 ipa 时,会非常有用。开发者也可以将此接口集成到自己的自动化持续集成系统中,将会大大方便我们的工作。目前,该接口是完全免费的,并且不限制调用次数。