iphone - 重新签署 IPA (iPhone)

我目前使用 hudson 构建所有应用程序,使用 xcodebuild 后跟 xcrun 没有任何问题

我从不同的人那里收到了几个 IPA 文件,我想用企业帐户而不是公司帐户重新签名(用于应用商店,或者有时临时分发)。

我的问题是,当我尝试退出应用程序时,它不会安装在我的设备上(它应该安装在我的设备上,因为它是企业版本)。错误消息在设备上(不在 iTunes 中),它只是告诉我它无法安装该应用程序。没有提供更多信息。

我找到了一些信息,(http://www.ketzler.de/2011/01/resign-an-iphone-app-insert-new-bundle-id-and-send-to-xcode-organizer-for-upload/)

这也许是可能的。我面临的问题是它似乎没有嵌入移动配置文件,就像我在正常构建中所做的那样(使用 xcrun)是可以使用 codesign 工具控制的,还是可以使用 xcrun 重新签名?

我目前正在使用我的辞职脚本

  • 解压 app.ipa
  • appname=$(ls Payload)
  • xcrun -sdk iphoneos PackageApplication -s "$provisioning_profile""$project_dir/Payload/$appname"-o "$project_dir/app-resigned.ipa"--sign "$provisioning_profile"--embed "$mobileprovision"

我查看了生成的 ipa 文件,它似乎与原始应用程序非常相似。这里应该真正改变哪些文件?我最初以为 _CodeSignature/CodeResources 会改变,但内容看起来几乎完全一样。

非常感谢指针。

最佳答案

终于搞定了!

使用 cert1 签名的 IPA 进行了测试,用于应用商店提交,并且没有在配置文件中添加任何设备。生成使用企业帐户和用于内部部署的移动配置文件签名的新 IPA(移动配置文件嵌入到 IPA)。

解决方案:

解压 IPA

unzip Application.ipa

删除旧的代码签名

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

编辑:删除权利部分(见小巷评论,谢谢)

https://stackoverflow.com/questions/6896029/

相关文章:

java - 构建与编译 (Java)

build - gmake 和 make 有什么区别?

configuration - 在 Xcode 中添加构建配置

android - 错误 :Execution failed for task ':app:comp

java - 使用 gradle 的多项目测试依赖项

visual-studio - 发生代码更改时,Visual Studio 2010 不会在运行前构

Xcode - 但是......我们的文件在哪里?

java - 如何在 Maven 中读取外部属性文件

xml - 防止将引用的程序集 PDB 和 XML 文件复制到输出

javascript - `npm build` 没有在 package.json 中构建 't r