关于iOS的静态库,动态库,这篇文章很清楚 iOS 静态库,动态库与 Framework
这里主要讲一下怎么制作自己的静态库
制作静态库framework
(1) 创建framework,命名为SDSDK(本文中以SDSDK举例)
(2) 添加自己的文件
(3) 设置
- 设置Target version为你需要的版本,如8.0
-
设置Build Configuration 为Release
屏幕快照 2017-04-20 上午11.56.51.png -
设置静态库
屏幕快照 2017-04-20 上午11.57.12.png -
Architectures添加armv7s,支持5和5C
屏幕快照 2017-04-20 上午11.59.51.png -
公开文件添加到Public Header中
屏幕快照 2017-04-20 下午12.02.04.png
(4) 编译
- 选择真机,cmd+B 编译程序
- 选择模拟器,cmd+B 编译程序,结束后可以看到Products中的framework由红色变为不是红色
-
选中Procuts->SDSDK.framework,show in finder, 可以看到如下的结构
屏幕快照 2017-04-20 下午12.06.23.png -
合并两个framwrok为一个framework,注意合并的内容为下面红色标注的内容
屏幕快照 2017-04-20 下午12.06.47.png
打开终端,命令格式为
lipo -create "真机版本路径" "模拟器版本路径" -o "合并后的文件路径"
我直接cd到Products目录下,然后采用下面命令合并,最后的SDSDK为合并后的名称
lipo -create /Users/shendong/Library/Developer/Xcode/DerivedData/SDSDK-hiwmnkyzofjycdggievjxqjzsrxu/Build/Products/Release-iphoneos/SDSDK.framework/SDSDK /Users/shendong/Library/Developer/Xcode/DerivedData/SDSDK-hiwmnkyzofjycdggievjxqjzsrxu/Build/Products/Release-iphonesimulator/SDSDK.framework/SDSDK -o SDSDK
- 合并后的SDSDK替换到真机或模拟器文件里的SDK, 最终获得的framwork即我们要的framework
- 将最终的framework拖到你的项目中,即可使用
#import <SDSDK/SDSDK.h>
常见问题
(1) xcode8 framework missing submodule xxx 警告
创建framework时,如SDSDK.framework, 会自动生成SDSDK.h文件。如果我们添加一些自己的类, 并对外提供公开.h文件,则需要在SDSDK.h文件中添加子文件的声明文件。如下
#import <UIKit/UIKit.h>
//! Project version number for SDSDK.
FOUNDATION_EXPORT double SDSDKVersionNumber;
//! Project version string for SDSDK.
FOUNDATION_EXPORT const unsigned char SDSDKVersionString[];
// In this header, you should import all the public headers of your framework using statements like #import <SDSDK/PublicHeader.h>
#import <SDSDK/SDServie.h>
#import <SDSDK/SDServie+Cookie.h>
使用时,直接引用即可
#import <SDSDK/SDSDK.h>
网友评论