美文网首页
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