【问题标题】:Cocoa Touch framework shared between iOS and tvOSiOS 和 tvOS 之间共享的 Cocoa Touch 框架
【发布时间】:2015-11-27 22:01:54
【问题描述】:

我正在开发一个应用程序,该应用程序可以包含一些我想封装在框架中的共享代码。我创建了 iOS Putter 应用程序目标,然后是我从应用程序链接的框架 PutterKit。这很好用。

然后我创建一个 tvOS 应用目标 PutterTV 并将 PutterKit 复制到 PutterKit (TV) 并将其 sdk 设置为 tvOS

当我在 tvOS 应用程序中import PutterKit 并编译它时,我得到了错误 No such module 'PutterKit'

这是一个示例项目 https://dl.dropboxusercontent.com/u/1326174/Putter.zip

建立这样一个框架的正确方法是什么?

【问题讨论】:

  • 您的示例项目目前是一张自行车照片。
  • 抱歉,链接错误:) 已更新
  • 我也为此苦苦挣扎。找不到任何方法来做到这一点——当您拥有两个如此相似的平台(如 tvOS 和 iOS)时,这似乎是一种明显的需求。很奇怪。
  • 我认为解决方案是将框架作为单独的项目并通过 CocoaPods 或 Carthage 进行集成

标签: ios cocoa-touch xcode7 tvos


【解决方案1】:

查看您的项目,您需要:

import PutterTVKit

如果您查看 PutterKit(TV) 目标构建设置,您会注意到 ProductName 和 ProductModuleName 是 PutterTVKit。

还要确保在 PutterTV 应用程序目标的链接框架和库部分中链接到 PutterTVKit.framework(不是 PutterKit.framework)。

通过这些更改,它似乎可以正常编译。

【讨论】:

  • 但是,如果我的应用中有一个视图控制器,它也在 iOS 和 tvOS 之间共享(我这样做了)
  • 您当然可以在 iOS 和 tvOS 之间共享视图控制器类 - 只需使其成为两个目标的成员,但考虑到 iOS 和 tvOS 的 UI 建模有多么大的不同,建议使用独立的 UI,同时为逻辑共享相同的视图控制器...
  • 我的意思是,如果我有一个共享视图控制器,我必须同时导入PutterKitPutterTVKit ,这不是一个最佳解决方案。应该可以为iOStvOS 只构建一个PutterKit ,并且只导入一次。基本上我想实现 Carthage 如果我用它构建一个 3rd 方库会做的事情。
  • 目前无法为 iOS 和 tvOS 构建一个框架 (PutterKit)。您的方案唯一可能的解决方案是#ifdef 并在顶部导入正确的框架 - 在您的应用程序目标中为 iOS 和 tvOS 使用构建设置,或依赖 TARGET_OS_TV
猜你喜欢
  • 2021-11-28
  • 2016-07-17
  • 1970-01-01
  • 2017-06-01
  • 2015-09-20
  • 1970-01-01
  • 1970-01-01
  • 2019-02-21
  • 1970-01-01
相关资源
最近更新 更多