关于iPhone / iPad辞职的非常棘手的问题构建行为

时间:2011-05-31 00:19:33

标签: iphone ios ipad ios4 ipa

这就是事情..

场景:

我收到了一个ipa文件,这是我通过Archive + Share进程得到的 使用XCode。 ipa文件使用ad hoc分发证书和 它可以毫无问题地安装。

应用程序会在钥匙串中保存一些信息 使用我刚刚制作的版本访问时没有任何问题。

之后,我使用带有Enterprise的codesign命令重新签名应用程序 在applyaction.app包中进行一些更改后的分发证书。 此更改包括更改应用程序的名称和捆绑ID info.plist文件,当然,替换嵌入式移动配置文件 与新证书相匹配的那个。

问题:

辞职后似乎一切都好,安装和功能似乎都可以正常工作....但是!当我输入信息时 保存在钥匙串中的数据似乎无法加载或擦除 每次关闭应用程序时的钥匙串。

为什么会发生这种情况?

2 个答案:

答案 0 :(得分:8)

我已经搜索了几个小时来解决这个问题...这是解决方案,应用程序辞职如何与我们的应用程序一起工作。我们从客户那里获得了一份IPA文件并用我们的证书辞职。访问钥匙串工作。在我们的案例中,bundle.id没有改变。

您需要哪些文件:

  • MyApp.ipa
  • MyApp_EnterpriseDistribution.mobileprovision(企业分发配置Profil)
  • Entitlements.plist

所有文件都在同一目录中。如果文件位于不同的文件夹中,则必须更改代码中的路径

首先,我们创建一个“Entitlements.plist”。创建一个txt文件并输入以下代码。输入您的应用程序标识符。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>application-identifier</key>
    <string>GBA9L2EABG.com.your.bundle.id.MyApp</string>
    <key>get-task-allow</key>
    <false/>
</dict>
</plist>

保存此文件并将其重命名为:“Entitlements.plist”

打开终端,移至该文件夹并执行此代码,将“MyApp”替换为您的Appname,将“NAME OF YOUR ...”替换为您的证书名称,并将“MyApp_EnterpriseDistribution”替换为您的配置文件:

unzip MyApp.ipa

//we didn't used the following, maybe necessary...
//rm -r "Payload/MyApp.app/_CodeSignature" "Payload/MyApp.app/CodeResources" 2> /dev/null | true

cp MyApp_EnterpriseDistribution.mobileprovision Payload/MyApp.app/embedded.mobileprovision

codesign -f -s "iPhone Distribution: NAME OF YOUR DISTRIBUTION CERTIFICATE" --resource-rules Payload/MyApp.app/ResourceRules.plist --entitlements Entitlements.plist  Payload/MyApp.app

zip -qr MyApp-resigned.ipa Payload/

现在你的证书上有一张Ipa。

提示:具有此名称的证书在您的钥匙串中应该是唯一的......

答案 1 :(得分:4)

好的,这是适用于我们的解决方案。

由于这是一个企业版本,它要求我们更改Entitlements.plist / dist.plist文件,以便app app与Apple网站上输入的内容相匹配。可以在codesign实用程序上提供Entitlements文件。

使用这些说明,但验证Entitlements文件是否与完整的应用ID相匹配。这包括种子ID +包ID。

Re-sign IPA (iPhone)

应用程序将在没有它的情况下正常安装,但这可确保使用适当的权限访问密钥库。