iOS 静态库和动态库打包framework流程(纯swift版/swift、OC混编版)

 我来答
机器1718
2022-07-04 · TA获得超过6822个赞
知道小有建树答主
回答量:2805
采纳率:99%
帮助的人:159万
展开全部

选择 iOS -- Framework&Library , 点击 next

如果打包文件中使用了第三方库,建议pod管理,并告知用户使用pod安装,避免用户重复导入。跟平时开发逻辑一样,打开 .xcworkspace 工程。

操作完之后工程目录显示

把打包需要的文件添加到项目中。 如果想要这个类或类里面的方法兄庆被外面使用,需要配合pubic修饰供外面使用

由于以上获取的framework只能在对应的版本上运行羡碰握(即真机只能在设备上运行模拟器版本只能在模拟器上面运行使用),所以吵搏需要合并framework版本。
合并framework版本:
sudo lipo -create (此处请填写真机AppVest文件路径) (此处填写模拟器AILLSDK文件路径) -output 自定义合成文件存储路径(合成文件的名字AILLSDK)

因为真机版本和模拟器版本的framework都存在arm64架构,导致架构重复,不出意外,会提示合并失败。如下

处理合并失败的问题

最后,将 XX.framework(真机或者模拟器framework都可)文件夹 拷贝出来,替换AILLSDK(本文使用的)为刚才合并的新文件。
查看替换后的framework支持全部真机模拟器架构。

我在合并binary文件之后,仅拷贝出 Release-iphoneos 文件夹下的 XXX.framework ,并替换掉AILLSDK二进制文件。导入项目中使用模拟器运行,报错,显示找不到架构。

解决方案

拷贝所有的modules到

再替换掉AILLSDK二进制文件,导入项目,如果framework中内含第三方库,需要在所在的工程中使用pod加载,否则会提示编译失败。
至此,编译成功。🎉🎉🎉🎉🎉

不管是在framework封装的内部,内部swift类调用内部的OC类,还是内部的OC类使用内部的swift类,还是外部工程swift类使用framework内部OC类,还是外部工程OC类使用framework内部swift类。原理是一致的,以下来介绍下:

在 AILLSDK.h(你自己创建framework时候生成的.h文件) 中添加import导入
#import <AILLSDK/OC类名.h>

在oc的 .m 或 .h 文件中,导入 #import <AILLSDK/AILLSDK-Swift.h> , 也就是 你自己framework名-Swift.h

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式