iOS8扩展需要自己的配置文件吗?

48

我正在开发一个iOS 8扩展程序,但在设备上无法运行。尝试运行时出现以下错误:

找不到匹配的预配资料文件

您构建设置中指定的预配资料文件(“ExtensionName”)具有AppID为net.company.AppName,该AppID与您的捆绑标识符net.company.AppName.ExtensionName不匹配。Xcode可以通过从成员中心下载新的预配资料文件来解决此问题。

  1. 主应用和扩展应用程序是否需要分别使用不同的预配资料文件?
  2. 它们是否应该共享一个捆绑标识符(默认情况下,它会将扩展名称添加到捆绑标识符中,因此可能不是)?
  3. 如果它有单独的捆绑标识符,那在预配资料文件中如何反映这一点(如果有单独的捆绑标识符)?

1
我甚至数不清有多少次我添加设备到配置文件时忘记同时将设备添加到扩展配置文件中。除非两个配置文件都对该设备有效,否则它无法安装(Ad-hoc/Enterprise 部署)。 - Andrew
5个回答

27

看起来Xcode更喜欢这种方式,但是你可以使用通配符配置文件,直到你想要进行Adhoc或发布到应用商店。关于你的问题,对于每个目标,您都需要一个配置文件和包标识符。所以是的,你“需要”另一个扩展程序的配置文件,尽管我期望苹果会简化这个过程。

总的来说,最好只使用Wildcard开发配置文件,直到你需要配置文件为止。请记住,这一切都是测试版,他们仍然在几乎所有方面进行工作。


2
今天(Xcode 6 GM和iOS 8 GM发布)尝试进行归档,但需要扩展的预配资料。唉。 - jjxtra
1
通配符配置文件似乎不支持AppGroups,或者可能不支持任何其他类型的权限,因此如果您使用此功能,则需要为您的应用程序和每个扩展名创建一个明确的配置文件。 - Rupert Rawnsley
这个答案还保持最新吗? - Bradley Thomas
1
@BradThomas没错 :). 除了有一个大大的“自动化”按钮之外,他们在代码签名过程方面并没有做太多的更改。如果可以的话,我强烈建议使用它。 - Oxcug

12

扩展是与宿主应用分开的目标。您必须将它们视为具有不同包标识符和不同配置文件的单独应用程序进行处理。

最好在测试期间创建它们,而不是使用通配符,因为您可能需要测试启用的某些功能,例如应用程序组,以便您的扩展和宿主应用可以访问相同的容器。

请注意,如果要为宿主应用程序和扩展启用任何功能,则必须为它们所有单独启用这些功能。


3
我需要使用主机应用程序的预配配置文件来签署扩展吗? - Matt
我需要单独归档扩展名吗?还是只需归档主应用程序并上传到App Store? - Muhammad Shauket
1
@Matt 一个配置文件由以下组成:1个或多个证书+App ID+设备列表。除非您正在使用通配符来为您的App ID,否则主机应用程序和应用程序扩展的AppID不同。因此,您不能使用主机应用程序的配置文件进行签名。但是证书是相同的。设备列表可以相同。 - mfaani

11

我找到了有关应用扩展的文档。如果您阅读第20页底部,似乎建议使用相同的分发证书。我已经将我的Today Extension的bundle标识符更改为延伸我的应用程序。例如,com.DeveloperName.AppName.TodayExtension,在开发者中心创建了一个相应的应用ID,并为其创建了一个分发配置文件。 我通过遵循这些步骤成功更新了我的应用程序+Quotes。我没有遇到任何与应用程序或扩展相关的问题,但是当尝试为我的扩展自动分配正确的配置文件时,Xcode似乎有点困惑。手动选择它们可以解决这个问题。


1
另一位用户报告说您需要单独的证书:https://dev59.com/8l8e5IYBdhLWcg3wVJTH#25981474 - David H
9
另一个用户报告称您需要单独的“配置文件”,他没有提到单独的“证书”。 - Geoff Hackworth
TodayExtension 不是最好的名称,因为它是 Xcode 控制台中调试输出的可执行文件名称。如果太多开发人员使用该进程名称,则调试将变得更加困难。 - malhal
5
应用程序扩展链接已损坏。 - Bradley Thomas
丹尼尔,你说得对。在这种情况下,Xcode确实很烦人。手动选择对我也起作用了。 - Shahid Iqbal

7
您的扩展确实需要一个单独的配置文件,但其证书应与您的主应用程序相同。创建新的配置文件时,您的扩展程序 ID 也将出现在列表中,请选择它并继续创建新的配置文件。
还要在扩展程序的目标中选择该配置文件。
请参见以下截图: enter image description here

3
每个扩展都应创建一个新的AppID,以使其出现在AppIDs列表中。 - Vitalii

1
我通常使用“自动管理登录”功能,直到需要推送到应用商店。这在模拟器中可以直接使用,但尚未在设备上尝试过。
Appstore构建的几个要点:
1. 为每个通知扩展创建一个通配符ID,但此通配符包ID的前缀应与您的应用程序包ID匹配。如果不是这样,将出现此错误:“嵌入式二进制文件的包标识符未以父应用程序的包标识符为前缀”。因此,如果您的应用程序包ID为:“com.companyName.appName”,则扩展的通配符包ID应为“com.companyName.appName.*”。然后,您可以在XCode中将*替换为特定的通知扩展。请注意,苹果只允许在应用程序包ID之后使用一个句点(“.”)来命名扩展的包ID。 2. 扩展的版本号和构建号应与您的应用程序相匹配。 3. 创建App Id后,创建一个分发配置文件,并在XCode中使用它。

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