iOS 代码签名外部 IPA 文件
Posted
技术标签:
【中文标题】iOS 代码签名外部 IPA 文件【英文标题】:iOS code signing external IPA file 【发布时间】:2015-07-28 13:25:30 【问题描述】:我从另一个团队收到了一个 ios 应用的 IPA 文件,我需要对 IPA 文件进行代码签名才能在我的设备上运行该应用。
我解压了 IPA 文件,它只包含 .app 文件。那么我如何对 IPA 文件进行代码签名呢?谁能给我一个分步教程吗?
(我已准备好开发证书、配置文件、注册设备。)
===== 更新 =====
我问的和this差不多,不同的是,当我解压IPA时,它是一个与链接问题不同的app文件。
【问题讨论】:
你为什么要这么做?IPA已经签了,不需要再签了 为什么要投反对票?请检查我的更新,有一个类似的问题(这是赞成的!!),尽管答案对我的问题没有用。我需要用我自己的证书对其进行签名,以便它可以在我自己的设备上运行。 【参考方案1】:您应该使用您的凭据创建 ResourceRules.plist 和 Entitlements.plist。创建和更新这些文件后,删除 .app 文件中的 _CodeSignature 文件夹。然后你可以从命令行运行以下过程:
codesign -f -s 'iPhone Distribution: YOUR_DISTRIBUTION_PROFILE_NAME_HERE' --resource-rules ResourceRules.plist --entitlements Entitlements.plist PATH_TO_APP_FILE
Entitlements.plist 示例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>application-identifier</key>
<string>XXXXXXXXXX.com.xxx.app</string>
</dict>
</plist>
ResourceRules.plist 示例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>rules</key>
<dict>
<key>.*</key>
<true/>
<key>Info.plist</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>10</real>
</dict>
<key>ResourceRules.plist</key>
<dict>
<key>omit</key>
<true/>
<key>weight</key>
<real>100</real>
</dict>
</dict>
</dict>
</plist>
【讨论】:
感谢您的回答,如何创建两个 .plist 文件?我是 iOS 新手。 你的意思是我应该进一步解压 .app 文件吗? .app 文件其实是一个文件夹,右键显示包内容。我还将使用权利和资源规则文件更新我的答案。 谢谢,而且当我运行 codesign 命令时,我总是收到YOUR_DISTRIBUTION_PROFILE_NAME_HERE no identity found
和警告 Warning: --resource-rules has been deprecated in Mac OS X >= 10.10!
您应该将 YOUR_DISTRIBUTION_PROFILE_NAME_HERE 文本替换为您自己的证书。 codesign 从钥匙串中寻找它。您应该通过双击将证书添加到钥匙串中,然后您可以从钥匙串中查找名称。以上是关于iOS 代码签名外部 IPA 文件的主要内容,如果未能解决你的问题,请参考以下文章
ios企业证书导出的P12和对应的描述文件,可以签名ipa吗?