Lister app是Apple唯一的Apple Watch示例项目之一。它最初是为了支持watchOS 1而编写的,后来在9/16/15进行了更新以支持watchOS2。因此,有许多目标,组等名称不一致,因此很难理解是什么。

我想创建一个类似的项目,其中有一个iOS和带有共享代码/框架的watchOS 2。由于Lister应用程序的复杂性,我很难理解如何设置这样的项目。

如何设置项目,以便可以在watchOS 2和iOS应用之间共享代码? (注意:不需要对watchOS 1的支持。)

作为引用,这是Lister应用程序中的目标,方案和组的列表:

  • 目标: Lister,Lister测试,今日Lister,Lister WatchKit扩展,Lister WatchKit App,ListerKit,ListerKit测试,Lister Watch扩展,Lister Watch App,ListerKit(watchOS),Lister(OS X),今日Lister(OS X) ),ListerKit(OS X),ListerKit测试(OS X)
  • 方案: Lister,Today Lister,Lister WatchKit App,Glance-Lister WatchKit App,ListerKit,Lister Watch App,Glance-Lister Watch App,ListerKit(watchOS),Lister(OS X),Lister Today(OS X), ListerKit(OS X)
  • 组: Lister iOS应用程序,Lister WatchKit应用程序,共享Lister WatchKit代码,Lister Watch应用程序,Lister OS X App,共享ListerKit框架代码,共享Lister资源
  • 最佳答案

    该项目非常复杂,因为它同时支持watchOS 1和watchOS 2。

    概括

    如果您只想支持watchOS 2并在iOS和watchOS 2之间共享代码,则需要创建两个框架,每个平台一个。

    watchOS 1:

    只需在两个目标(Lister WatchKit ExtensionLister Watch Extension)中都包含.swift文件,即可在watchOS 1和 watchOS 2 之间共享

  • 代码。 (请参阅Shared Lister WatchKit代码组。)
  • 代码通过Lister iOS框架(ListerKit)在watchOS 1和 iOS 之间共享。

  • watchOS 2:

    只需在两个目标(Lister WatchKit ExtensionLister Watch Extension)中都包含.swift文件,即可在watchOS 2和 watchOS 1 之间共享
  • 代码。 (请参阅Shared Lister WatchKit代码组。)
  • 通过在Lister iOS框架(List.swift)和Lister watchOS 2框架(ListerKit)中包括共享文件(例如ListerKit (watchOS)),在watchOS 2和 iOS 之间共享
  • 代码。 (请参阅“Shared ListerKit框架代码”组。)

    在watchOS 2 Transition Guide的Sharing Code Between an iOS App and a watchOS App部分中,他们确认了watchOS 2的这种设置:



  • 详细目标信息

    注意:在此项目中,无论您在哪里看到WatchKit,它通常都指向watchOS 1,而Watch则指向watchOS 2。

    Lister iOS应用程序(Lister):
  • 目标:列表器
  • 产品名称: Lister
  • 支持的平台: iOS
  • 组: Lister iOS应用程序/主应用程序
  • 目标依赖项: Lister iOS框架(ListerKit)
  • 目标依赖项: Lister iOS今日小工具(Lister Today)
  • 目标依赖项: Lister watchOS 2 App(Lister Watch App)
  • 目标依赖项: Lister watchOS 1扩展(Lister WatchKit Extension)
  • 链接与: Lister iOS Framework(ListerKit.framework)
  • 嵌入: Lister iOS框架(ListerKit.framework)
  • 嵌入: Lister watchOS 1扩展名(Lister WatchKit Extension.appex)
  • 嵌入: Lister iOS应用程序(Lister.appex)
  • 嵌入: Lister watchOS 2 App(Lister Watch App.app)

  • Lister iOS Today小部件(Lister TodayLister):
  • 目标:今天的Lister
  • 产品名称: Lister
  • 支持的平台: iOS
  • 组: Lister iOS应用程序/今天的小部件
  • 目标依赖项: Lister iOS框架(ListerKit)
  • 链接与: Lister iOS Framework(ListerKit.framework)
  • 用法: Lister iOS应用程序(Lister)

  • Lister iOS框架(ListerKit):
  • 目标: ListerKit
  • 产品名称: ListerKit
  • 支持的平台: iOS
  • 组: Lister iOS应用程序/ListerKit框架(iOS)
  • 组:共享ListerKit框架代码
  • 用法: Lister iOS应用程序(Lister)
  • 用于: Lister iOS今日小工具(Lister Today)
  • 用于: Lister watchOS 1扩展名(Lister WatchKit Extension)

  • Lister watchOS 1扩展名(Lister WatchKit Extension):
  • 目标: Lister WatchKit扩展
  • 产品名称: Lister WatchKit扩展
  • 支持的平台: iOS
  • 组: Lister WatchKit应用程序/Lister WatchKit扩展
  • 组:共享列表器WatchKit代码
  • 目标依赖项: Lister iOS框架(ListerKit)
  • 目标依赖项: Lister watchOS 1应用程序(Lister WatchKit App)
  • 用法: Lister iOS应用程序(Lister)

  • Lister watchOS 1应用程序(Lister WatchKit App):
  • 目标: Lister WatchKit应用程序
  • 产品名称: Lister WatchKit App
  • 支持的平台: iOS
  • 组: Lister WatchKit应用程序/Lister WatchKit应用程序
  • 用于: Lister watchOS 1扩展名(Lister WatchKit Extension)

  • Lister watchOS 2扩展名(Lister Watch Extension):
  • 目标: Lister监视扩展
  • 产品名称: Lister Watch扩展
  • 支持的平台: watchOS
  • 组: Lister Watch应用程序/Lister Watch扩展
  • 组:共享列表器WatchKit代码
  • 组: Lister Watch App/ListerKit框架(watchOS)
  • 目标依赖项: Lister watchOS 2框架(ListerKit (watchOS))
  • 链接与: Lister watchOS 2 Framework(ListerWatchKit.framework)
  • 嵌入: Lister watchOS 2框架(ListerWatchKit.framework)

  • Lister watchOS 2应用程序(Lister Watch App):
  • 目标: Lister Watch App
  • 产品名称: Lister Watch App
  • 支持的平台: watchOS
  • 组: Lister Watch App/Lister Watch App
  • 用法: Lister iOS应用程序(Lister)

  • Lister watchOS 2 Framework(ListerKit (watchOS)ListerWatchKit):
  • 目标: ListerKit(watchOS)
  • 产品名称: ListerWatchKit
  • 支持的平台: watchOS
  • 组: Lister iOS应用程序/ListerKit框架(iOS)/iCloud和本地存储/ListUtilities.swift
  • 组:共享ListerKit框架代码
  • 用于: Lister watchOS 2扩展名(Lister Watch Extension)

  • 注意事项:
  • Shared Lister WatchKit Code组包含watchOS 1和watchOS 2扩展共享的代码。
  • Lister Watch App/ListerKit Framework (watchOS)组的名称意味着它应该是ListerKit (watchOS)目标的一部分,但是它是Lister Watch Extension目标的一部分。
  • * Shared ListerKit Framework Code主要用于在iOS,watchOS和OS X ListerKit框架之间共享代码。但是,ListerKit (watchOS)目标中省略了一些文件:SegueHandlerType.swiftCheckBoxLayer.swift
  • 尽管该项目中主要使用术语WatchKit来表示watchOS 1,但Lister watchOS 2 Framework的产品名称为ListerWatchKit,但仅在watchOS 2中使用。注意:watchOS 1不使用框架。
  • 我从列表中省略了OS X组/目标/等。
  • 关于ios - 如何在iOS和watchOS 2之间建立与Lister App类似的共享框架的项目?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34387128/

    10-09 16:50