加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – 构建使用Cocapods的可分发静态库

发布时间:2020-12-15 02:02:02 所属栏目:百科 来源:网络整理
导读:我正在构建一个静态库来分发给其他iOS开发人员,并且在配置链接器时遇到一些麻烦,以便在另一个应用程序中使用静态库。我使用 this guide创建一个包含lib本身的MyStaticLibrary.framework包,以及其他资源(如图像)。这样可以成功构建并使用Cocapods来提供所
我正在构建一个静态库来分发给其他iOS开发人员,并且在配置链接器时遇到一些麻烦,以便在另一个应用程序中使用静态库。我使用 this guide创建一个包含lib本身的MyStaticLibrary.framework包,以及其他资源(如图像)。这样可以成功构建并使用Cocapods来提供所需的依赖关系(AFNetworking等)。到现在为止还挺好。

但是当我将MyStaticLibrary.framework导入一个新的Xcode项目以测试使用库构建应用程序时,我会收到大量的链接器错误(架构i386的未定义符号_OBJC_CLASS _ $ _ CLASSNAME),表示我在这里做错了。

所以我的问题是,如何使用来自Cocapods的依赖项构建MyStaticLibrary.framework,以便我可以为第三方提供我的框架文件,并允许他们访问公共头文件中指定的所有函数?

解决方法

您使用CocoaPods包含的任何库在默认情况下都不会被编译到框架中 – 它们的外部依赖关系不属于实际产品。但是,根据他们的FAQ,他们支持一种模式,您可以在其中下载pod,而不是将它们链接到您的项目。从他们的FAQ:

Note that CocoaPods itself does not require the use of a workspace. If
you prefer to use sub-projects,you can do so by running pod install
–no-integrate,which will leave integration into your project up to you as you see fit.

要在编译的二进制文件中包含外部依赖项:

>对于代码:代替使用Cocapods,请查看您要包含的存储库并将源文件复制到项目中 – 这将确保它们与您的其余代码一起编译
>对于静态库(即.a文件),在框架的“链接二进制库与库”构建阶段中,请确保包含所有要编译的库。您还应确保相关的头文件包含在复制标题构建阶段,并具有适当的可见性。

注意以这种方式捆绑第三方库时,您会遇到与整合框架的项目冲突的风险。例如,假设您正在使用一个名为SOSomeView的lib,您可以选择在框架中编译它。现在,如果您正在集成的应用程序还包括SOSomeView,您将收到类声明两次的编译时错误。要解决这个问题,您应该将要硬编码的任何外部依赖项重命名为框架(即将类重命名为XXSOSomeView)。

如果您正在使用框架编译静态库,我不知道如何解决这个问题。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读