$(AppIdentifierPrefix)未被实际的AppIdentifierPrefix取代。有人可以对这个问题有所启发吗?
答案 0 :(得分:4)
因此,当您向应用程序添加 iCloud 或 Game Center 等功能时,我对您YourApp.entitlements
文件的理解已添加到您的项目中。< / p>
(我很想看到官方文档的一些指示......如果存在的话。)
这些权利文件用于什么?
首先,.entitlements
仅适用于 build 进程的项目。 不应该在最终的.app
产品中结束。如果是,请选择.entitlements
文件,然后在文件检查器中,清除目标成员。 (这是Xcode实际生成这些文件的方式,没有任何目标成员资格)
那么.entitlements
文件用于什么呢?它是构建过程的一部分,它以两种形式被采集和处理并放入最终的应用程序包中:
首先:.entitlements
文件的内容嵌入在embedded.mobileprovision
文件中。这是一个带有二进制签名的签名属性列表,但是如果你在文本编辑器中打开它,你可以看到有一个<key>Entitlements</key>
部分应该有处理过的权利。
第二:还有一个名为.entitlements
的{{1}}文件的副本。这与原始archived-expanded-entitlements.xcent
文件基本相同,只是已经处理完毕。
.entitlements文件中可以使用哪些预处理器值
我认为.entitlements
文件的处理不会记录在任何地方。肯定会有一个预处理器在运行它,因此.entitlements
之类的东西会被实际值替换。但是,这似乎与用于$(AppIdentifierPrefix)
文件的文件不同。
Info.plist
与您在Xcode项目中配置的团队标识符相同。您可以在标识部分中的目标常规设置下找到已配置的团队。如果团队设置为无,则会有一个很好的更改,$(AppIdentifierPrefix)
将无法设置。
所以最后回答你的问题:如果你看看我上面提到的那两个文件,你仍然看到
$(AppIdentifierPrefix)
没有被正确替换,请确保你的项目有一个团队标识符已配置。
Xcode如何知道您的目标使用哪些权利文件?
在构建设置中,您可以查看代码签名权利设置,以找出Xcode用于每个构建配置的文件。通常 Debug 和 Release 使用相同的权利文件,但您可以更改它。
(例如,对于Firefox for iOS,我们为 Nightly , Aurora , Beta 和 Release build。这些都有不同的权利文件。我们有不同的权利文件的原因是因为我们无法使$(AppIdentifierPrefix)
预处理器识别.entitlements
之类的设置 - 我很想知道是否有一种方法,因为这将使我们的构建更简单。)
什么工具处理$(PRODUCT_NAME:rfc1034identifier)
个文件?
不完全确定。但是如果你查看构建日志,你会看到一些.entitlements
工具的引用。这似乎是一个内部Xcode命令,而不是作为命令行工具实际存在的东西。所以这不是很有用。
现在您几乎了解我对builtin-productPackagingUtility
个文件的所有了解: - )
(我喜欢评论并将此答案转化为权利文件的权威指南 - 我认为围绕它们存在很多混淆)