iOS pod安装gcm和pnchartswift

时间:2015-07-05 04:36:13

标签: ios swift cocoapods google-cloud-messaging

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

我将如何使用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

1 个答案:

答案 0 :(得分:0)

不幸的是,无法混合使用静态库和动态库,它是全有或全无的。

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

这意味着您的podfile看起来类似于以下内容:

pod "PNChart"
pod "Google/CloudMessaging"

导入PNChart时,唯一需要做的就是添加导入这些库的briding header。这将使它们在代码中的任何位置都可用。它看起来像下面这样:

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

更新1:

回答OP关于如何识别静态/动态的问题。

根据经验:

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

Apple不允许您构建包含Swift的静态库,因此第一个语句将始终为true。第二个声明有点复杂,因为Apple之前在Obj-C中构建了许多动态内部框架。直到iOS 8(与Swift发布的同时),第三方开发人员才能使用这种可能性,所以不要指望用Obj-C编写的任何新框架都是动态的,因为它们也可以用Swift编写。 / p>

现在,当我们在两种语言之间切换时,我们只是处于“冷静”的阶段。在1 - 2年内,希望所有第三方依赖项的大部分都将用Swift编写,我们不必担心静态/动态等问题。

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