在 App 和 Cocoa Touch Framework 目标中使用静态库
Using static library in both App and Cocoa Touch Framework targets
我在名为 MyApp 的 iPad 项目中创建了一个名为 MyAppCore 的新 "Cocoa Touch Framework" 目标,目的是将一些通用代码放在那里。总的来说效果很好,但是,我在添加 Google Analytics 提供的静态库时遇到了问题。
我希望能够不仅在 MyApp 目标中,而且在 MyAppCore 内部使用 Google Analytics目标也是如此。为了构建两个目标,我必须 link 两个目标 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 分析?
即使你的静态库依赖于外部静态库,也不要link反对它。您的主应用程序将 link 同时针对您的图书馆和第 3 方图书馆。静态库是一堆构建的代码,所以你有两份按照你现在的方式做事的东西。
您应该仍然可以为第 3 方库引用 headers,并且应该可以在您的静态库上编译而不会出现任何警告。
在我的应用程序中,我有两个静态库。 "Wraith" 依赖于 "PhilosophersStone",应用程序依赖于两者。 (构建阶段的目标依赖项)
"Wraith" 不会 link 反对 "PhilosophersStone",主应用程序 link 反对两者。 (Link 带有库的二进制文件处于构建阶段)
我设法通过在 MyAppCore 目标中为 Google Analytics(无论如何,这非常方便)创建一个包装器 class 来解决这个问题。对 Google Analytics 的所有访问都将通过此包装程序。这样,将直接使用 Google Analytics 的唯一目标是 MyAppCore,因此我只需要 link 使用 Google Analytics 的目标。
这并没有解决在我的应用程序目标和 Cocoa 触摸框架之间共享静态库的根本问题,但对于这个目的它同样有效。
我在名为 MyApp 的 iPad 项目中创建了一个名为 MyAppCore 的新 "Cocoa Touch Framework" 目标,目的是将一些通用代码放在那里。总的来说效果很好,但是,我在添加 Google Analytics 提供的静态库时遇到了问题。
我希望能够不仅在 MyApp 目标中,而且在 MyAppCore 内部使用 Google Analytics目标也是如此。为了构建两个目标,我必须 link 两个目标 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 分析?
即使你的静态库依赖于外部静态库,也不要link反对它。您的主应用程序将 link 同时针对您的图书馆和第 3 方图书馆。静态库是一堆构建的代码,所以你有两份按照你现在的方式做事的东西。
您应该仍然可以为第 3 方库引用 headers,并且应该可以在您的静态库上编译而不会出现任何警告。
在我的应用程序中,我有两个静态库。 "Wraith" 依赖于 "PhilosophersStone",应用程序依赖于两者。 (构建阶段的目标依赖项)
"Wraith" 不会 link 反对 "PhilosophersStone",主应用程序 link 反对两者。 (Link 带有库的二进制文件处于构建阶段)
我设法通过在 MyAppCore 目标中为 Google Analytics(无论如何,这非常方便)创建一个包装器 class 来解决这个问题。对 Google Analytics 的所有访问都将通过此包装程序。这样,将直接使用 Google Analytics 的唯一目标是 MyAppCore,因此我只需要 link 使用 Google Analytics 的目标。
这并没有解决在我的应用程序目标和 Cocoa 触摸框架之间共享静态库的根本问题,但对于这个目的它同样有效。