ios - 观看跨多个目标共享的应用程序

标签 ios watchkit apple-watch

我的项目有多个构建目标,因此我可以促进共享相同代码的“品牌化”构建,但每个目标都有唯一的包标识符和 Assets 。我为我的一个应用程序目标创建了一个 watch 应用程序,它工作得很好。现在,我正在尝试为我的其他目标使用相同的 watch 应用程序和扩展程序。我想我可以很容易地复制监视目标(监视和扩展)并简单地更改所有 bundle id 引用以匹配其他目标,但似乎某处有一个隐藏的引用。

我只想为所有不同的品牌目标使用一个 watch 应用。

旁注: watch 应用程序还需要正确标记( Assets 文件夹)。

有什么想法吗?谢谢。

解决方案更新

所以,我解决了它。当我复制我的监视目标(监视和扩展),并更改包 ID、目标依赖项以及所有内容以使其与旧目标相同(但当然指向新目标)时,由于某种原因新监视目标没有t 指向正确的 watch 扩展目标。而且在任何地方都无法改变它。我尝试重新复制目标,但仍然遇到同样的问题。

所以我所做的是打开 project.pbxproj 文件,搜索对我的 watch 扩展(和 bundle id)的任何引用并手动更新连接。我的 watch 目标依赖于错误的 watch 扩展,而新的 watch 扩展有一个指向旧 watch 扩展的指针。后来我还发现我必须将构建指向正确的产品引用(appex 引用),因为这也是错误的。

所以新的 watch 目标指向了错误的 watch extension,而正确的 watch extension 指向了错误的 appex(输出文件)。所有这些我都必须在项目文件中手动更改。这听起来既极端又困难,但一旦您记下不同的 UUID,实际上并没有那么困难。

我希望这对可能偶然发现同样奇怪问题的其他人有所帮助。

最佳答案

您绝对不能将一个 Watch 应用程序用于多个目标。因为 Xcode 用于尝试确定是否将 Watch 配套应用程序包含到 bundle 中的唯一因素是 Watch 应用程序的 bundle ID。所以存在一对一的关系。

接下来,您应该为每个 iOS 应用目标复制每个 WatchOS 应用和扩展目标(仅更改包 ID)。但是您仍然可以通过使用 Target Membership 在目标之间共享您的代码(包括 Storyboard和 Assets ),它也解决了品牌 watch 应用程序的问题。最后,您获得了最少的代码重复开销。

更新:我看到您正在尝试通过右键单击目标并选择复制 选项来复制 Watch 目标。由于某种原因,它确实不起作用。

我只是尝试克隆一个 Watch 目标,执行以下步骤:

  1. 文件 -> 新建 -> 目标 -> WatchKit 应用程序。
  2. 指定嵌入配套应用程序所需的目标。
  3. 使用 Target Membership 选项将所有文件添加到新创建的目标。

之后,一个新的 Watch 目标已经构建并运行了一个项目,没有任何问题。

这样您就不必手动更改包 ID - 一切都由 Xcode 自动顺利创建。

关于ios - 观看跨多个目标共享的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34022411/

相关文章:

iphone - iPhone-使用animateWithDuration代替UIView beginAnimations有任何优势吗?

ios - Swift - IOS 中 Data 类型的 deviceToken 和可选 String 类型的 Fir InstanceID token 有什么区别?

ios - Watchkit 和 Realm 0.92.3

xcode - 同时调试 Apple Watch 和 iOS 应用程序

ios - 从 IOS 上传图像文件到 Web 服务器

ios - 从iTunes连接中删除应用程序被拒绝的应用程序连接,因为我想从通用更改为iPhone

ios - 从手机发送一个 UIColor 以观看奇怪颜色的结果

swift - 将字典数组从 iPhone 发送到 watchkit 应用程序

ios - Apple Watch 可以将音乐作为独立应用程序播放吗

swift - 可以在Apple Watch模拟器中播放音频吗? - Xcode 10.1