iOS 库文件制作

一、静态库和动态库的介绍

一、什么是库?

库是共享程序代码的方式,一般分为静态库和动态库。

二、静态库与动态库的区别?

静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝。

动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存。

三、iOS里静态库形式?

.a和.framework

四、iOS里动态库形式?

.dylib和.framework

五、framework为什么既是静态库又是动态库?

系统的.framework是动态库,我们自己建立的.framework是静态库。

六、a与.framework有什么区别?

.a是一个纯二进制文件,.framework中除了有二进制文件之外还有资源文件。

.a文件不能直接使用,至少要有.h文件配合,.framework文件可以直接使用。

.a + .h + sourceFile = .framework。

建议用.framework.

七、为什么要使用静态库?

方便共享代码,便于合理使用。

实现iOS程序的模块化。可以把固定的业务模块化成静态库。

和别人分享你的代码库,但不想让别人看到你代码的实现。

开发第三方sdk的需要。

 PS:更为详细的解释可以参看我的另一篇文章http://www.cnblogs.com/wfwenchao/articles/5044475.html

二、制作使用静态库

IOS静态库a文件制作流程

字数345 阅读5120 评论7 
1.新建Cocoa Touch Static Library工程

新建工程
2.Xcode的参数设置
  • "Build Active Architecture Only" 设置为"NO"
  • "IOS Deployment Target" 设置为 "IOS 7.0" ,表示支持IOS7.0以上系统版本的编译

    Build Active Architecture Only

    IOS Deployment Target

    Build Phases则使用默认设置
3.头文件添加接口

.h文件添加接口

.m文件代码实现
4.编译生成静态库.a文件
  • 分别选择真机和Iphone6模拟器进行编译
  • 首先找到真机编译成功生成的.a文件,Show In Finder
  • 然后找到Iphone6模拟器编译成功生成的.a文件(在真机目录中command+(向上剪头键)返回上一层文件夹路径)

    Show In Finder找到真机编译成功的.a文件

    分别为真机丶模拟器编译成功的.a文件
5.合成通用版的静态库.a文件
  • 使用终端进行合成操作
    lipo -create libStaticTest.a(真机.a文件路径) libStaticTest.a(Iphone6模拟器.a文件路径) -output 保存路径/StaticTest.a

    使用终端进行合成
  • 合成的.a文件(支持IOS7以上系统丶真机以及模拟器)

    合成的通用版静态库文件
6.测试自己制作的静态库文件

将.h以及合成的通用版.a文件导入测试工程中,实现.h提供的接口.


测试成功
 
在使用静态库时,将other link flags 设置为 -ObjC (原因参看另一篇博客:http://www.cnblogs.com/wfwenchao/articles/4568999.html)
 

 

二、 Framework的制作流程

1.新建Framework项目


2.删除原有的.h文件,创建与工程同名的类


 

在新建类.h中添加接口,.m中添加实现代码

 

3.Xcode的参数设置

  • "Architectures" 添加 "armv7s"
  • "Build Active Architecture Only" 设置为 "NO"
  • "Dead Code Stripping" 设置为 "NO"
  • "Link With Standard Libraries" 设置为 "NO"
  • "Mach-O Type" 设置为 "Static Library"
  • "IOS Deployment Target" 设置为 "IOS 7.0" ,表示支持IOS7.0以上系统版本的编译
  •  

    4.为Framework添加文件

  • "Compile Sources" 添加封装进Framework的文件,即隐藏
  • "Headers->Public" 添加暴露给用户查看的头文件

    5.编译生成Framework文件

  • 分别选择真机和Iphone6模拟器进行编译
  • 首先找到真机编译成功生成的framework,Show In Finder
  • 然后找到Iphone6模拟器编译成功生成的framework(在真机目录中command+(向上剪头键)返回上一层文件夹路径)


  • 6.合成通用版的framework文件

  • 需要合成的文件是FrameworkTest.framework包中的FrameworkTest文件

  • 使用终端进行合成操作
    lipo -create FramewrokTest.framework/FrameworkTest(真机framework路径) FramewrokTest.framework/FrameworkTest(Iphone6模拟器framework路径) -output 保存路径/FrameworkTest

  • 合成的文件如下图:

  • 将合成的FrameworkTest文件替换掉真机或者模拟器路径中FrameworkTest.framework包中的FrameworkTest文件

    7.测试自己制作的framework

posted @ 2015-12-11 18:09  WFApple  阅读(402)  评论(0)    收藏  举报