使用 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 '&lt;your iOSApp Name&gt;' 中仅添加 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

watchOS 2 的最大内存使用量?

WatchOS 2.2 的 NSURLSession 非常慢

直接向 watchOS 2 发送推送通知?

如何在 watchOS 2 应用程序 Xcode 7 beta 5 中使用 Parse