在App和Cocoa Touch Framework目标中使用静态库

时间:2015-04-12 22:49:28

标签: objective-c cocoa-touch google-analytics frameworks static-libraries

我已经创建了一个新的" Cocoa Touch Framework"我的iPad项目中名为 MyApp 的目标名为 MyAppCore ,目的是在其中放置一些常用代码。总的来说,它很有效,但是,我在添加Google Analytics提供的静态库时遇到了问题。

我希望不仅可以在 MyApp 目标中使用Google Analytics,还可以在 MyAppCore 目标内部使用Google Analytics。为了构建两个目标,我必须使用libGoogleAnalyticsServices.a链接这两个目标。这似乎有效,但是当我运行应用程序时,日志会受到如下消息的轰炸:

Class GAI is implemented in both /path/to/MyAppCore.framework/MyAppCore 
and /path/to/MyApp.app/MyApp.
One of the two will be used. Which one is undefined.

如何以成功的方式在两个目标之间共享Google Analytics?

2 个答案:

答案 0 :(得分:1)

我设法通过为My AnalyticsCore目标创建一个Google Analytics的包装类来解决这个问题(无论如何都非常方便)。对Google Analytics的所有访问都将通过此包装。这样,直接使用Google Analytics的唯一目标是MyAppCore,因此我只需将该目标与Google Analytics相关联。

这并没有解决在我的应用程序目标和Cocoa Touch Framework之间共享静态库的根本问题,但为了这个目的,它也能正常工作。

答案 1 :(得分:0)

即使您的静态库依赖于外部静态库,也不要链接它。您的主应用程序将链接您的图书馆和第三方图书馆。静态库是一堆构建的代码,因此您可以按照现在的方式执行所有操作的两个副本。

您仍然可以引用第三方库的标题,并且应该在静态库上编译而没有任何警告。

在我的应用程序中,我有两个静态库。 "幽灵"取决于" PhilosophersStone"并且应用程序依赖于两者。 (构建阶段中的目标依赖性)

"幽灵"没有链接" PhilosophersStone",主要应用程序链接两者。 (链接二进制文件与构建阶段的库)