使用 Cocoapods + WatchOS 2 目标

Working with Cocoapods + WatchOS 2 target

我有一个 iOS 项目,其中有很多 pods,大约二十个。我想集成 watchOS 2 应用程序,但 CocoaPods 要求 podspec 包含对 watchOS 的支持(如此处所示:http://blog.cocoapods.org/CocoaPods-0.38/

起初,我想我可以分叉所有未更新的 pods,将我的 podfile 指向那些分叉的存储库,然后鲍勃就是你的叔叔。问题是我使用的一些 pods 是 closed/not-public。有没有办法不为 watchOS 目标构建主应用程序的 pods?像这样使用目标隔离?:

target "Watch" do end

我似乎无法构建 ^ 潜在解决方案,因为它仍在尝试构建 pods。我也试过这个回购协议,运气不好:https://github.com/orta/cocoapods-expert-difficulty

有两种方法可以将 pods 使用 podfile 与 WathOS 集成。

1) 直接在 watch extension 添加 Required pods 如下。

target '<your watch Extension Name>' do

platform :watchos, '2.0'
pod 'RealmSwift'
pod 'Alamofire'
pod 'MMWormhole', '~> 2.0.0'

end 

2) 创建共享 pods 并添加到手表扩展和 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 支持 pods, 不要在不支持watchOS的sharedPods中添加pods。 例如

def sharedPods
        pod 'RealmSwift'
        pod 'Alamofire'
        pod 'otherWatchOS&iOS supported Pod1'
        pod 'otherWatchOS&iOS supported Pod2'
    end

target '<your iOSApp Name>'中仅添加iOS支持pods 例如

target '<your iOSApp Name>' do
platform :ios, '8.0'
   sharedPods
   pod 'otherOnlyiOS supported Pod1'
   pod 'otherOnlyiOS supported Pod2'
end

因此,您可以通过这种方式为所需的目标添加所需的 pods。

我找到我的问题了!我在手表代码中使用 Swift,但我的 parent 应用程序在 Obj-c 中。我认为这不是问题,除非 watch 目标尝试编译我在主应用程序中使用的 Swift 桥接 header,这导致那些 pods 不必要地构建。因此,解决方案是为您的 Watch 目标指定不同的桥接 header 或使用 Obj-c!