如何在 XCode 6.3 iOS 项目中找到权利 plist 文件

How to locate the entitlements plist file in an XCode 6.3 iOS project

我有一个比较复杂的问题,下面描述一下上下文。解决方案似乎归结为手动编辑权利 plist 文件。

我在我的项目中找不到任何 entitlements.plist 文件,并且在我找到的其他 plist 文件中找不到任何 "entitlements" 部分。

问题是,如何找到 entitlements plist 文件?


现在介绍背景故事:

我需要为我们部署的企业应用程序创建一个新的配置文件(旧的很快就会过期)。在不同的环境中有多个版本 运行(都具有相同的应用程序 ID)。由于某种原因,当前版本的应用程序不再包含权利 "com.apple.developer.team-identifier"。更新配置文件时,此权利也会自动从配置文件中删除。这会导致所有旧版本的应用程序停止工作。他们无法启动,控制台日志中出现此错误:

entitlement 'com.apple.developer.team-identifier' has value not permitted by provisioning profile 'My Profile'

根据 Apple 支持,我们必须将所有这些应用程序更新到最新版本,这当然是不可能的,因为有些应用程序是在较旧的环境中生产的,并不都与最新功能兼容。 (我们也不打算为所有客户提供免费升级)。所以,Apple 的官方解决方案不是一个选项。

根据 this comment 在相关问题上的说法,应该可以重新引入对缺失权利的依赖。我想如果我可以将权利添加到当前应用程序,重新生成它,然后为它生成一个新的配置文件,问题可能会得到解决。

回答

我的应用程序使用默认功能,在这种情况下没有 entitlements.plist 文件。我能够通过在 UI 中添加一些功能(然后再次删除它们)来添加一个。

跟进

最后这并没有解决我的问题,结果是不同的,因为这个权利已经在之前生成的配置文件中(具有默认功能)。我只是在比较生成的配置文件时才注意到这一点(它们是相同的)。

控制台日志中的错误似乎是由 plist 中的差异引起的:

之前的配置文件:

<key>com.apple.developer.team-identifier</key>
<array>
    <string>SomeIdentifier</string>
</array>

新配置文件:

<key>com.apple.developer.team-identifier</key>
<string>SomeIdentifier</string>

可能可以通过添加额外的团队标识符使其再次成为数组来使配置文件再次兼容,但这是另一个问题,我 .