iphone - 重新签署 IPA (iPhone)

标签 iphone build codesign ipa

我目前使用 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

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

关于iphone - 重新签署 IPA (iPhone),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6896029/

相关文章:

iphone - 寻求 CSS 向导...在 iOS webView 中不守规矩的内联 CSS div/class/style

objective-c - 如何以编程方式在 iOS9 的 objective-c 中打开 WIFI 设置

build - 如何在Android.bp中添加条件代码

vba - 通过命令行或其他形式的自动化签署 Word VBA 项目/文件

javascript - 网站 javascript 未在 iphone 上运行(safari)

iphone - 使用 NSUserDefaults 保存和显示数据

visual-studio - 如何使用专有编解码器在 Windows 上编译 Qt webengine (5.11)

build - nuxt.js - "This page could not be found"在带有 base./的静态页面上

macos - 对框架进行代码签名失败,出现 "Permission denied"错误

ios - Xcode如何设置EXPANDED_CODE_SIGN_IDENTITY?