iOS应用版本之动态更新

  • 步骤说明

步骤如下:

  1. 制作framework
  2. 生成framework动态链接库
  3. 远程下载到动态链接库到沙盒
  4. 如何引用动态链接库

  • 具体操作

1.制作动态链接库

1.png

2.添加我们要实现的功能类,添加开放的头文件


2.png

3.做成通用动态库,创建Aggregate Target

3.png

4.添加Run Script,在Run Script添加一段脚步,目的是生成模拟器和真机合并的framework

4.png

5.选择我们新建的Aggregate打包生成framework,打包成功后会自动弹出打包文件夹(脚步作用)

5.png
  • 设置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解压缩类

6.png
  • 通过dlopen加载framework
7.jpg
  • 调用方式(object-c/swift)
8.png
9.png
  • 调用结果
10.png
11.png

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容