使用 Cocoapods + WatchOS 2 目标
Posted
技术标签:
【中文标题】使用 Cocoapods + WatchOS 2 目标【英文标题】:Working with Cocoapods + WatchOS 2 target 【发布时间】:2015-12-28 23:02:39 【问题描述】:我有一个包含很多 pod 的 ios 项目,大约 20 个。我想在其中集成一个 watchOS 2 应用程序,但 CocoaPods 要求 podspec 包含对 watchOS 的支持(如此处所示:http://blog.cocoapods.org/CocoaPods-0.38/)
起初,我以为我可以分叉所有未更新的 pod,将我的 podfile 指向那些分叉的存储库,并且 bob 是你的叔叔。问题是我正在使用的一些 pod 是封闭的/不公开的。有没有办法让我不为 watchOS 目标构建主应用程序的 pod?像这样使用目标隔离?:
target "Watch" do
end
我似乎无法构建该 ^ 潜在解决方案,因为它仍在尝试构建 pod。我也试过这个 repo,没有运气:https://github.com/orta/cocoapods-expert-difficulty
【问题讨论】:
【参考方案1】:有两种方法可以使用 podfile 与 WathOS 集成 pod。
1) 直接添加必需的 pod 来观看扩展,如下所示。
target '<your watch Extension Name>' do
platform :watchos, '2.0'
pod 'RealmSwift'
pod 'Alamofire'
pod 'MMWormhole', '~> 2.0.0'
end
2) 创建共享 pod 并同时添加到手表扩展和 iOS 目标。
def sharedPods
pod 'RealmSwift'
pod 'Alamofire'
end
target '<your watch Extension Name>' do
platform :watchos, '2.0'
sharedPods
end
target '<your iOSApp Name>' do
platform :ios, '8.0'
sharedPods
end
在sharedPods
中仅添加支持 watchOS 和 iOS 的 Pod,
不要在不支持 watchOS 的sharedPods
中添加 pod。
例如
def sharedPods
pod 'RealmSwift'
pod 'Alamofire'
pod 'otherWatchOS&iOS supported Pod1'
pod 'otherWatchOS&iOS supported Pod2'
end
在target '<your iOSApp Name>'
中仅添加 iOS 支持的 Pod
例如
target '<your iOSApp Name>' do
platform :ios, '8.0'
sharedPods
pod 'otherOnlyiOS supported Pod1'
pod 'otherOnlyiOS supported Pod2'
end
因此,您可以通过这种方式为所需目标添加所需的 pod。
【讨论】:
这就是我尝试过的。我正在谈论的问题是,我使用的许多 pod 在其 pod 规范中不支持 watchOS。因此,如果我以您描述的任何一种方式使用它们,可可豆荚会引发错误,指出豆荚不支持 watchOS。有没有办法用所有的 pod 构建主应用程序,但构建没有 pod 的 watchOS 目标? 请根据您的要求检查已编辑的答案。【参考方案2】:我发现了我的问题!我在 Watch 代码中使用了 Swift,但我的父应用程序在 Obj-c 中。认为这不会是一个问题,除了 watch 目标尝试编译我在我的主应用程序中使用的 Swift 桥接头,这是导致这些 pod 不必要地构建的原因。因此,解决方案是为您的 Watch 目标指定不同的桥接头或使用 Obj-c!
【讨论】:
以上是关于使用 Cocoapods + WatchOS 2 目标的主要内容,如果未能解决你的问题,请参考以下文章
watch OS 2 上的 AFNetworking 使用 cocoapods
NSUbiquitousKeyValueStore 不可用 - watchOS 2