这就是事情..
场景:
我收到了一个ipa文件,这是我通过Archive + Share进程得到的 使用XCode。 ipa文件使用ad hoc分发证书和 它可以毫无问题地安装。
应用程序会在钥匙串中保存一些信息 使用我刚刚制作的版本访问时没有任何问题。
之后,我使用带有Enterprise的codesign命令重新签名应用程序 在applyaction.app包中进行一些更改后的分发证书。 此更改包括更改应用程序的名称和捆绑ID info.plist文件,当然,替换嵌入式移动配置文件 与新证书相匹配的那个。
问题:
辞职后似乎一切都好,安装和功能似乎都可以正常工作....但是!当我输入信息时 保存在钥匙串中的数据似乎无法加载或擦除 每次关闭应用程序时的钥匙串。
为什么会发生这种情况?
答案 0 :(得分:8)
我已经搜索了几个小时来解决这个问题...这是解决方案,应用程序辞职如何与我们的应用程序一起工作。我们从客户那里获得了一份IPA文件并用我们的证书辞职。访问钥匙串工作。在我们的案例中,bundle.id没有改变。
您需要哪些文件:
所有文件都在同一目录中。如果文件位于不同的文件夹中,则必须更改代码中的路径
首先,我们创建一个“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。
应用程序将在没有它的情况下正常安装,但这可确保使用适当的权限访问密钥库。