非常棘手的问题,关于iPhone / iPad辞职build立行为

这是事情..

场景:

我得到了一个ipa文件,这是使用XCode进行存档+共享过程的结果。 ipa文件使用临时分发证书进行签名,可以毫无问题地安装。

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

之后,在对applicaction.app包进行了一些更改之后,我使用带有Enterprise分发证书的codesign命令重新签署应用程序。 此更改包括从info.plist文件中更改应用程序的名称和软件包标识,当然,请将embedded的移动设置configuration文件replace为与新证书相匹配的configuration文件。

问题:

辞职后似乎都没事,安装和function似乎工作正常….但! 当我input保存在钥匙串中的信息时,每次closures应用程序时,数据似乎都不会加载或从钥匙串中擦除。

为什么会发生这种想法?

好的,这是为我们工作的解决scheme。

由于这是一个企业版本,它需要我们改变Entitlements.plist / dist.plist文件,以便应用程序ID匹配在苹果网站上input的内容。 权利文件可以在编码工具上提供。

使用这些说明,但validation权利文件匹配完整的应用程序ID。 这包括种子ID +捆绑ID。

重新签署IPA(iPhone)

没有它的应用程序将安装好,但这确保密钥库正在访问具有适当的权限。

我已经search了几个小时这个问题…这是解决scheme,应用程序如何辞职与我们的应用程序工作。 我们从客户处获得IPA文件,并使用我们的证书进行辞职。 访问钥匙串的作品。 在我们的情况下,bundle.id没有改变。

你需要哪些文件:

  • MyApp.ipa
  • MyApp_EnterpriseDistribution.mobileprovision(Enterprise Distribution Provisioning Profil)
  • Entitlements.plist

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

首先,我们创build一个“Entitlements.plist”。 创build一个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”

打开terminal,移动到文件夹并执行此代码,将“MyApp”replace为您的Appname,“您的名称”replace为您的证书名称,将“MyApp_EnterpriseDistribution”replace为您的供应文件:

 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你的证书。

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