iOS pod 安装 gcm 和 pnchartswift

iOS pod install gcm and pnchartswift

我在我的项目中使用 PNChartSwift 和 GCM。 我需要在 PodFile 中对 PNChartSwift 使用 "use_frameworks!",因此对于 GCM,我不能在 PodFile

中使用 "use_frameworks!"

我将如何使用 gcm?

日志错误"pod install"

Using PNChartSwift (0.0.2)
Using STZPopupView (1.0.1)
[!] The 'Pods' target has transitive dependencies that include static binaries: (/Users/Sina/Desktop/MyShatelIOS/MyShatel/Pods/GGLInstanceID/Libraries/libGGLInstanceIDLib.a, /Users/Sina/Desktop/MyShatelIOS/MyShatel/Pods/Google/Libraries/libGGLCloudMessaging.a, /Users/Sina/Desktop/MyShatelIOS/MyShatel/Pods/Google/Libraries/libGGLCore.a, /Users/Sina/Desktop/MyShatelIOS/MyShatel/Pods/GoogleCloudMessa

不幸的是,不能混合使用静态库和动态库,这是 all-or-nothing。

相反,我会建议您使用原始 Obj-C 版本 PNChart,这将解决您使用 GCM 的问题。

这意味着您的播客文件将类似于以下内容:

pod "PNChart"
pod "Google/CloudMessaging"

导入 PNChart 时唯一需要做的不同的事情是添加一个桥接 header 来导入这些库。这将使它们在代码中的任何地方都可用。它看起来像下面这样:

#import <PNChart.h>
#import <Google/CloudMessaging.h>

更新 1:

回答了 OP 关于如何识别 static/dynamic 的问题。


根据经验:

  • 在Swift中编写的所有依赖项都是动态框架。
  • 所有写在Obj-C中的依赖都是静态库。

Apple 不允许您构建包含 Swift 的静态库,因此第一个陈述将始终为真。第二个说法有点复杂,因为苹果之前在Obj-C中构建了很多动态内部框架。 third-party 开发人员直到 iOS 8(与 Swift 发布同时)才可以使用这种可能性,所以不要指望用 Obj-C 编写的任何新框架动态的,因为它们也可以写成 Swift.

现在我们只是在两种语言之间切换的"limbo"阶段。在 1-2 年内,希望所有 third-party 依赖项中的大部分都将用 Swift 编写,我们不必担心 static/dyanmic 之类的事情。

如果您有兴趣,可以在 the official CocoaPods blog post for release 0.36 上阅读更多相关信息。