美文网首页
02-制作.a类型的静态库依赖第三方库

02-制作.a类型的静态库依赖第三方库

作者: toNull | 来源:发表于2023-06-04 10:45 被阅读0次

    一、理解.a是什么?

    • 我们平时在开发中或多或少都需要引入第三方SDK,比如友盟SDK,就算没有引入第三方的,至少引用过系统的framework吧
    • 其实上面我们引用的这些都属于库,库又分为动态库和静态库
    • 我们平时导入的第三方SDK有的是.framework 有的是.a
    • 其中的.a 就是一个库,我们可以拿到项目中直接使用
    • .a是一个静态库,关于静态库特点有:
      • app项目编译的时候会被拷贝到目标程序中,相当于静态嵌入了,也就是将.a的二进制文件整个嵌入到app中了,所以得到的app(.ipa)的二进制文件会变大
      • 在使用.a静态库的时候,需要手动导入静态库所依赖的其他库
      • 静态库的很大一有优点是减少偶尔性
      • 导入静态库的应用可以减少对外界的依赖,如果导入的是第三方动态库,动态库找不到的话应用就会崩掉,例如经常出现的lib not found。

    一、关于创建生成.a工程以及配置

    • 1、创建生成.a的工程
    • 2、配置
      • 配置1:tartget - build settings - build active architecture only 设置为NO


        image.png
      • 配置2:设置版本支持信息 target - build settings - iOS Deployment Target


        image.png
      • 配置3:设置暴漏头文件,参考上一篇如何设置

    二、如果依赖的外部第三方库

    • 1、外部第三方库是.a的静态库

      • 导入外部第三方.a静态库到工程,如果导入的时候选择添加到了SDK工程的target中,最后生成的SDK会将第三方外部.a二进制文件打包进去;SDK供外面使用的时候,外部不需要导入第三方外部.a
      • 导入外部第三方.a静态库到工程,如果导入的时候没有选择添加到了SDK工程的target中,最后生成的SDK不会将第三方外部.a二进制打包进去;SDK供外面使用的时候,外部需要导入第三方外部.a
      • 关于导入的第三方.a,SDK工程导入的时候不建议添加到target中(只需要导入,不要添加到target;如果添加到target,外面对接的工程他们本地也需要那个第三方.a时候,会存在冲突的问题报错),提供给外部使用的时候,提供SDK静态库加上第三方.a
    • 2、外部第三方是.framwork静态库

      • 导入外部第三方.framework到工程,导入的时候不添加到SDK target,最后生产的SDK不会将第三方.framework打包进去;SDK供外面使用的时候,需要同时提供第三方.framework
      • 导入外部第三方.framework到工程,导入的时候添加到SDK target,实际测试第三方framework没有打包到SDK生成中,外部集成使用的时候还是需要再导入第三方.framework
      • 关于导入第三方.framework,SDK工程导入的时候不建议添加到target中
    • 3、外部第三方是.framework动态库

      • 理论是仅仅需要导入不需要添加到target中,外部使用的时候导入SDK和第三方动态库.framework

    相关文章

      网友评论

          本文标题:02-制作.a类型的静态库依赖第三方库

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