Build Phases -->Copy ...">
美文网首页
静态库和动态库

静态库和动态库

作者: lee_moons | 来源:发表于2016-06-12 16:39 被阅读28次

    静态库

    静态库中默认只打包系统自带的类,自定义的类需要在 "项目 -->Build Phases -->Copy Files "中添加自定的类
    在模拟器和真机状态下编译,在finder中即可找到所需要的.a文件.生成模拟器和真机版本。如果没有对应使用,会出现类似: Undefined symbols for architecture i386: -->不能运行在i386架构上

    架构介绍:
    /*
    模拟器架构:
    4 / 4S / 5 / 5C: i386 32位
    5S / 6 / 6p / 6s / 6ps : x86_64 64位

    真机架构:
    4 / 4S : armv7 32位
    5 / 5C : armv7s 32位
    5S / 6 / 6p / 6s / 6ps: arm64 64位
    */

    /*
    查看静态库支持架构:lipo -info xxxxx.a
    */

    /*
    合并架构方法一:
    lipo -create xxxxxx.a kkkkkk.a -output nnnnnnn.a
    合并架构方法二:
    选中项目 --> Build Settings -->Build Active .... --> Debug --> NO
    */

    /*
    Debug: 开发环境 更丰富的调试代码,运行效率稍低,开发人员使用
    Release: 发布环境 运行效率高,发布正式版本时使用
    */

    关于合并架构的建议:当.a文件体积小时,可以考虑将真机和模拟器架构合并 好处:不用切换模拟器和真机 缺点:体积增大

    当使用资源时,应该手动导入bundle包。在代码中加载资源包文件时,应该加上资源包的路径。要考虑避免资源包与别人app中文件重名的情形。


    动态库

    制作Framework时,和.a文件大体相似,合并结构等功能在两个版本中都可以使用。
    注意:framework默认导出的是动态库,如果要使用需要在项目工程中 targets --> general --> Embedded Binaries中添加framework.动态库不可以上传到app store //如果没导入报错 Reason: image not found

    修改动态库: 选中项目 -->targets -->Build Settings --> 搜索mach -->修改为静态库

    边开发边调试framework时导入framework用双引号,不需要尖括号

    使用动态库的时候需要在
    build phases里面把头文件全部放到PUBLIC里面才能使用

    相关文章

      网友评论

          本文标题:静态库和动态库

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