该问题的答案有些过时,并且缺少潜在的关键步骤,因此,这是从外部开发人员安装应用程序的更新指南。
-----如何退出iOS应用程序-----
假设您从另一个开发人员那里收到了一个应用程序(例如MyApp.ipa),并且希望能够在您的设备上安装和运行该应用程序(例如,通过使用ideviceinstaller)。
准备新的签名资产
第一步是获得一个Provisioning Profile,其中包括您希望安装和运行的所有设备。确保配置文件包含您已在“ 钥匙串访问”中安装的证书(例如,iPhone Developer:Some Body(XXXXXXXXXX))。下载配置文件(MyProfile.mobileprovision),以便您可以替换应用程序中嵌入的配置文件。
接下来,我们将准备一个权利文件以包括在签名中。打开您的终端并运行以下命令。
$ security cms -D -i path/to/MyProfile.mobileprovision > provision.plist
这将创建一个描述您的Provisioning Profile的xml文件。接下来,我们要将权利提取到文件中。
$ /usr/libexec/PlistBuddy -x -c 'Print :Entitlements' provision.plist > entitlements.plist
替换配置文件并退出应用
如果使用的是.ipa文件,则首先解压缩该应用程序(如果您使用的是.app,则可以跳过此步骤)。
$ unzip MyApp.ipa
您的工作目录现在将包含Payload/
和Payload/MyApp.app/
。接下来,删除旧的代码签名文件。
$ rm -rf Payload/MyApp.app/_CodeSignature
用您自己的配置文件替换现有的配置文件(即Embedded.mobileprovision)。
$ cp path/to/MyProfile.mobileprovision Payload/MyApp.app/embedded.mobileprovision
现在,使用您的配置文件中包含的证书和您先前创建的entitlements.plist对应用程序进行签名。
$ /usr/bin/codesign -f -s "iPhone Developer: Some Body (XXXXXXXXXX)" --entitlements entitlements.plist Payload/MyApp.app
重要提示:您还必须辞职该应用程序中包含的所有框架。您会在中找到这些Payload/MyApp.app/Frameworks
。如果应用程序是用Swift编写的,或者包含任何其他框架,则必须将其签名,否则应用程序将安装但无法运行。
$ /usr/bin/codesign -f -s "iPhone Developer: Some Body (XXXXXXXXXX)" --entitlements entitlements.plist Payload/MyApp.app/Frameworks/*
您现在可以重新压缩应用程序。
$ zip -qr MyApp-resigned.ipa Payload
完成
Payload
由于您拥有原始应用程序(MyApp.ipa)和已辞职版本(MyApp-resigned.ipa),因此现在可以删除目录。您现在可以在预配置文件中包含的任何设备上安装MyApp-resigned.ipa。