iOS开发之自定义的framework添加第三方framework,lipo和ar命令看.o文件

Posted hbblzjy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS开发之自定义的framework添加第三方framework,lipo和ar命令看.o文件相关的知识,希望对你有一定的参考价值。

由于需要将之前生成的mediapipe.framework添加到自己的framework中,但是很奇怪用普通的拖拽方式添加,项目工程在加载运行自己的framework时,总是找不到mediapipe.framework中的头文件,而只编译自己的framework时,也是可以通过的,或者直接将mediapipe.framework添加到项目工程中,调用库中的方法也可以使用,所以在此记录一下遇到这种情况时,怎么处理。

最开始的使用方式拖拽,copy,添加target

然后运行项目,总是报错:

error build: Undefined symbol: _OBJC_CLASS_$_MediaPipe

这说明添加的mediapipe.framework没有编译到自定义的framework中,通过ar -t查看自定义framework的.o文件,发现果然没有mediapipe.framework对应的 .o 文件,这就很苦恼,明明已经copy,并且添加到自定义的framework中了,查看 Build Phases---Link Binary With Libraries 也是有对应的mediapipe.framework库,查看 Build Setting---Framework Search Paths 也有对应的链接地址,为何还会这样找不到???真是太难了!!!

好吧,既然这样不行,那就换一种方式,只链接mediapipe.framework中的二进制文件,这样会自动在 Build Setting---Library Search Paths 中生成对应的文件地址,如果没有,那就自己添加二进制文件对应的地址,结果如图:

此时导入mediapipe.framework头文件:

#import "MediaPipe.framework/Headers/MediaPipe.h"

发现有点儿长,我们可以在Header Search Paths中添加对应的头文件地址

此时导入mediapipe.framework头文件:

#import "MediaPipe.h"

即可使用

然后运行项目,验证是否通过,噢,终于运行成功了!!!

介于遇到了这种问题,然后我尝试添加了其他第三方framework进行测试,发现确实需要此种方式添加,才能在自定义的framework中生成第三方framework对应的 .o 文件,而对于自定义的 A.framework 工程中又自定义了 B.framework 工程,是不需要此种添加方式的,因为 A.framework 工程中可以在Build Phases---Target Dependencies中添加对 B.framework 的依赖。(这一段不一定准确,只是我的一种猜测结论)

下面再展示一下 lipo 和 ar 命令的使用,用于查看framework的 .o 文件:

整理不易,转载请注明,谢谢~ 

以上是关于iOS开发之自定义的framework添加第三方framework,lipo和ar命令看.o文件的主要内容,如果未能解决你的问题,请参考以下文章

iOS开发之自定义View

ios开发使用cocoapods倒入一堆的三方库之后开始崩溃了。发觉是导入极光引用的iOS10UserNotifications.framework导致的问题 Reason: image not f

iOS之自定义UITabBar替换系统默认的(添加“+”号按钮)

微信小程序之自定义tabbar

面向对象开发之自定义事件

DRF项目之自定义分页器