ios - 带有静态库的私有(private) pod 以及 swift pod

标签 ios frameworks static-libraries cocoapods private

我正在为一个 iOS 开发团队(在私有(private)存储库上)开发 pod。我的低级 C/Obj-C 核心 pod 包含一个带有一些 header 的静态库,并用作其他 pod 的依赖项(使用 --use-libraries 推送)。

现在 iOS 团队想要集成 Swift pod,他们必须在项目的 Podfile 中添加 use_framework! 选项。当然,他们在 pod install 期间得到了以下错误:

The 'XXX' target has transitive dependencies that include static binaries

我在网上花了半天时间寻找一种方法让我的 pod 与 use_framework! 选项兼容,但没有成功。这非常令人沮丧,因为 Google Services pod 证明可以以一种干净的方式绕过这个问题(而不是使用 verify_no_static_framework_transitive_dependencies 技巧):主 pod 及其几乎所有依赖项都包含静态库,并且一切都与 Swift pod 完美配合。以 Google/SignIn 为例这取决于 Google/Core (vendored_libraries: Libraries/libGGLCore.a) 和 GoogleSignIn (供应商库:Libraries/libSignIn.a)。

知道如何让我的 pod 与 use_framework! 选项兼容吗?

谢谢大家

干杯,

汤姆

最佳答案

我想我找到了解决问题的方法。这很奇怪,但我会说它足够干净,可以在生产中使用它;)

我找到了 here .这个想法只是在 podspec 中的 source_files 列表中包含一个源文件(即使是一个空文件)。

基本上,我的 podspec 的源代码部分是这样的:

s.source_files = "myLib/Empty.m", "myLib/Headers/*.h"
s.vendored_libraries  = "myLib/myLib.a"

我所做的唯一修改是在源文件中添加“myLib/Empty.m”(Empty.m 严格来说是空的)。没有它,我在 pod install 时会系统地遇到传递依赖性 错误。有了它,pod install 工作正常。它适用于 Cocoapods 0.0.39 和 1.0.0.beta.4。

好吧,看起来它是一个不太脏的解决方案,但我不确定它是否适用于所有情况。而且 Cocoapods 的清洁度也不是什么好消息……

正如我之前在评论中提到的,Google 似乎找到了一个更简洁的解决方案。因此,如果有人知道真正干净的解决方案,请分享!

干杯,

汤姆

PS:我想我会将文件命名为 DirtyCocoapodHack.m 而不是 Empty.m,确保他们会在开发团队中喜欢它;)

关于ios - 带有静态库的私有(private) pod 以及 swift pod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35581692/

相关文章:

iphone - 重新加载自己创建的 UITableViewCell

iphone - 在不知道 url 方案的情况下启动应用程序

php - 对于 Web 开发商店(10 岁以上)来说,Symfony 是比 Zend 更好的选择吗,因为它是一个完整的堆栈框架?

c++11 - 将 C++ 库放在全局命名空间之外

objective-c - iOS : Compiling Static Libraries

android - Phonegap IOS Android 如何保护APP和APK中的信息www

ios - 3DES 解密有时会有所不同

java - 为 Java Web 应用程序设计 UI 的最佳方法

php - 在 ATK4 中,如何使用模板创建 html 以外的文件类型?

c++ - 如何部署C静态库: header + c file or object file?