iOS 制作静态库时引入其他静态库

来源:互联网 发布:域名证书打印 编辑:程序博客网 时间:2024/06/07 23:50

       以前在制作静态库.a的时候也有导入其他静态库,但导入的都是.a形式的静态库,没有什么问题可以将其它的.a 静态库打入自己的.a静态库,

然后直接给用户提供自己的.a就行了,关于在我的.a静态库中引用了其它的静态库,用户是并不知道的。但是依赖的系统动态库是无法打入到自

己的.a中的,需要用户导入2个静态库.a依赖的所有动态库。今天需要在.a中引入.framework形式的静态库,发现并没有办法打入到.a中,还需要用

户自己再导入一次这个.framework形式的静态库。

       先说下静态库和动态库:

       库(Library)其实是一段编译好的二进制代码,加上头文件就可以供其他人使用了,自己封装库有很多好处,比如:某些代码需要给别人使用,

但是我们不想让别人看到我的代码,就需要用库封装上,纸提供头文件。还有就是项目中不会进行改动的代码,封装成库的形式可以节约编译时

间管理也非常方便。静态库:可以是.a形式,也可以是.framework形式,项目每次编译都会拷贝一份到项目中,你的app二进制也会变大。基本上

我们用到的第三方SDK都是静态库,在使用的时候需要导入所有的依赖库。动态库:比如UIKit.framework和Foundation,framework都是系统动态

库,存在于iOS 系统之中(可以是.framework形式,可以是.dylib形式,也可以是.tbd形式),在你打包应用程序的时候不会拷贝到你的ipa中,当

需要使用的时候会动态从iOS系统中加载它们,所以动态库也被称为共享库。framework是静态库还是动态库需要看build settings中Mach-O文件

怎么选择,选择Static Library就是静态库,选择Dynamic Library就是动态库,framework形式的静态库不需要再额外提供.h和.bundle。但是苹果为

了安全考虑是不允许不同应用程序共享代码的,所以自己制作的动态库也还是需要拷贝到应用中(感觉失去了动态库的意义),.framework形式的

静态库=.a形式的静态库+.h+.bundle。

      .a形式的静态库可以导入其他.a形式的静态库,但是不能导入.framework形式的静态库,需要用户自己从新导入。新建个.framework静态库的

工程试了下,.framework形式的静态库既不能导入.a形式的静态库,也不能导入.framework形式的静态库。都需要用户自己再次导入依赖的静态库

动态库。

原创粉丝点击