Ios 生成时未解析$(AppIdentifierPrefix)

Ios 生成时未解析$(AppIdentifierPrefix),ios,xcode,Ios,Xcode,.授权文件中的$(AppIdentifierPrefix)不会被实际的AppIdentifierPrefix替换。有人能解释一下这个问题吗?下面是我对YourApp.Rights文件的理解,当您将iCloud或Game Center等功能添加到应用程序时,该文件会添加到您的项目中 (我希望看到一些指向官方文档的指针……如果有的话。) 这些权利文件的用途是什么? 因此,首先,.authentications仅在您的项目中用于构建过程。它不应该在最终的.app产品中结束。如果是,请选择.authen

.授权文件中的$(AppIdentifierPrefix)不会被实际的AppIdentifierPrefix替换。有人能解释一下这个问题吗?

下面是我对
YourApp.Rights
文件的理解,当您将iCloud或Game Center等功能添加到应用程序时,该文件会添加到您的项目中

(我希望看到一些指向官方文档的指针……如果有的话。)

这些权利文件的用途是什么?

因此,首先,
.authentications
仅在您的项目中用于构建过程。它不应该在最终的
.app
产品中结束。如果是,请选择
.authentications
文件,并在文件检查器中清除其目标成员资格。(这就是Xcode在没有任何目标成员身份的情况下实际生成这些文件的方式)

那么,
.authentications
文件的用途是什么呢?它是构建过程的一部分,在构建过程中,它以两种形式被获取、处理并放入最终的应用程序包中:

  • 第一:
    权利
    文件的内容嵌入到
    嵌入式.mobileprovision
    文件中。这是一个顶部带有二进制签名的已签名属性列表,但如果在文本编辑器中打开它,您会看到一个
    权限
    部分,其中应该包含已处理的权限

  • 第二:还有一个名为
    存档扩展授权.xcent
    授权文件的副本。这基本上与原始的
    权利
    文件相同,只是它已被处理

哪些预处理器值可用于.authentications文件中

我不认为
权利
文件的处理在任何地方都有文档记录。肯定有一个预处理器在其上运行,因此像
$(AppIdentifierPrefix)
之类的内容将替换为实际值。但是,这似乎与用于
Info.plist
文件的不同

$(AppIdentifierPrefix)
与您在Xcode项目中配置的团队标识符相同。您可以在标识部分的目标的常规设置下找到已配置的团队。如果team设置为None,那么将不会设置
$(AppIdentifierPrefix)

最后回答您的问题:如果您查看我上面提到的两个文件,仍然看到
$(AppIdentifierPrefix)
未正确替换,请确保您的项目配置了团队标识符

Xcode如何知道要为您的目标使用哪些授权文件?

在生成设置中,您可以查看代码签名权限设置,以了解Xcode在每个生成配置中使用的文件。调试和发布通常使用相同的授权文件,但您可以更改它

(例如,对于iOS版Firefox,我们有夜间版、极光版、测试版和发布版的构建配置。这些都有不同的权限文件。我们有不同权限文件的原因是我们无法使
。权限
预处理器识别设置,如
$(产品名称:rfc1034identifier)
-我很想知道是否有办法做到这一点,因为这将使我们的构建更加简单。)

什么工具处理
权利
文件?

不完全确定。但是如果您查看构建日志,您将看到一些对
内置ProductPackageUtility
工具的引用。这似乎是一个内部Xcode命令,而不是命令行工具。所以这不是很有用

现在你几乎知道了我所知道的关于
的所有事情


(我很乐意发表评论,并将此答案转化为权利文件的最终指南-我认为围绕这些文件存在很多困惑)

您正在查看内置产品中的哪个文件来确认这一点?我正在查看.app产品中包含的.authorights文件。在我的测试中,使用Xcode 8.0,您似乎可以使用任何构建设置值来预处理
.authorities
文件(就像在
Info.plist
中一样)