一、准备工作
1. 解压ipa包
首先,从appstore下载一个ipa包,然后将其上传到蒲公英分发平台。接下来,我们将使用此包进行重签名实验,并使用另一组证书生成adhoc包。选中ipa包,右键单击并选择“打开方式”->“解压”,如下图所示:
解压后,会得到一个Payload文件夹,其中包含一个xxx.app文件。右键单击该文件,选择“显示包含内容”的方式打开。
2. 替换embedded.mobileprovision文件
我们需要将打包中的embedded.mobileprovision文件替换为目标ipa中的embedded.mobileprovision文件。
进入目标ipa的文件目录,我们可以看到一个embedded.mobileprovision文件。找到一个我们自己打包的ipa包,然后进行解压。进入到ipa的文件目录下,同样可以发现一个embedded.mobileprovision文件。然后将我们自己的embedded.mobileprovision文件替换掉目标ipa文件中的embedded.mobileprovision。
3. 生成授权文件(entitlements.plist)
1. 将上一步的embedded.mobileprovision文件拷贝一份到Payload文件夹中。如下图所示:
2. 然后通过embedded.mobileprovision文件使用命令行操作生成embedded_full.plist文件。首先,cd到Payload目录下,通过“security”命令从mobileprovision文件中生成一个完整的plist文件。
YuanCan:Payload ahdms$ security cms -D -i embedded.mobileprovision > entitlements_full.plist
3. 然后通过embedded_full.plist文件使用命令行操作生成embedded.plist文件。
一、生成entitlementsplist文件
YuanCan:Payload ahdms$ /usr/libexec/PlistBuddy -x -c 'Print:Entitlements' entitlements_full.plist > entitlements.plist
二、重签名
需要进行重签名的主要包括两部分,整个的app文件和app文件里面的Framework。Framework文件夹下面的动态库都要进行重签名,否则安装之后会闪退。
1. 动态库重签名
打开.app文件目录,文件里面有一个Framework的文件夹,里面包含了项目引用的所有动态库(如果项目中没有使用任何动态库,当然就不会有这个文件夹,可以忽略此步骤),如下图所示:
重签名命令:$ codesign -f -s "Apple Developer: xxx (xxx)" xxx.framework
//首先要先cd到Frameworks的目录下面,然后在执行如下命令
YuanCan:Frameworks ahdms$ codesign -f -s "Apple Distribution: Changsha xxx Information and Technology Co., Ltd. (xxx)" Hyphenate.framework
Hyphenate.framework: replacing existing signature //执行重签名命令之后,会给出这句提示,代表重签名成功
2. .app文件重签名
下面我们要进行app文件重签名,与动态库重签名不同的是,app文件重签名还需要加上授权文件。
重签名命令:$ codesign -f -s "Apple Developer: xxx (xxx)" --no-strict --entitlements=entitlements.plist xxx.app
以下是重构的内容:
首先,确保您已将工作目录切换到Payload文件夹。然后,在命令行中执行以下命令进行签名:
```bash
YuanCan:Payload ahdms$ codesign -f -s "Apple Distribution: Changsha xxx Information and Technology Co., Ltd. (xxx)" --no-strict --entitlements=entitlements.plist HelloWorld.app
```
执行上述命令后,您会看到“HelloWorld.app: replacing existing signature”的提示,这意味着签名已经成功应用。
3、重新打包
在签名成功后,我们需要将.app文件重新打包。请进入Payload文件夹,删除以下三个文件:
```bash
rm -rf Payload/{Payload,Modules,Resources}/HelloWorld.app
```
接下来,将Payload文件夹压缩成zip格式的压缩包,并将其扩展名从.zip更改为.ipa。这将生成一个新的ipa包。
为了验证签名是否成功应用,请将生成的Payload.ipa包上传到蒲公英分发平台。如果一切正常,您应该能看到应用程序已经变成了内存版本,且可以直接安装到手机上。
最后,如果您觉得这篇文章对您有所帮助,请给小编一点鼓励,通过点赞或打赏表示感谢。