美文网首页
静态库Static

静态库Static

作者: 董立权 | 来源:发表于2017-07-19 07:58 被阅读0次
    • 库:程序代码的集合,共享程序代码的一种方式
    • 根据源代码的公开情况,库可以分为2种情况
      开源库:公开源代码,能看到具体实现
      闭源库:不公开源代码,经过编译后的二进制文件,看不到具体实现(静态库 动态库)
    • 静态库和动态库
      静态库: .a和 .framework
      动态库: dylib和 .framework(iOS9取消了.dylib,使用tbd替代)
    • 静态库和动态库在使用上的区别
      静态库:连接时,静态库会被完成地复制到可执行文件中,被多次使用就有多分冗余拷贝
      动态库:链接时,连接不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存(项目中,如果使用了动态库,不能被上传到AppStore)

    静态库简单使用(.a)

    • 新建静态库项目


      新建静态库.png
    • 编写静态库文件


      编写静态库文件.png
    • 将编写的静态库文件的.h添加到项目
    静态库.png
    • 编译 command+b
    • Show in Finder 查看静态库文件


      查看静态库文件.png
    • Undefinde symbols for architecture x86_64:不能运行在x86_64架构上
      静态文件编译和运行的架构不一样
      模拟器:
      iPhone4 4s 5 32位架构 i368
      iphone 5s 6 6p 7 7p 64位架构 x86_64
      真机
      iphone4 32位架构 armV7
      iphone 5 32位架构 armv7s
      iphone5s ... 64位架构 arm64

    查看静态库架构

    • 控制台进入到架构所在目录
    • lipo -info xxxxxx.a

    合并架构

    • 方式1:命令行lipo -create xxxx.a xxxx.a -output xxxx.a
    • 方式2:修改debug下编译模式为NO(不能合并模拟器和真机)


      合并架构.png
    • 有点:程序员不需要切换模拟器和真机
    • 缺点:占用空间大
    • 如果静态库体积小,建议合并,如果静态库体积太大,不建议合并

    资源包

    • 资源包的创建:将文件夹名称改为 .bundle结尾即可
    • 导图图片的时候要写全路径
    资源包路径要写全路径.png
    • 资源包要手动导入
    资源包路径要手动导入.png

    静态库(.framework)

    • 创建


      framework静态库的创建.png
    • 删除所有内容,直接导入要导入文件的头文件即可


      修改framework的文件.png
      修改后的文件.png
    • 将头文件拖拽到public中


      添加头文件.png
    • 添加架构


      添加架构.png
      add.png
    • 将动态库修改为静态库(framework默认创建的是动态库)


      将动态库修改为静态库.png
    • 编译 Command + b

    相关文章

      网友评论

          本文标题:静态库Static

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