iOS的Framework打包筆記

一.制作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è)置
  1. 設(shè)置Other Linker:-ObjC
  2. 添加Framework本身關(guān)聯(lián)的framework或者.a文件,防止編譯不過(guò)
  3. 設(shè)置search library path
  4. 設(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)哦!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容