5

事情是这样的。。

设想:

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

该应用程序将一些信息保存在钥匙串中,使用我刚刚制作的构建可以毫无问题地访问这些信息。

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

问题:

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

为什么会发生这种情况的想法?

4

2 回答 2

8

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

您需要哪些文件:

  • 我的应用程序.ipa
  • MyApp_EnterpriseDistribution.mobileprovision(企业分发配置文件)
  • 权利.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 和你的证书。

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

于 2012-11-29T10:07:30.967 回答
4

Ok, here's the solution that worked for us.

Since this was an Enterprise build, it required us to change the Entitlements.plist/dist.plist file so that the app id matched what was entered on Apple's site. The Entitlements file can be provided on the codesign utility.

Use these instructions but verify the Entitlements file matches the full app id. This includes the seed id + bundle id.

Re-sign IPA (iPhone)

The app would install fine without it, but this ensures the keystore is being accessed with the proper authority.

于 2011-08-24T17:22:34.460 回答