1. 创建framework
关于创建静态库framework,新建project选择以下标签,然后自己命名
在创建好的framework中创建需要的类或者category,比如以下创建了一个简单的alertShow
给alertShow添加一个类方法,方便检查framework封装是否达到目的
#import <Foundation/Foundation.h>
@interface AlertShow : NSObject
+ (void)showMessage:(NSString *)message;
@end
#import "AlertShow.h"
@implementation AlertShow
+ (void)showMessage:(NSString *)message
{
NSLog(@"%@", message);
}
@end!
这里还需要把公开的类添加到AlertShowFrameWork里面
#import <UIKit/UIKit.h>
//! Project version number for AlertShowFrameWork.
FOUNDATION_EXPORT double AlertShowFrameWorkVersionNumber;
//! Project version string for AlertShowFrameWork.
FOUNDATION_EXPORT const unsigned char AlertShowFrameWorkVersionString[];
// In this header, you should import all the public headers of your framework using statements like #import <AlertShowFrameWork/PublicHeader.h>
#import <AlertShowFrameWork/AlertShow.h>
2. 个性化配置framework
a. 设置framework支持最低配置的iOS系统版本号
b. 根据需求选择性添加armv7s
Xcode6之后,默认不支持armv7s,如果需要添加FrameWork的工程是支持armv7s,那将会有冲突c. 'Mach-O Type' 设置为 'Static Library'
FrameWork对于用户生成的一定是静态库d. Build Active Architecture Only属性
这个属性设置为yes,是为了debug的时候编译速度更快,它只编译当前的architecture版本。
而设置为no时,会编译所有的版本。
编译出的版本是向下兼容的,比如你设置此值为yes,用iphone4编译出来的是armv7版本的,iphone5也可以运行,但是armv6的设备就不能运行。
e. 其他属性
其他博客里面大都提到要在BuildSetting修改Dead Code Stripping、Link with Standard Libraries,但在Xcode7及以上版本后,不需要再把它们设置为NO
Dead Code Stripping
将Dead Code Stripping设置为YES,也能够一定程度上对程序安装包进行优化,只是优化的效果一般,对于一些比较小的项目甚至没有什么优化体现,所以这里也就没有上测试数据。
Dead Code Stripping 是对程序编译出的可执行二进制文件中没有被实际使用的代码进行Strip操作。对他有兴趣的可以点进去查看
Link with Standard Libraries
LINK_WITH_STANDARD_LIBRARIES = YES
如果激活此设置,那么编译器在链接过程中会自动使用通过标准库的链接器。
3. 生成framework
首先把需要外放的文件添加到以下的位置
分别通过command+b编译生成模拟器的包和真机
在finder里面的两个文件夹内的内容都是一样的,可以通过终端把AlertShowFrameWork合并成一个
在终端输入 lipo -create 第一个文件地址 第二个文件地址 -output 生成文件地址
记得要给生成的文件命名为AlertShowFrameWork,方便后面替换,不命名的话会报错
可以复制到项目里面使用了。
网友评论