将 .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 从分发版退出到开发者资料的主要内容,如果未能解决你的问题,请参考以下文章

分发带有开发者证书的 MAC OS 软件

尝试构建 .ipa 文件时一次又一次意外退出

如何部署ad-hoc分发(ipa文件)或如何将iTunes与设备同步

如何使用分发配置文件将 iPA 安装到特定设备

从 Xcode 导出 IPA 以使用另一个分发证书重新签名

我们可以在 Testflight 上分发使用 Enterprise developer program 签名的 ipa 文件吗?