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

2023-12-28

事情是这样的..

设想:

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

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

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

问题:

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

为什么会发生这种情况?


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

您需要哪些文件:

  • 我的应用程序.ipa
  • 应用程序 Enterprise Distribution.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”替换为您的应用程序名称,将“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。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于 iPhone/iPad 放弃构建行为的非常棘手的问题 的相关文章

随机推荐