iOS--Bundle文件和靜態(tài)庫文件的制作

看這篇文章前掐松,我強烈推薦先看這篇博客
iOS中自己做靜態(tài)庫

以及這篇注意事項:
靜態(tài)庫中要注意的坑

我這是基于Xcode8寫的踱侣,但是版本以下的也是一樣的制作,只是Xcode8的某些界面有點小改變而已甩栈。
廢話不多說泻仙,開始寫吧。
首先打開Xcode新建一個Bundle工程量没,如下圖


Bundle.png

工程命名為SourcePic(這個名字大家隨意自己喜歡)一進來的工程是這樣的:


Bundle Project.png

大家會發(fā)現(xiàn)玉转,這個不是個可執(zhí)行的文件,因為它只是一個資源包殴蹄,并不參與編譯究抓。
所謂資源文件包,那么最重要的就是里面的那個bundle了袭灯,我這里以制作一張圖片為資源包為例刺下,所以在工程里加入一張圖片,圖片命名為one稽荧,格式為png橘茉。在這里,特別提醒一句的就是,因為圖片有2x畅卓,3x的格式擅腰,會自動生成tiff格式的圖片,所以如果不需要生成tiff的格式翁潘,Targets -> Build Settings里搜索hidp趁冈,將屬性設成No即可。
設置tiff.png

然后:
尋找bundle的路徑.png

點擊小箭頭拜马,進入


導出bundle.png

然后將這個復制渗勘,粘貼到桌面里自己新建的一個文件夾中。至此俩莽,資源包已經(jīng)做好待使用旺坠。
再新建另一個工程,制作靜態(tài)庫扮超,在這里想要吐槽的就是价淌,蘋果不允許用戶使用動態(tài)庫上架,但自己卻堂而皇之的使用動態(tài)庫(呀瞒津,扯遠了!@ㄊO矧健)
操作如下:
選中Static Library.png

進來之后會有一個與工程名相同的類,
工程.png

剛進來時濒翻,那個.a的文件是紅色的屁柏,大家可以用模擬器或者真機都編譯一次,因為靜態(tài)庫是區(qū)分模擬器使用或者真機使用的有送。編譯之后淌喻,.a文件就會變成上面圖片的正常顏色。然后要在Target中設置此靜態(tài)庫編譯的最低版本雀摘,
編譯版本.png

就如我這里設置系統(tǒng)版本最低是8.0以上才能使用這個靜態(tài)庫裸删,其他版本編譯是不能通過的,然后就是配置:
Edit Scheme.png

點擊Edit Scheme阵赠,
設置Release.png

然后再編譯成功涯塔。
現(xiàn)在就是自己想要開放對外的接口,在.h文件里寫上接口清蚀,我這里做一個簡單的示例匕荸,就是調取這個接口,返回一張圖片枷邪,.h文件如下:

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

@interface StaticLibrary : NSObject

+(UIImage *)start;

@end

.m文件如下:

#import "StaticLibrary.h"

@implementation StaticLibrary

+(UIImage *)start{

    NSLog(@"StaticLibrary Start");
    
    NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"SourcePic" ofType:@"bundle"];
    NSBundle *bundle = [NSBundle bundleWithPath:bundlePath];
    NSString *path = [bundle pathForResource:@"one" ofType:@"png"];
    NSLog(@"bundle path = %@,image path = %@",bundlePath,path);
    
    UIImage *image = [UIImage imageWithContentsOfFile:path];
    return image;
}

@end

大家可以發(fā)現(xiàn)榛搔,我這張圖片就是從前面制作的bundle資源包里取。再次用模擬器和真機編譯通過,尋找.a文件的位置:


靜態(tài)庫的路徑尋找.png

拷貝.a文件和.h文件.png

將.a文件和.h文件拷貝到前面bundle放置的那個文件夾里践惑,現(xiàn)在文件夾里就已經(jīng)有了三個文件:


三個

最后新建一個正常的Xcode工程腹泌,將上面包含三個文件的文件夾添加到項目中,在ViewController中引入三個文件里的.h文件童本,
#import "ViewController.h"
#import "StaticLibrary.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 200, 200)];
    imageView.center = self.view.center;
    imageView.image = [StaticLibrary start];
    [self.view addSubview:imageView];
}
@end

大功告成真屯,效果圖如下:


效果圖

這里我只是用了一個很簡單的圖片做為一個例子,靜態(tài)庫的制作根據(jù)自己的項目需求穷娱,暴露出合適的接口绑蔫,在項目中使用靜態(tài)庫是不是比復制粘貼代碼高大上了很多?

以下是不要跳的坑:

1.靜態(tài)庫中最好不要用xib泵额;
因為xib是文本文件配深,編譯后要被序列化為二進制的nib文件,使用時將nib文件反序列化嫁盲,就可以正常顯示界面了篓叶。而bundle本身是靜態(tài)的,其內部的資源包不參與項目的編譯羞秤,所以缸托,此處必須創(chuàng)建工程把xib序列化為二進制的nib,要用的話就將xib放大bundle文件中編譯瘾蛋,然后xib就會變成.nib的文件俐镐。
2.bundle文件必須放到靜態(tài)庫外面來引用
如果放在靜態(tài)庫里面哺哼,是讀不到里面的資源的佩抹。
3.如果要暴露其他的.h文件接口,記得在xcode中設置取董。
4.如果靜態(tài)包中有分類棍苹,要在xcode項目中設置,如下圖茵汰;

包含分類的情況

興奮臉.gif
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末枢里,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子经窖,更是在濱河造成了極大的恐慌坡垫,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件画侣,死亡現(xiàn)場離奇詭異冰悠,居然都是意外死亡,警方通過查閱死者的電腦和手機配乱,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門溉卓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來皮迟,“玉大人,你說我怎么就攤上這事桑寨》幔” “怎么了?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵尉尾,是天一觀的道長爆阶。 經(jīng)常有香客問我,道長沙咏,這世上最難降的妖魔是什么辨图? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮肢藐,結果婚禮上故河,老公的妹妹穿的比我還像新娘。我一直安慰自己吆豹,他們只是感情好鱼的,可當我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著痘煤,像睡著了一般凑阶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上衷快,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天晌砾,我揣著相機與錄音,去河邊找鬼烦磁。 笑死,一個胖子當著我的面吹牛哼勇,可吹牛的內容都是我干的都伪。 我是一名探鬼主播,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼积担,長吁一口氣:“原來是場噩夢啊……” “哼陨晶!你這毒婦竟也來了?” 一聲冷哼從身側響起帝璧,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤先誉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后的烁,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體褐耳,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年渴庆,在試婚紗的時候發(fā)現(xiàn)自己被綠了铃芦。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片雅镊。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖刃滓,靈堂內的尸體忽然破棺而出仁烹,到底是詐尸還是另有隱情,我是刑警寧澤咧虎,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布卓缰,位于F島的核電站,受9級特大地震影響砰诵,放射性物質發(fā)生泄漏征唬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一胧砰、第九天 我趴在偏房一處隱蔽的房頂上張望鳍鸵。 院中可真熱鬧,春花似錦尉间、人聲如沸偿乖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽贪薪。三九已至,卻和暖如春眠副,著一層夾襖步出監(jiān)牢的瞬間画切,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工囱怕, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留霍弹,地道東北人。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓娃弓,卻偏偏與公主長得像典格,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子台丛,可洞房花燭夜當晚...
    茶點故事閱讀 45,047評論 2 355

推薦閱讀更多精彩內容