美文网首页
iOS应用版本之动态更新

iOS应用版本之动态更新

作者: 我是困惑 | 来源:发表于2016-06-06 11:10 被阅读0次
    • 步骤说明

    步骤如下:

    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

    相关文章

      网友评论

          本文标题:iOS应用版本之动态更新

          本文链接:https://www.haomeiwen.com/subject/rygrdttx.html