- 步骤说明
步骤如下:
- 制作framework
- 生成framework动态链接库
- 远程下载到动态链接库到沙盒
- 如何引用动态链接库
- 具体操作
1.制作动态链接库
2.添加我们要实现的功能类,添加开放的头文件
3.做成通用动态库,创建Aggregate Target
4.添加Run Script,在Run Script添加一段脚步,目的是生成模拟器和真机合并的framework
5.选择我们新建的Aggregate打包生成framework,打包成功后会自动弹出打包文件夹(脚步作用)
- 设置framework支持哪些设备
设置Architecture:
armv6:iPhone 2G/3G,iPod 1G/2G
armv7:iPhone 3GS/4/4s,iPod 3G/4G,iPad 1G/2G/3G
armv7s:iPhone5, iPod5 iPhone5c
arm64:iPhone5s 后面的Apple所有产品
最新列表:https://en.wikipedia.org/wiki/List_of_iOS_devices
判断lib支持哪些库: lipo -info ./MyFramework.framework/MyFramework
特别说明:Architectures和Valid Architectures的区别与作用
1.Architectures:该编译选项指定了工程将被编译成支持哪些指令集,支持指令集是通过编译生成对应的二进制数据包实现的,如果支持的指令集数目有多个,就会编译出包含多个指令集代码的数据包,造成最终编译的包很大。
2.Valid Architectures:该编译项指定可能支持的指令集,该列表和Architectures列表的交集,将是Xcode最终生成二进制包所支持的指令集。
3.比如,你的Valid Architectures设置的支持arm指令集版本有:armv7/armv7s/arm64,对应的Architectures设置的支持arm指令集版本有:armv7s,这时Xcode只会生成一个armv7s指令集的二进制包。
使用framework方法
void * dlopen(const char * __path, int __mode);
C语言方法
在dlopen的()函数以指定模式打开指定的动态连接库文件,并返回一个句柄给调用进程。通过这个句柄来使用库中的函数和类。使用dlclose ()来卸载打开的库。
Path参数:动态链接库所在沙盒地址
Mode:
1.RTLD_LAZY 暂缓决定,等有需要时再解出符号
2.RTLD_NOW 立即决定,返回前解除所有未决定的符号。下载framework到沙盒,使用ZipArchive iOS解压缩类
- 通过dlopen加载framework
- 调用方式(object-c/swift)
- 调用结果