使用 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!
我有一个 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!