CocoaPods/Podspec and *.framework

21

任何事情皆有可能。 ;) - Bill Burgess
2个回答

25

我在我的办公室实际上经常这样做。我们有大量的私有源代码被频繁地重复使用。 CocoaPods帮助我们更快地启动新项目,并使更新变得更加容易。

虽然可以将您的框架添加到podspec中,但我发现只需通过CocoaPods传递静态库和头文件比担心框架要容易得多。

您需要根据项目更新podspec,但以下是重要部分:

s.source_files = 'StaticLib/Headers/*.h'
s.preserve_paths = 'StaticLib/libYourLibrary.a'
s.library = 'YourLibrary'
s.xcconfig = { 'LIBRARY_SEARCH_PATHS' => '$(PODS_ROOT)/ProjectFolder/LibraryFolder' }    

s.dependency = 'AFNetworking'

这将会复制你的静态库,并将AFNetworking一同带入你的pod。这样做将使你的静态库更小(无需构建),并加快用户导入你的pod的速度。

如果你必须使用框架,同样适用于上述内容,但你可能需要进行一些微调。毕竟,框架只是一个漂亮的文件夹结构,用于静态库和头文件而已,所以为什么要费心额外的东西呢。所有的源码都已经构建到lPods.a静态库中了。希望这能帮到你。


谢谢,知道这一点会推动我进一步调查 =) - Pasta
我尝试使用这个仓库:https://github.com/BugsterIO/BugsterIO-iOS,并在podfile中添加了以下行:pod 'BugsterIO',:podspec => "https://raw.github.com/BugsterIO/BugsterIO-iOS/0.8/BugsterIO.podspec"。但是它没有起作用。有任何想法吗? - Pasta
错误信息为:i386 架构下的未定义符号: "OBJC_CLASS$_Bugster",引用自: - Pasta
看起来你的静态库/框架不支持i386(模拟器)。添加进去并重新构建/更新。以前经常会遇到这种情况,这是静态库的缺点之一。此外,如果你选择使用静态库,请确保使用构建脚本创建通用构建。Xcode 4不再为你完成这个步骤。 - Bill Burgess
这种方法的缺点是,您不再获得框架包含头文件的语法(#import <MyFramework.h>)。对于公共框架,这意味着有两组指令来设置项目以利用您的框架。 - Kendall Helmstetter Gelner

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接