Watchkit扩展 - 未找到匹配的配置文件

61

我创建了一个 iPhone 应用程序,其中包含一个 WatchKit 扩展。在模拟器中可以正常运行,但在尝试部署到 iPhone 时,WatchKit 扩展目标出现了证书问题:

“您的构建设置中指定的预配配置文件(“XXXX”)具有“XXXX” AppID,与您的包标识符“XXXX.watchkitextension”不匹配。Xcode 可以通过从会员中心下载新的预配配置文件来解决此问题。”

Xcode 自动使用后缀 .watchkitextension 和 .watchkitapp 创建 WatchKit 目标,但这似乎在使用预配配置文件并部署到 iPhone 时引起了问题。

如果删除 watchkit 目标,则可以正常运行,但这显然不是一个解决方案。

感谢您的帮助。


我们需要再等一段时间。在正式发布日期前大约两周,苹果将会给我们上传应用到App Store的机会。 - Dima Deplov
请查看我的答案:http://stackoverflow.com/a/30663352/3717931希望这可以帮到你。 - Jouhar
7个回答

111
你需要在开发者门户中创建两个新的AppIDs,并使用正确的捆绑标识符为你的Watchkit应用和Watchkit扩展程序。 捆绑标识符必须扩展主应用程序的标识符,因此如果你的应用程序是com.myapp,那么它应该是com.myapp.watchkitextensioncom.myapp.watchkitapp
你还需要为AppIDs创建相关的Provisioning Profiles,一个用于扩展程序,一个用于应用程序。如果你在Watch应用程序中使用了所需的插件(如Keychain),请添加它们。
总共你将需要六个PPs,3个用于开发,3个用于存档/商店。 使用Xcode 6.3进行开发时,团队预配对于开发已经停止工作(对我来说)。
接下来,前往Xcode>首选项>帐户>YOUR_ACCOUNT>查看详细信息...,CTRL + 单击其中一个配置文件并在Finder中打开。 将所有配置文件移到垃圾箱中,然后刷新配置文件。
在您的目标中,确保为主要应用程序目标、Watchkit扩展目标和Watchkit应用程序目标设置了正确的团队,并确保正确分配了主应用程序目标和Watchkit扩展目标的配置文件(Watchkit应用程序配置文件不能设置,但会自动分配 编辑:使用Xcode 6.3可以设置)。
为确保一切正常,请清除构建文件夹:在Xcode中按住command键,然后执行 Product > Clean build folders ... 现在,您已经准备好进行归档了。

6
我觉得很奇怪,Xcode会为应用程序和watchkitextension创建配置文件,但它不会为watchkitapp创建配置文件,而是将其分配给通用的"XC *"配置文件。然后它也以这种方式验证并上传到iTunes Connect。 - Rivera
1
当我尝试为扩展和应用程序创建新的应用程序ID时,出现以下消息:“标识符为'com.myapp.watchkitextension'的应用程序ID不可用。请输入其他字符串。” 我被卡住了。需要创建新的应用程序ID和相关的配置文件,但iOS开发中心不允许我这样做。 - David Ben Ari
@dogsgod,你有创建扩展和应用程序的应用ID的想法吗? - David Ben Ari
当然:打开开发者门户并从那里创建它们。只需确保您的主应用程序的命名空间需要扩展(如第一段所述)。自从我发布这篇文章以来,苹果提供了一些文档。还有一个提示-不要使用注释发布问题... - dogsgod
1
这个!这个!这个!在我遇到很多挫折后,完全为我解决了问题。真的很遗憾这个过程如此不透明,错误信息也如此晦涩难懂。 - davidgoli
显示剩余4条评论

4
在我的情况下,我按照其他用户的建议清除了所有的配置文件,然后我不得不从“Build Settings”中删除“App parent”和“extention target”的“code signing entitlements”,重建并归档后,一切都正常了。

code signing entitlements from build Settings


经过两天为我工作,Xcode 发布时变得非常嘈杂。 - Khaled Alhayek

2

我按照技术问答QA1814的方法解决了问题。基本上,你需要将所有设置改为自动iOS开发人员。很重要的是首先将Team: 设为默认,做出更改后再改回你的Team,然后重新启动Xcode。

