iOS最新静态库的创建与使用

引言

静态库即静态链接库,之所以叫做静态,是因为静态库在编译的时候会被直接拷贝一份,复制到目标程序里,这段代码在目标程序里就不会再改变了.静态库的好处很明显,编译完成之后,库文件实际上就没有作用了.目标程序没有外部依赖,直接就可以运行.当然其缺点也很明显,就是会使用目标程序的体积增大.
我们可能熟识静态库但可能并未自己创建并使用,下面我将向大家讲解如何创建并使用静态库.

静态库的创建

首先我们准备好需要打包的文件,在这里我以 FMDB 第三方库为例,来给大家讲解静态库的打包.

1.创建新的项目

创建.png

之后选择


选择库.png

创建完成之后我们将第三方库导入如下图

导入 FMDB 第三方库.png

2.设置暴露的头文件

点击TARGETS ~> Build Phases 点击添加New Headers Phase

image.png

导入 FMDB.h 即可,我导入其他的有点多余,不过无伤大雅.咱们继续.

3.设置打包的类型

选择工具栏的 Product ~> Schemes,进入选择 Release 选项,如果想打测试包可以选择 Debug

选择打包类型.png

都设置成功之后,然后我们用真机运行一下就 OK 啦,运行完之后.a静态库就打包成功

image.png

我们点击 show in finder即可找到相应的库.
在此我们需要将 libStaticLibrary.a 改为- lStaticLibrary.a .(打包结束系统会自动为我们的加上 lib 字段)
注:打包静态库时如果用的真机,则静态包只能真机运行,如果模拟器运行则只能用于模拟器运行,如果想实现两通用就要先打两个包然后通过
lipo –create Release-iphoneos/libStaticLibrary.a Release-iphonesimulator/libStaticLibrary.a –output libsqlcipher.a即可实现整合

将下面文件夹复制到想要用的目录里即可

image.png

OK 我们的静态库就这样打包成功了!!!!!

静态库的使用

工具都准备好了,让我们应用到实际项目中吧.

1.配置文件路径

首先配置文件的路径,将静态库拖入项目中如下图所示

将静态库拖入项目.png

然后在相应位置导入.a库以及相应的FMDB.h 文件

2.设置Library Search Path

需要添加以下参数:

   $(SRCROOT)/Libs/Debug-iphonesimulator$(EFFECTIVE_PLATFORM_NAME) 
   $(SRCROOT)/Libs/Release-iphonesimulator$(EFFECTIVE_PLATFORM_NAME)

$(SRCROOT):表示当前工程的根路径,可以在右边看到实际对应的路径
$(EFFECTIVE_PLATFORM_NAME):代表当前配置是OS,如果是模拟器则为-iphonesimulator,真机则为-iphoneos
一般第三方库只提供Release版本,如果只有Release版,则两个都设置Release即可

image.png

3.设置编译参数

Build Settings ~> Linking ~> Other Linker Flags

-all_load:会让链接器把所有找到的目标文件都加载到可执行文件中,但是千万不要随便使用这个参数!假如你使用了不止一个静态库文件,然后又使用了这个参数,那么你很有可能会遇到ld: duplicate symbol错误,因为不同的库文件里面可能会有相同的目标文件,所以建议在遇到-ObjC失效的情况下使用-force_load参数。
-force_load:所做的事情跟-all_load其实是一样的,但是-force_load需要指定要进行全部加载的库文件的路径,这样的话,你就只是完全加载了一个库文件,不影响其余库文件的按需加载  
image.png

导入相应头文件即可直接调用

image.png

在运行时,遇到了.o报错

image.png

几经周折,终于找到了原因少了 sqlite3库,添加完之后直接运行.OK搞定,一切都是那么的完美

image.png

好久没有写东西了,最近不太忙,看了一些第三方的内部实现,看的不是怎么透彻,有时间跟大家分享一家,不足之处请多多批评指教,谢谢大家.
Tank

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容