iOS真机和模拟器framework合并

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

选择 iOS — Framework&Library , 点(dian)击 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 </OC类名.h>

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

如何合并Xcode的模拟器静态库和真机静

1.静态库工程的建立: Xcode New一个新的project,选择IOS下面的Framework&Library,下面有一个Cocoa Touch Static Library。直接next去建立一个Print这样的工程。 2.工程建立 我们添加很简单的”- (void)printA;”和”+ (void)printB;“的方法

本文内容由互联网用户自发贡献,该文观点仅代表作者本人。聚才发仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 tenspace2022@163.com 举报,一经查实,本站将立刻删除。 本文链接:https://www.jucaifa.com/post/1153828.html 商机洞察 金融谷 前沿技术

niuniuniuniu
上一篇 2023年12月5日
下一篇 2023年12月5日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注