一.制作Framework和bundle
Frameworkd的制作:
創(chuàng)建cocoa Touch Framework,即可以生成對(duì)應(yīng)的頭文件和配置文件。
- 若要生成prefix header頭文件的,跟普通工程一樣創(chuàng)建。打開(kāi)prefix header并設(shè)置prefix header路徑。
- Framework生成,將要暴露的.h文件在Header中暴露出來(lái);在編譯Target Dependencies中關(guān)聯(lián)bundle,避免每次又要單獨(dú)去編譯Bundle文件
- 注意在使用Framework時(shí),需要將Framework添加到Embedded Binaries中將Framework添加進(jìn)來(lái)
Bundle的制作:
在target下面點(diǎn)擊?圖標(biāo),選擇mac OS下面的Bundle,即可生成bundle資源包。
- 生成好的bundle包要進(jìn)行iOS設(shè)置build settings->supporting platform = iOS;
- 防止圖片生成.tiff格式在Build Settings ->COMBINE_HIDPI_IMAGES = NO
- 要使用的資源放在copy bundle Resource中進(jìn)行編譯,Bundle里可以添加圖片,文檔,國(guó)際化,xib文件,以及其他的資源文件
二.資源的獲取
1. 獲取圖片資源
NSBundle *bundle = [NSBundle bundleWithURL:[[NSBundle mainBundle] URLForResource:@"source" withExtension:@"bundle"]];
UIImage *iv = [UIImage imageNamed:@"zhuanqian" inBundle:bundle compatibleWithTraitCollection:nil];
//或
v2.image = [UIImage imageNamed:@"source.bundle/zhuanqian"];
2. 獲取xib資源
NSBundle *bundle = [NSBundle bundleWithURL:[[NSBundle mainBundle] URLForResource:@"APPBaseSDKBundle" withExtension:@"bundle"]];
NSArray *nibs = [bundle loadNibNamed:@"ZLFTabBar" owner:nil options:nil];//再在數(shù)組中取
//使用到VC中使用xib,在init中初始化
- (instancetype)init
{
NSBundle *bundle = [NSBundle bundleWithURL:[[NSBundle mainBundle] URLForResource:@"src" withExtension:@"bundle"]];
if (self = [super initWithNibName:@"FourController" bundle:bundle])
{
}
return self;
}
3. 獲取本地化資源
先創(chuàng)建好Localizable.strings文件,選擇多個(gè)語(yǔ)言,添加到Bundle中來(lái),然后利用下面的宏定義來(lái)取
#define LocalizedString(key, comment) \
[[NSBundle bundleWithURL:[[NSBundle mainBundle]URLForResource:@"source" withExtension:@"bundle"]] localizedStringForKey:(key) value:@"" table:nil]
記得要使用Framework的工程,要支持Framework的本地化,要先添加多語(yǔ)言進(jìn)來(lái)
三.其他的一些問(wèn)題
1. 如何處理第三方庫(kù)問(wèn)題
因?yàn)榇虬?,盡量的少用第三方庫(kù),一是減少包的體積,而是防止使用Framework工程和Framework同時(shí)引用來(lái)帶的一些問(wèn)題。該部分簡(jiǎn)單測(cè)試了AFNetworking第三方,沒(méi)有出現(xiàn)大的問(wèn)題,只是在打印日志下出現(xiàn)重復(fù)使用的提示,該部分待測(cè)...
2. 如何處理其他靜態(tài)文件
使用其他的.a文件,自定義的需要將.a文件和Framework同時(shí)打包過(guò)去提供別人使用,.a文件的資源文件不需要添加到Bundle中
3.可能需要的設(shè)置
- 設(shè)置Other Linker:-ObjC
- 添加Framework本身關(guān)聯(lián)的framework或者.a文件,防止編譯不過(guò)
- 設(shè)置search library path
- 設(shè)置Bitcode
注:Framework里面可以添加Framework也可以添加.a文件,在使用點(diǎn).a文件時(shí)要將使用的.a文件帶過(guò)去,F(xiàn)ramework也可以添加framework文件
文章可能寫的還不是很全,最近在弄這塊,有什么問(wèn)題和不足的話,會(huì)持續(xù)更進(jìn)...有問(wèn)題也懇請(qǐng)指正批評(píng)哦!