我的情况是我已经为一个“普通”的iOS应用程序设置了配置文件和证书。我已经成功发布了这样的应用程序。现在我需要在现有应用程序中添加一个新的WatchKit目标并使其工作。我遇到了许多错误,例如“没有匹配的配置文件”等等。经过多个小时的麻烦,在QA1814文章中的路线指引下,嗨呼!- Xcode为我解决了所有问题。不需要在会员中心更改/解决/更新任何内容。

还要正确使用Bundle ID。 WatchKit应用程序和WatchKit扩展必须使用与iOS应用程序目标相同的Bundle ID前缀。

如果iOS应用程序具有Bundle ID:[Bundle ID],则WatchKit目标应该是:

  • WatchKit应用程序:[Bundle ID].watchkit
  • WatchKit扩展:[Bundle ID].watchkit.extension

2

我创建了3个App IDs(用于容器应用、WatchKit扩展和WatchKit应用程序),每个ID都对应着3个配置文件。(由于我想使用AppGroup,所以我的应用不能共享单个App ID。)

为容器应用和WatchKit扩展设置2个配置文件后,我的应用程序档案无法通过Xcode的验证过程。

在我的情况下,关键是设置WATCHKIT APP的配置文件。设置后,它通过了验证过程,并成功地提交了应用程序。

我的设置步骤如下:

  1. 在Xcode中打开WatchKit App的“TARGET”。
  2. 选择“Build Settings”选项卡。
  3. 在选项卡的下一行中,选择“全部”,而不是“基本”。
  4. 然后,在“代码签名”部分中可以找到“配置文件”行。
  5. 设置您的适当配置文件。

有一段时间,我认为第三方应用程序开发人员无法在Xcode中设置WatchKit应用程序的配置文件。现在意识到我们可以设置它,答案变得清晰了...


设置适当的配置文件。其他解决此问题的答案建议使用“自动”,但在我的情况下并没有起作用。选择特定的配置文件确实有效。 - nicc

1

0
在我的情况下,问题与其他人不同。我尝试了一切但没有解决我的问题。在解释如何解决它之前,让我先解释一下我的情况。首先,我为我的项目添加了Today Extension。我为我的应用程序扩展创建了不同的bundle ID。例如,如果我的应用程序的bundle ID是com.company.appname,那么我为我的扩展创建了类似于“com.company.appname.TodayExtension”的东西。我使用的是XCode版本6.3.2(6D2105),XCode自动(您构建设置中指定的配置文件(“AppName”)具有“BundleID”的AppID,该AppID与您的包标识符“BundleID2”不匹配。 Xcode可以通过从会员中心下载新的配置文件来解决此问题...当然我点击了“修复问题”按钮)为Today Extension创建一个配置文件。

就在那之后,我为我的应用程序添加了“应用组”,并继续编码了一段时间。但是,当我尝试将我的应用程序发送到AppStore(Product/Archive/Submit to AppStore)时,我收到了这个错误消息:“None of the valid provisioning profiles allowed the specified entitlements: beta-reports-active, com.apple.security.application-groups”。

你必须知道,“应用组”也可能是你的关键点...

请前往会员中心/Certificates, Identifiers & Profiles/Provisioning Profiles/Distribution部分。找到您应用程序的Distribution配置文件并选择它。您会发现您的配置文件状态为“无效”(就像我的情况一样)。然后,点击编辑按钮,接着点击生成按钮。现在,请重复此操作以验证所有“无效”配置文件。当您的所有配置文件重新验证后,您可以返回XCode项目并更新Mac上的本地配置。前往:Xcode > 首选项 > 帐户 > 您的帐户 > 查看详细信息...,CTRL + 单击其中一个配置文件并在Finder中打开。将所有配置文件移到垃圾桶中,然后刷新配置文件。
现在,进行产品清理和(希望是最后一次)产品归档并提交到AppStore。
一般来说,这是因为您向应用程序添加了应用组,但之后没有验证所有配置文件。
也许这会对某些人有所帮助。

0

当您在Xcode更新您的证书并重新编译程序后,真实机器调试将会出现“您的构建设置指定了一个UUID为'XXX'的配置文件,但未找到任何配置文件。Xcode可以通过从会员中心下载新的配置文件来解决此问题。”。


  1. 关闭项目,找到项目文件XXXX.xcodeproj,在文件上右键,选择“显示包内容”(Show Package Contents),会打开一个新的Finder。
  2. 在新打开的Finder中找到项目.pbxproj文件,并打开,查找UUID中所有包含错误'XXX'的行,删除。
  3. 保存,重新启动项目,然后构建,就可以了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接