【问题标题】:iOS8 extension needs own provisioning profile?iOS8 扩展需要自己的配置文件?
【发布时间】:2014-10-09 08:55:09
【问题描述】:

我正在启动一个 iOS 8 扩展程序,但我无法在我的设备上运行它。尝试运行时的错误是:

找不到匹配的配置文件

您的构建设置中指定的配置文件 (“ExtensionName”) 的 AppID 为 net.company.AppName 匹配你的包标识符net.company.AppName.ExtensionName。 Xcode 可以通过下载新的配置文件来解决这个问题 来自会员中心。

  1. 我是否需要为主应用程序和扩展程序提供单独的配置文件?
  2. 他们是否应该共享一个包标识符(默认情况下,它会将扩展名添加到包标识符中,所以可能不是)?
  3. 如果它有一个单独的包标识符,它是如何反映在配置文件中的(如果有一个单独的)?

【问题讨论】:

  • 我什至无法计算将设备添加到配置文件中的次数,并且忘记将设备添加到扩展配置文件中。除非两个配置文件都对设备有效,否则它不会安装(临时/企业部署)。

标签: ios xcode provisioning-profile ios-app-extension bundle-identifier


【解决方案1】:

我只是使用“自动管理登录”,直到我需要推送到 App Store。这在模拟器上开箱即用,尚未在设备上尝试过。

Appstore Build 的几点建议:

  1. 我为每个通知扩展创建了一个通配符 ID,但是这个通配符捆绑 ID 的前缀应该与您应用的捆绑 ID 作为前缀匹配。如果不是这样,就会出现这个错误:"Embedded binary's bundle identifier is not prefixed with parent app's bundle identifier"。因此,如果您的应用的 bundle-id 是:"com.companyName.appName",那么您的扩展程序的通配符 bundle-id 应该是 "com.companyName.appName.*" >。然后,您可以将 * 替换为 XCode 中的特定通知扩展。请注意,Apple 只允许在应用的 bundle id 后加一个句点(“.”)来命名您的扩展程序的 bundle id。
  2. 您的扩展程序的版本和内部版本号应与您的应用程序相匹配。
  3. 创建 App Id 后,使用它创建一个分发配置文件并在 XCode 中使用它。

【讨论】:

    【解决方案2】:

    您的扩展确实需要一个单独的配置文件,但您的主应用具有相同的证书。当您创建新的配置文件时,您的扩展程序的应用程序 ID 也会出现在列表中,选择它,然后继续创建新的配置文件。

    还要在扩展的目标中选择该配置文件。

    【讨论】:

    • 我还要补充一点,应该为每个扩展程序创建一个新的 AppID 以使其出现在 AppIDs 列表中。
    【解决方案3】:

    我找到了与App Extensions 相关的文档。如果您阅读第 20 页的底部,似乎实际上建议使用相同的分发证书。我已经继续并更改了 Today Extension 的包标识符以扩展我的应用程序。例如,com.DeveloperName.AppName.TodayExtension,在Dev Center 中创建了一个与之对应的 App ID,并为其创建了分发配置文件。 我的应用程序+Quotes 已按照以下步骤成功更新。我在应用程序或扩展程序方面没有遇到任何问题,但 Xcode 现在在尝试为我的扩展程序自动分配正确的配置文件时似乎有点困惑。手动选择它们可以解决这个问题。

    【讨论】:

    • 另一位用户报告您需要单独的证书:stackoverflow.com/a/25981474/1633251
    • 其他用户报告您需要单独的配置文件。他对单独的证书只字未提。
    • TodayExtension 不是最好的名称,因为那是 Xcode 控制台中用于调试输出的可执行名称。如果太多开发人员使用该进程名称,调试将变得更加困难。
    • 应用扩展链接已损坏
    • 丹尼尔,你是对的。在这种情况下,Xcode 非常烦人。手动选择也对我有用。
    【解决方案4】:

    扩展是独立于宿主应用的目标。您必须将它们视为具有不同捆绑标识符和不同配置文件的独立应用程序。

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

    请注意,如果您想为您的主机应用程序和扩展程序启用任何功能,您必须为所有它们单独启用它们。

    【讨论】:

    • 我是否需要使用宿主应用的配置文件对扩展进行签名?
    • 我需要单独存档扩展吗?还是只是归档主应用并上传到应用商店?
    • @Matt 配置文件由以下部分组成:1 个或多个证书 + 应用程序 ID + 设备列表。除非您使用 wildcards 作为您的 App ID,否则您的主机应用程序和应用程序扩展的 AppID 是不一样的。因此,您无法使用主机应用程序的配置文件进行签名。然而证书是一样的。设备列表可以相同
    【解决方案5】:

    Xcode 似乎更喜欢这种方式,但是没有什么能阻止您使用通配符配置文件,直到您想要执行 Adhoc 或发布到 App Store。不过,更重要的是,对于您拥有的每个目标,您都需要一个配置文件和捆绑 ID。所以,是的,您“需要”为您的扩展提供另一个配置文件,尽管我希望 Apple 能够简化此过程。

    总而言之,在您需要配置文件之前,最好只使用通配符开发配置文件。请记住,这只是一个测试版,他们仍在开发几乎所有内容。

    【讨论】:

    • 今天尝试存档(Xcode 6 GM 和 iOS 8 GM 的发布),它需要扩展的配置文件。叹息。
    • WildCard 配置文件似乎不支持 AppGroups 或任何其他类型的权利,因此如果您使用此功能,您需要为您的应用创建一个明确的配置文件,并为每个扩展创建一个。跨度>
    • 这个答案是否仍然是最新的?
    • @BradThomas 是的 :)。他们在代码签名过程方面没有太大变化,除了他们有一个很大的“自动化”按钮。如果可以的话,我强烈推荐使用它。
    猜你喜欢
    • 2014-11-12
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    • 2015-02-17
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多