1. 創(chuàng)建framework
關(guān)于創(chuàng)建靜態(tài)庫(kù)framework,新建project選擇以下標(biāo)簽,然后自己命名

在創(chuàng)建好的framework中創(chuàng)建需要的類(lèi)或者category,比如以下創(chuàng)建了一個(gè)簡(jiǎn)單的alertShow

給alertShow添加一個(gè)類(lèi)方法,方便檢查framework封裝是否達(dá)到目的
#import <Foundation/Foundation.h>
@interface AlertShow : NSObject
+ (void)showMessage:(NSString *)message;
@end
#import "AlertShow.h"
@implementation AlertShow
+ (void)showMessage:(NSString *)message
{
NSLog(@"%@", message);
}
@end!
這里還需要把公開(kāi)的類(lèi)添加到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. 個(gè)性化配置framework
a. 設(shè)置framework支持最低配置的iOS系統(tǒng)版本號(hào)
b. 根據(jù)需求選擇性添加armv7s
Xcode6之后,默認(rèn)不支持armv7s,如果需要添加FrameWork的工程是支持armv7s,那將會(huì)有沖突
c. 'Mach-O Type' 設(shè)置為 'Static Library'
FrameWork對(duì)于用戶(hù)生成的一定是靜態(tài)庫(kù)
d. Build Active Architecture Only屬性
這個(gè)屬性設(shè)置為yes,是為了debug的時(shí)候編譯速度更快,它只編譯當(dāng)前的architecture版本。
而設(shè)置為no時(shí),會(huì)編譯所有的版本。
編譯出的版本是向下兼容的,比如你設(shè)置此值為yes,用iphone4編譯出來(lái)的是armv7版本的,iphone5也可以運(yùn)行,但是armv6的設(shè)備就不能運(yùn)行。

e. 其他屬性
其他博客里面大都提到要在BuildSetting修改Dead Code Stripping、Link with Standard Libraries,但在Xcode7及以上版本后,不需要再把它們?cè)O(shè)置為NO
Dead Code Stripping
將Dead Code Stripping設(shè)置為YES,也能夠一定程度上對(duì)程序安裝包進(jìn)行優(yōu)化,只是優(yōu)化的效果一般,對(duì)于一些比較小的項(xiàng)目甚至沒(méi)有什么優(yōu)化體現(xiàn),所以這里也就沒(méi)有上測(cè)試數(shù)據(jù)。
Dead Code Stripping 是對(duì)程序編譯出的可執(zhí)行二進(jìn)制文件中沒(méi)有被實(shí)際使用的代碼進(jìn)行Strip操作。對(duì)他有興趣的可以點(diǎn)進(jìn)去查看
Link with Standard Libraries
LINK_WITH_STANDARD_LIBRARIES = YES
如果激活此設(shè)置,那么編譯器在鏈接過(guò)程中會(huì)自動(dòng)使用通過(guò)標(biāo)準(zhǔn)庫(kù)的鏈接器。
3. 生成framework
首先把需要外放的文件添加到以下的位置


在finder里面的兩個(gè)文件夾內(nèi)的內(nèi)容都是一樣的,可以通過(guò)終端把AlertShowFrameWork合并成一個(gè)

在終端輸入 lipo -create 第一個(gè)文件地址 第二個(gè)文件地址 -output 生成文件地址
記得要給生成的文件命名為AlertShowFrameWork,方便后面替換,不命名的話會(huì)報(bào)錯(cuò)


可以復(fù)制到項(xiàng)目里面使用了。
