将 .ipa 从分发版退出到开发者资料
Posted
技术标签:
【中文标题】将 .ipa 从分发版退出到开发者资料【英文标题】:Resigning .ipa from distribution to developer profile 【发布时间】:2016-02-22 10:34:55 【问题描述】:我在退出之前使用分发配置文件签名的 .ipa 文件时遇到了问题。尽管该应用程序通过 iTunes 成功安装,但它在启动时崩溃。我需要开发人员签名的二进制文件才能对其进行 appium 测试,但我没有源代码,只有 ipa 文件。因此,我按照以下步骤在我的个人资料上签名。
unzip distrBuild.ipa
cp myProvisioningProfile.mobileprovision Payload/Application.app/embedded.mobileprovision
codesign -f -s "iPhone Developer: Nad Arian" --entitlements entitlements.plist Payload/Application.app
我的 entitlements.plist 如下:
<dict>
<key>keychain-access-groups</key>
<array>
<string>34XXXXXXXX.*</string>
</array>
<key>get-task-allow</key>
<true/>
<key>application-identifier</key>
<string>34XXXXXXXX.com.myapp.resigned</string>
<key>com.apple.developer.team-identifier</key>
<string>34XXXXXXXX</string>
<key>aps-environment</key>
<string>development</string>
</dict>
</plist>
问题在于,尽管应用程序通过 iTunes 成功安装,但它在启动时崩溃并显示以下日志:
kernel[0] <Notice>: AMFI: QuickFix(pid 931) - [deny-mmap] process has team identifier 34XXXXXXXX: /private/var/mobile/Containers/Bundle/Application/57503E66-DC05-4F83-8EBC-1DC914238ACA/QuickFix.app/Frameworks/MFCoreData.framework/MFCoreData
kernel[0] <Notice>: AMFI: QuickFix(pid 931) - [deny-mmap] mapped file has team identifier Q6YYYYYYYY: /private/var/mobile/Containers/Bundle/Application/57503E66-DC05-4F83-8EBC-1DC914238ACA/QuickFix.app/Frameworks/MFCoreData.framework/MFCoreData
kernel[0] <Notice>: AMFI: QuickFix(pid 931) - [deny-mmap] mapped file does not the same team identifier as main process: /private/var/mobile/Containers/Bundle/Application/57503E66-DC05-4F83-8EBC-1DC914238ACA/QuickFix.app/Frameworks/MFCoreData.framework/MFCoreData
我尝试将 --deep
标志与 codesign 一起使用,但问题仍然存在。配置文件有问题还是权利错误?为什么/在哪里仍然存储旧的团队标识符?我也使用了 iResign 工具,结果相同。
【问题讨论】:
这和appium有什么关系?如果没有,我们应该更改标签吗? 该应用程序是否有任何嵌入式框架或扩展?您可能还需要辞去他们的职务。 @Mats 我试图像here 一样辞职,但结果相同。这太奇怪了,因为我曾经设法放弃了一个构建,看来我这次一定错过了一些步骤。 【参考方案1】:您必须在签署 .app 之前退出框架
codesign -f -s “codeSigningCertificateName“ applicationName.app/Frameworks/*
注意:
如果您使用相同的证书为 .app 签名,则无需执行上述步骤。
【讨论】:
我已经尝试过了,但对我来说,它仍然在启动时崩溃,并出现完全相同的错误 -mapped file does not have the same team identifier as the main process
。知道还有什么可以尝试的吗?
你签署了所有的框架吗?你试过 * 通配符吗?
是的,我做到了。我只有一个框架,但我尝试了使用通配符和没有。我发布了一个问题,显示了崩溃的整个堆栈跟踪——如果你有时间,你能不能看看它,看看你是否发现我做错了什么?谢谢你的建议!
@SaiyanGirl - 当然
@DuraiAmuthan.H 我收到以下错误 ***.app/Frameworks: bundle format unrecognized, invalid, or unsuitable以上是关于将 .ipa 从分发版退出到开发者资料的主要内容,如果未能解决你的问题,请参考以下文章
如何部署ad-hoc分发(ipa文件)或如何将iTunes与设备同步
我们可以在 Testflight 上分发使用 Enterprise developer program 签名的 ipa 文件吗?