【问题标题】:Watchkit app include in two different targetsWatchkit 应用程序包含在两个不同的目标中
【发布时间】:2015-07-03 17:17:25
【问题描述】:

我正在尝试将 watchkit 应用程序集成到现有应用程序中。由于我们有用于测试的企业版以及公共应用程序,因此有两个不同的应用程序目标:

com.mycompany.productname
com.mycompany.internal.productname

我在内部目标上成功构建了 watchkit 应用程序,但我无法将相同的 watchkit 应用程序链接到应用程序目标。这是我收到的错误:

Embedded binary's bundle identifier is not prefixed with the parent app's bundle identifier

我知道这是因为 WatchKit 扩展应该有一个以应用程序目标的包标识符为前缀的包标识符,但不幸的是,这两个目标的这些标识符并不相同,所以我的 WatchKit 扩展不能将它们都作为前缀。有解决此问题的建议吗?

【问题讨论】:

  • 不确定我是否完全理解。为什么你不能按照错误所说的那样做?具有相同前缀的手表扩展程序和父应用程序。在我们的项目中,我们有一个单独的方案设置,我们可以在它之间切换,为我们处理这些 bundleID 更改。
  • 由于该应用程序有两个不同的目标,一个用于企业 beta 测试,一个用于生产,它使用两个不同的包标识符。因此,watchapp 只能匹配其中一个。我正在寻找一种方法,允许我们为任一目标构建,而无需根据正在构建的目标切换 watchapp 项目的捆绑标识符
  • 我很确定你不能那样做。 bundleID、内部版本号和版本号必须全部匹配。不过,手表扩展在 bundleID 中会有“扩展”。如果您想避免连续切换甚至在同一设备上运行这两个应用程序,此链接将为您提供有关如何使用方案做到这一点的想法。 swwritings.com/post/…

标签: ios xcode watchkit


【解决方案1】:

您可以将另一个 WatchKit App 目标添加到您的项目中,并将其嵌入到您的其他构建目标中。

Xcode 将创建一个新的故事板、Info.plist 和一些视图控制器,但您可以删除所有这些新创建的文件。

然后,复制原始 WatchKit App 的 Info.plist,重命名,并将第二个 WatchKit App 指向此副本。

两个 WatchKit 应用现在将使用相同的文件(故事板等),并且您将能够使用不同的包标识符和配置文件,因为它们都有自己的 Info.plist。

如果您希望我使用屏幕截图来解释自己,请告诉我。

【讨论】:

  • 这是唯一合理的解决方案吗?
  • 同样的问题 - 2018 年。它是唯一的解决方案。另外我想问一下,如果我需要将 watchkit 从一个目标移动到另一个目标怎么办?我也应该创建另一个目标吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-12
  • 2015-07-03
  • 2016-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多