静态库的两种存在形式 .a 和 .framework
Foundation.framework 下
staticlibrary
1. 新建项目
选择Framework &Library 选择Cocoa Touch Static Library 点击下一步
2.删除不需要的文件
3.将想要封装的类拖入到文件列表中,按图的形式勾选
4.点击文件的项目->TARGETS库->Build Phases ->点击”+”->选择New Headers Phase创建Hears ,未创建的libAFNetworking.a文件静态库的为红色
Headers包含三种状态 Public 公共 Private私有 Project 项目
5. 选择Project 下面的”+”,安图选中对应的需要显示在外部的文件
默认保存到Project 根据需求可以选择移动到其他两个状态
7. 选中所有文件点击右键可以移动到对应的状态栏,移动到Public
如下图,文件被移动到Public
8. 选择真机 IOS Device 编译 Command + B
编译后 libAFNetworking.a文件变成了黑色,创建成功
如果报错” code signing is required for product type 'Unit Test Bundle' in SDK 'iOS 8.1’"
请按以下操作
PROJECT --> Build Settings --> Code Signing --> Code Signing Identity设置为 iPhone Developer
TARGETS --> Build Settings --> Code Signing --> Code Signing Identity设置为 iPhone Developer
10.此时生成了一个静态库,可以ShowInFind查看
选择模拟器按以上步骤会产生模拟器的静态库
如图:
可以合并两个库文件,方便调试和真机的时候使用
MAC 终端的命令
/*
pwd 获取当前路径
ls -l 该文件夹下的文件列表
lipo -create Debug-iphoneos/libAFNetWorking.a Debug-iphonesimulator/libAFNetWorking.a -output libAFNetWorking.a 和并文件
open ./ 打开当前路径
*/
在终端中 输入 cd 找到Prouducts 的文件路径
lipo -create Debug-iphoneos/libAFNetWorking.a Debug-iphonesimulator/libAFNetWorking.a -output libAFNetWorking.a
输入此命令合并成新的libAFNetWorking.a 路径在Prouducts 的文件路径下
静态库创建成功
导入.a和对应的.h文件就能够使用了.
如果静态库中有分类,other linker Flags 里添加 -ObjC
注意:
1. 如果先选择New Headers Phase创建Hears,在导入文件则直接会把.h文件自动导入到Project,不需要你在选择每个.h文件
2. Public 里可以选择你只想公开的头文件,不想公开的文件无须移动到Public
3. 如果包含多个框架报错,在Prefix.pch 文件中,包含其他框架.