如何重新签名ipa文件

发布网友 发布时间:2022-04-21 03:57

我来回答

2个回答

热心网友 时间:2022-06-17 21:00

  准备

  在重签名之前要做一些准备工作。

  1.首先要下载并安装Xcode,里面有个codesign_allocate程序,在安装时/usr/bin中会多一个codesign的程序,该程序用于ipa包的签名。

  2.企业证书的Certificate文件,私钥文件,Provisioning Profile文件等。注意企业证书一定要是iOS Distribution的类型,不能是iOS Development。

 

  重签名步骤

  1.解压ipa

  解压ipa得到Payload/[App name].bundle,打开bundle。

  2.删除旧的ipa签名信息

  删除bundle中的_CodeSignature文件夹,也就是删除之前ipa的签名信息。

  3.更换证书

  将bundle中旧的Provisioning Profile删除,用我们自己的企业证书的Provisioning Profile替代。

  注意,要将ipa包中我们的企业证书改名为embedded.mobileprovision。

  4.修改bundle内容

  此时我们可以尽情地修改bundle中的内容,例如添加一个动态库,删除一张图片等。

  注意:如果要往bundle中添加动态库,必须要先将其压缩成zip文件,在程序启动时将其解压到Documents目录下再dlopen,否则程序在启动时加载动态库文件会卡死在那里。

  5.重新签名

  在完成bundle内容的修改后,需要通过/usr/bin/codesign程序重新签名,命令如下:

  /usr/bin/codesign -f -s "iPhone Distribution: YourCompanyName" --resource-rules Payload/ MYAPP.app/ResourceRules.plist Payload/ MYAPP.app

  其中iPhone Distribution可以从钥匙串访问中获取,就是企业证书的名字,例如下面的"iPhone Distribution:XXXXXXXXXX":

 

  具体的命令示例:

  codesign -f -s "iPhone Developer: XXXXXXXXXX" --resource-rules Payload/NdCP_Game_Demo.app/ResourceRules.plist Payload/NdCP_Game_Demo.app

  这条命令的意思是:使用keychain中"iPhone Developer: XXXXXXXXXX"标识的证书,根据Payload/NdCP_Game_Demo.app/ResourceRules.plist文件中的规则进行签名,如果ipa包中已经存在签名,那么将被替换,该过程生成的_CodeSignature目录将存放在Payload/NdCP_Game_Demo.app目录下。

 

  在命令执行后,在bundle中会生成一个新的_CodeSignature目录,里面包含了新的签名信息。

 

  6.重新打包成ipa

  在完成上述工作后,可以生成新的ipa进行发布。示例命令如下:

  zip -r ResignTest.ipa Payload

  # 注意Payload后面不能有“/”

  ‍ 

  7.发布

  经过打包发布测试,得出结论:对修改了ipa包内容和其中的签名后,重签名的ipa文件可以在非越狱设备和越狱设备上成功安装。注意,是通过带有SSL证书的网站和Apple系统安装的(企业内部分发程序),不是通过PP助手那样的第三方工具安装的。

热心网友 时间:2022-06-17 21:01

您好,很高兴能帮助您
app签名意义:为了保证每个应用程序开发商合法ID,防止部分开放商可能通过使用相同的Package Name来混淆替换已经安装的程序,需要对发布的APK文件进行唯一签名,保证每次发布的版本的一致性(如自动更新不会因为版本不一致而无法安装)。

你的采纳是我前进的动力,
记得好评和采纳,答题不易,互相帮助,

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com