如何在新的Apple开发证书计划下为Xcode 11中的Watchkitapp和Watchkitapp扩展名正确分配捆绑包标识符

问题描述 投票:0回答:1

我不得不为捆绑了监视包的应用程序丢弃证书和配置文件。

我生成了新的Xcode 11+证书,并为应用程序,监视包和扩展创建了开发和生产配置文件。我为每个标识符构建了配置文件:

app:net.brian-fitzgerald.changeswatchkit:net.brian-fitzgerald.changes.watchkitapp扩展名:net.brian-fitzgerald.changes.watchkitapp.watchkitextension

但是现在看来,预配文件与CFBUNDLEIDENTIFIER的匹配方式已经发生了一些变化。无论我是否在监视包和扩展名info.plist中都使用$(PRODUCT_BUNDLE_IDENTIFIER)$(BUNDLE_SUFFIX)变量,如下所示:

info.plist without variables

或者如果我明确输入它们,如此处:

Info.plist explicit

当我尝试下载配置文件时,它们不会被识别为标识符匹配。该应用程序的供应配置文件列出为“合格”,如果我使用它,则在两种情况下都可以构建该应用程序。但是,在验证构建时,我会遇到两种不同的失败。如果我使用变量构建,则可以使用该应用的配置文件对watchkitapp和扩展名进行签名,但会遇到捆绑标识符冲突。如果我使用显式类型的捆绑包标识符进行构建,则配置文件将在权利文件中声明应用程序标识符不匹配的错误。

Error

权利文件中没有应用程序标识符密钥,它是从应用程序继承的,但是捆绑包后缀似乎无法在构建中识别或存在。

ios xcode watchkit
1个回答
0
投票

找到了。从字面上看,这是浪费时间的日子,我希望这可以节省别人的头发。

info.plist并不是分配Watchkit和Watchkit Extension捆绑包标识的唯一位置。 watchkit应用程序和watchkit扩展目标的“构建设置”中有一个捆绑包标识符键:无论您在info.plist中输入了什么,这些都是配置文件所寻找的匹配项:

enter image description here

要么这些键在Xcode 11中是新的,要么总是在我的应用程序中被错误地设置。如果是后者,我怀疑11版发行说明中描述的行为是罪魁祸首:

Xcode从以下位置的产品的Info.plist文件中删除一些条目如果条目不适合所用平台,则为构建时间内置的,这对于配置为构建的目标很有用适用于多个平台。可以通过设置将设置DISABLE_INFOPLIST_PLATFORM_PROCESSING设置为YES,其中如果目标必须承担管理这些责任适当地输入。 (47797497)

为清楚起见,我没有设置该键,而是通过将Watchkit中的包标识符设置为

net.brian-fitzgerald.changes.watchkitapp

以及在扩展名中

net.brian-fitzgerald.changes.watchkitapp.watchkitextension

我能够将具有这些身份的配置文件分配给目标,并正常构建和上传。

我从未如此高兴地看到绿色的大勾号成功上传。我以为我的应用是烤面包。如果我的分析是正确的,我希望Apple在下一个发行说明中记录此内容。我不是唯一一个会面对这种情况的人,日志线索纯粹是错误的。

© www.soinside.com 2019 - 2024. All rights reserved.