我目前使用hudson构建所有的应用程序,使用xcodebuild,然后使用xcrun,没有任何问题。
我收到了几个来自不同人的IPA文件,我希望使用企业帐户而不是公司帐户重新签名(用于应用程序商店,有时也可以是临时分发的)。
我的问题是,当我试图退出应用程序时,它不会安装在我的设备上(它应该安装在设备上,因为它是企业版的)。错误信息在设备上(不是在iTunes中),它简单地告诉我它无法安装应用程序。没有给出更多信息。
这也许是可能的。我面临的问题是,它似乎没有像我在普通版本中所做的那样嵌入移动配置文件(使用xcrun),这是否可以使用codesign工具进行控制,或者是否可以使用xcrun重新签名?
使用我的resign脚本,我现在这样做
我已经查看了生成的ipa文件,它似乎与原始应用程序非常相似。这里真正应该更改的文件是什么?我最初以为_CodeSignature/CodeResources会改变,但内容看起来几乎完全一样。
指针非常受欢迎。
发布于 2011-08-03 04:36:57
终于让它工作起来了!
使用与cert1签署的IPA进行测试,以便在配置配置文件中未添加设备的情况下提交应用商店。导致使用企业帐户和移动调配配置文件签署的新IPA用于内部部署(移动调配配置文件嵌入到IPA中)。
解决方案:
解压缩IPA
unzip Application.ipa
删除旧的CodeSignature
rm -r "Payload/Application.app/_CodeSignature" "Payload/Application.app/CodeResources" 2> /dev/null | true
替换嵌入式移动配置文件
cp "MyEnterprise.mobileprovision" "Payload/Application.app/embedded.mobileprovision"
重新签名
/usr/bin/codesign -f -s "iPhone Distribution: Certificate Name" --resource-rules "Payload/Application.app/ResourceRules.plist" "Payload/Application.app"
重新打包
zip -qr "Application.resigned.ipa" Payload
编辑:删除了授权部分(请参阅小巷评论,谢谢)
发布于 2016-05-11 20:37:25
这个问题的答案有点过时,并且缺少潜在的关键步骤,所以这是从外部开发人员那里安装应用程序的更新指南。
-如何给iOS应用重新签名-
假设您从另一个开发人员那里收到一个应用程序(例如MyApp.ipa),并且您希望能够在您的设备上安装和运行它(例如,通过使用ideviceinstaller )。
准备新的签约资产
第一步是获取配置配置文件,其中包括您希望安装和运行的所有设备。确保配置文件包含您在密钥链访问中安装的证书(例如,iPhone开发人员:某个主体(XXXXXXXXXX) )。下载配置文件(MyProfile.mobileprovision),以便替换应用程序中嵌入的配置文件。
接下来,我们将准备一个授权文件以包含在签名中。打开您的终端并运行以下命令。
$ security cms -D -i path/to/MyProfile.mobileprovision > provision.plist
这将创建一个描述您的配给配置文件的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
重要提示:您还必须放弃应用程序中包含的所有框架。您可以在Payload/MyApp.app/Frameworks
中找到这些。如果应用程序是用Swift编写的,或者如果它包含任何其他框架,则必须提交这些框架,否则应用程序将安装但不会运行。
$ /usr/bin/codesign -f -s "iPhone Developer: Some Body (XXXXXXXXXX)" --entitlements entitlements.plist Payload/MyApp.app/Frameworks/*
现在使用您的预配配置文件中包含的证书和您之前创建的entitlements.plist对应用程序进行签名。
$ /usr/bin/codesign -f -s "iPhone Developer: Some Body (XXXXXXXXXX)" --entitlements entitlements.plist Payload/MyApp.app
您现在可以重新压缩该应用程序。
$ zip -qr MyApp-resigned.ipa Payload
Done
您现在可以删除Payload
目录,因为您有原始应用程序(MyApp.ipa)和重新签名的版本(MyApp-resigned.ipa)。现在,您可以在预配配置文件中包含的任何设备上安装MyApp-resigned.ipa。
发布于 2019-06-03 11:56:10
我认为最简单的方法是使用Fastlane:
sudo gem install fastlane -NV
hash -r # for bash
rehash # for zsh
fastlane sigh resign ./path/app.ipa --signing_identity "Apple Distribution: Company Name" -p "my.mobileprovision"
https://stackoverflow.com/questions/6896029
复制相似问题