Objective c 在应用程序和Cocoa Touch框架目标中使用静态库

Objective c 在应用程序和Cocoa Touch框架目标中使用静态库,objective-c,cocoa-touch,google-analytics,frameworks,static-libraries,Objective C,Cocoa Touch,Google Analytics,Frameworks,Static Libraries,我在我的iPad项目MyApp中创建了一个名为MyAppCore的新“Cocoa Touch Framework”目标,目的是在其中添加一些通用代码。总的来说,它工作得很好,但是,我在添加Google Analytics提供的静态库时遇到了问题 我希望能够不仅在MyApp目标中使用谷歌分析,而且在MyAppCore目标中使用谷歌分析。为了构建这两个目标,我必须使用libGoogleAnalyticsServices.a链接这两个目标。这似乎是可行的,但当我运行应用程序时,日志中充斥着如下消息:

我在我的iPad项目MyApp中创建了一个名为MyAppCore的新“Cocoa Touch Framework”目标,目的是在其中添加一些通用代码。总的来说,它工作得很好,但是,我在添加Google Analytics提供的静态库时遇到了问题

我希望能够不仅在MyApp目标中使用谷歌分析,而且在MyAppCore目标中使用谷歌分析。为了构建这两个目标,我必须使用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.

我如何才能成功地在这两个目标之间共享谷歌分析?

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

您应该仍然能够引用第三方库的标题,并且应该在静态库上编译内容,而不会出现任何警告

在我的应用程序中,我有两个静态库。“幽灵”依赖于“PhilosophersStone”,而应用程序依赖于两者。(构建阶段中的目标依赖关系)


“幽灵”不会链接到“PhilosophersStone”,主应用程序链接会链接到两者。(在构建阶段将二进制文件与库链接起来)

我通过在MyAppCore目标中为Google Analytics创建一个包装类(无论如何,它非常方便)来解决这个问题。所有对谷歌分析的访问都将通过这个包装。这样,唯一直接使用谷歌分析的目标是MyAppCore,所以我只需将该目标与谷歌分析联系起来


这并不能解决在我的应用程序目标和Cocoa Touch框架之间共享静态库的根本问题,但出于这个目的,它也可以工作。

谢谢您的回答。这在我的例子中不起作用,可能是因为MyAppCore不是一个静态库(如您的示例中的Wraith)。MyAppCore是一个动态框架,XCode称之为“Cocoa Touch框架”。不是“Cocoa Touch静态库”。你找到解决方案了吗?