Lister app是Apple唯一的Apple Watch示例项目之一。它最初是为了支持watchOS 1而编写的,后来在9/16/15进行了更新以支持watchOS2。因此,有许多目标,组等名称不一致,因此很难理解是什么。
我想创建一个类似的项目,其中有一个iOS和带有共享代码/框架的watchOS 2。由于Lister应用程序的复杂性,我很难理解如何设置这样的项目。
如何设置项目,以便可以在watchOS 2和iOS应用之间共享代码? (注意:不需要对watchOS 1的支持。)
作为引用,这是Lister应用程序中的目标,方案和组的列表:
最佳答案
该项目非常复杂,因为它同时支持watchOS 1和watchOS 2。
概括
如果您只想支持watchOS 2并在iOS和watchOS 2之间共享代码,则需要创建两个框架,每个平台一个。
watchOS 1:
只需在两个目标(Lister WatchKit Extension
和Lister Watch Extension
)中都包含.swift文件,即可在watchOS 1和 watchOS 2 之间共享
ListerKit
)在watchOS 1和 iOS 之间共享。 watchOS 2:
只需在两个目标(
Lister WatchKit Extension
和Lister Watch Extension
)中都包含.swift文件,即可在watchOS 2和 watchOS 1 之间共享List.swift
)和Lister watchOS 2框架(ListerKit
)中包括共享文件(例如ListerKit (watchOS)
),在watchOS 2和 iOS 之间共享在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
):ListerKit
)Lister Today
)Lister Watch App
)Lister WatchKit Extension
)ListerKit.framework
)ListerKit.framework
)Lister WatchKit Extension.appex
)Lister.appex
)Lister Watch App.app
)Lister iOS Today小部件(
Lister Today
或Lister
):ListerKit
)ListerKit.framework
)Lister
)Lister iOS框架(
ListerKit
):Lister
)Lister Today
)Lister WatchKit Extension
)Lister watchOS 1扩展名(
Lister WatchKit Extension
):ListerKit
)Lister WatchKit App
)Lister
)Lister watchOS 1应用程序(
Lister WatchKit App
):Lister WatchKit Extension
)Lister watchOS 2扩展名(
Lister Watch Extension
):ListerKit (watchOS)
)ListerWatchKit.framework
)ListerWatchKit.framework
)Lister watchOS 2应用程序(
Lister Watch App
):Lister
)Lister watchOS 2 Framework(
ListerKit (watchOS)
或ListerWatchKit
):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.swift
,CheckBoxLayer.swift
WatchKit
来表示watchOS 1,但Lister watchOS 2 Framework的产品名称为ListerWatchKit
,但仅在watchOS 2中使用。注意:watchOS 1不使用框架。 关于ios - 如何在iOS和watchOS 2之间建立与Lister App类似的共享框架的项目?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34387128/