- 库 .a与.framework区别
- 创建framework静态库
- CocoaPods发布Framework
前言:静态库的简单介绍
ios静态库分为 .a和.framework;
同样有静态库就有动态库,
动态库在ios中是 .dylib和.framework;
系统提供的.framework都是动态库,
我们自己写的.framework都是静态库(我们提供动态库是不能通过审核的)。
为什么我在项目中选择framework开发,主要因为.a文件必须手动提供对应的.h文件,而framework包括了.h文件和.a文件。
一、新建工程
一般使用工程名就使用库的名称
新工程创建完成:
二、编写或导入需要打包的资源文件
三、配置工程
1. 设置公开的头文件
同时把资源文件需要外界访问的.h文件导入到系统推荐的.h中
2. 设置最低版本
3. 设置Framework 为静态库
在Build Settings 中搜索 “Mach”,
在出来的结果中,选择Mach-O Type 的值为Dynamic Libray.
4. Build配置
一般开发SDK为release版, 用户可才可以添加在工作中用来上架:
四、真机,模拟器编译
分别选择真机,模拟器 CMD+B进行编译
可以看到红色文件变为黑色
右键Products 下的Framework.framework打开可以看到编译生成的Framework:
五、查看编译后的可运行架构
可以查看一下,没合并模拟器架构之前包含几个同.a(可跳过此步)(真机包含两个,模拟器包含一个)
使用的命令:
lipo -info "framework路径"
模拟器(电脑CPU):
4s~5 : i386(32位)
5s~7plus : x86_64(64位)真机(iPhone的CPU):
3gs~4s : armv7
5~5c : armv7s (静态库只要支持了armv7,就可以跑在armv7s的架构上)
5s~7plus : arm64
六、合并架构(真机和模拟器)
然后可以看到生成的静态库文件:
查看生成静态库文件所支持的架构:
然后将这个静态库文件替换任意一个编译生成的Framework.farmework里的Framework静态库文件,然后这个Framework.framework就是我们需要的库文件了。
注意:合并之后的动态/静态库要与原来的名称一致。不然用的时候编译报错
七、测试生成的Framework.framework库
1.新建工程
创建testFramework工程。
2.拖入刚生成的Framework.framework库
3.编写测试代码
4.运行
5.处理输出日志
因为用的是Xcode8, 在输出的日志中有太多的调试信息,
而这些会干扰我们自己的输出,这里设置一下工程去掉这些调试信息:
工程的Edit Scheme -> Run -> Arguments -> Environment Variables :
Name :OS_ACTIVITY_MODE
Value :disable
然后再运行一次,就可以看到干净的日志信息了。