程序运转时由系统动态加载到内部存款和储蓄器,2.添加静态库并取名

简介

在公司支付中,一些核心技术大概常用框架,出于安全性和安宁的设想,不想被外界知道,所以会把基本代码打包成静态库,只暴露头文件给程序员使用(比如:友盟、百度地图等第叁方的sdk)

静态库和动态库的留存方式

静态库:.a 和 .framework
动态库:.dylib 和 .framework

静态库和动态库的分歧

静态库:链接时,静态库会被完整地复制到可执行文件中,被频仍采用就有多份冗余拷贝
动态库:链接时不复制,程序运营时由系统动态加载到内部存款和储蓄器,供程序调用,系统只加载二回,多少个程序共用,节省外部存款和储蓄器

注意:项目中如果使用了动态库,会苹果拒接

简介

在小卖部开销中,一些宗旨技术恐怕常用框架,出于安全性和平稳的考虑,不想被外边知道,所以会把基本代码打包成静态库,只暴光头文件给程序员使用(比如:友盟、百度地图等第③方的sdk)
静态库和动态库的存在形式

静态库:.a 和 .framework
动态库:.dylib 和 .framework
静态库和动态库的区分

静态库:链接时,静态库会被完全地复制到可执行文件中,被频仍选择就有多份冗余拷贝
动态库:链接时不复制,程序运维时由系统动态加载到内部存款和储蓄器,供程序调用,系统只加载1回,五个程序共用,节本省部存款和储蓄器

静态库文件的版本(4种)

  • 真机-Debug版本
  • 真机-Release版本
  • 模拟器-Debug版本
  • 模拟器-Release版本

Debug(调试)版本

1.含完整的标志消息,以有益调节和测试
2.不会对代码进行优化

Release(发布)版本

1.不会含有完整的记号新闻
2.的履行代码是展开过优化的
3.的尺寸会比Debug版本的略小
4.在实行进程方面,Release版本会更快些(但不表示会有鲜明的晋级)

所以我们一般开发中都打包Release(发布)版本,提供外界

静态库文件的版本(4种)

真机-Debug版本
真机-Release版本
模拟器-Debug版本
模拟器-Release版本

装备的CPU架构简介(补充知识)

模拟器:

4s~5 : i386
5s~6plus : x86_64

真机:

3gs~4s : armv7
5~5c : armv7s (静态库只要永葆了armv7,就足以跑在armv7s的架构上)
5s~6plus : arm64

Debug(调试)版本

1.含完整的号子音信,以有益调节和测试
2.不会对代码进行优化

成立静态库 – Debug版

1.新建项目
2.添加静态库并取名

3.须求打包到进静态库的代码,放在那个文件夹内

4.再度创制测试类(HSCalculate),提供外界总括多少个数和的章程

HSCalculate.h

@interface HSCalculate : NSObject
+ (NSInteger)sumNum1:(NSInteger)num1 num2:(NSInteger)num2;
@end

HSCalculate.m

#import "HSCalculate.h"

@implementation HSCalculate

+ (NSInteger)sumWithNum1:(NSInteger)num1 num2:(NSInteger)num2
{
    return num1 + num2;
}

@end

5.索要揭穿给外界的文件(接口)

6.打包援助模拟器和真机的静态库(分别采用真机和模拟器运营,就会转变对应的静态库)

7.查看打包好的静态库

七个公文夹,里面包车型大巴.a文件正是打包好的静态库

Debug-iphoneos : 真机
Debug-iphonesimulator:模拟器

可用上面发号施令查看静态库援助的cpu框架结构(可查阅上边描述的cpu架构类型)

lipo -info xxx.a

个别查看打包好的模拟器与真机的静态库所支持的cpu架构

你会发现模拟器的静态库少了4s~5 : i386架构

原因:

上面Debug:Yes表示只编写翻译选中模拟器对应的架构,No则为编写翻译全数模拟器帮衬的cup架构(Debug的Yes状态改为No即可)

修改完后,重新编写翻译:

8.在本项目对该静态库举行调节,ViewController.m导入HSCalculate.h,测试运转,你会发觉报错了

#import "ViewController.h"
#import "HSCalculate.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    NSInteger result = [HSCalculate sumWithNum1:23 num2:25];
    NSLog(@"result: %d", result);
}

@end

报错:

原因:

亟需导入静态库(编写翻译即可运维成功)

9.并且协助真机与模拟器的静态库(需求联合)

真机和模拟器的静态库,是不均等的,无法同时适用在真机和模拟器上,但要知足那须要的话,要对编写翻译好的多少个静态库举行联合

联合好坏:

好:开发进度中既能够在真机上调节,也得以在模拟器上调节
坏:假若静态库太大,合并打包后,会特别大,由此不少第③方的静态库的.a是分别版本的

集合爆发新的静态库:

lipo -create Debug-iphoneos/xxx.a Debug-iphonesimulator/xxx.a -output xxx.a

10.把合并好的静态库和外边访问的文书拉入到新工程,即可使用(inc文件本人建立的)

Snip20150830_26.png

新建筑工程程测试:

Snip20150830_28.png

Release(发布)版本

1.不会蕴藏完整的号子新闻
2.的施行代码是拓展过优化的
3.的轻重会比Debug版本的略小
4.在执行进度方面,Release版本会更快些(但不意味着会有总而言之的晋级)
为此大家一般开发中都打包Release(发表)版本,提供外界

配备的CPU架构简介(补充知识)
模拟器:

4s~5 : i386
5s~6plus : x86_64
真机:

3gs~4s : armv7
5~5c : armv7s (静态库只要永葆了armv7,就足以跑在armv7s的框架结构上)
5s~6plus : arm64

塑造静态库 – Debug版
1.新建项目
2.添加静态库并取名

Snip20160930_2.png

3.亟待打包到进静态库的代码,放在这一个文件夹内

Snip20160930_3.png

4.再一次创造测试类(HSCalculate),提供外界总结几个数和的措施
5.内需暴光给外界的公文(接口)

6.打包匡助模拟器和真机的静态库(分别选拔真机和模拟器运维,就会转移对应的静态库)

Snip20160930_4.png

7.查看打包好的静态库

Snip20160930_5.png

多少个公文夹,里面包车型地铁.a文件正是打包好的静态库

Debug-iphoneos : 真机
Debug-iphonesimulator:模拟器
可用上面发号施令查看静态库辅助的cpu架构(可查看上边描述的cpu架构类型)

Snip20160930_6.png

9.并且支持真机与模拟器的静态库(须求统一)
真机和模拟器的静态库,是不等同的,不能够而且适用在真机和模拟器上,但要满意那供给的话,要对编写翻译好的八个静态库实行统一

统一好坏:
好:开发进程中既能够在真机上调节,也足以在模拟器上调节坏:假设静态库太大,合并打包后,会要命大,由此不少第③方的静态库的.a是分别版本的

集合发生新的静态库:

成立静态库 – Release版

跟Debug版步骤一样,只可是在编写翻译时,改上边包车型地铁选项即可


lipo -create Debug-iphoneos/xxx.a Debug-iphonesimulator/xxx.a -output xxx.a

10.把合并好的静态库和外侧访问的文件拉入到新工程,即可使用(inc文件本身树立的)

制作静态库 – .framework版

手续跟制作.a静态库,基本一致,但要注意的下面几点:

1.选择framework

Snip20150830_32.png

2.编写翻译时,默许制作成动态库,要在底下采取

Snip20150830_33.png

3.联合静态库时,是选.framework文件里的libstaticlib文件

合并:

删除libstaticliblibCalculateTool拉入libstaticlib.framework项目中,libstaticlib.framework静态库制作完结

小说同步到微信公众号:hans_iOS 有问号能够在Borgward号里直接发

制造静态库 – Release版

Snip20160930_7.png

制作静态库 – .framework版

步骤跟制作.a静态库,基本一致,但要注意的下面几点:

1.选择framework

Snip20160930_8.png

2.编写翻译时,默许制作成动态库,要在上边选拔

Snip20160930_9.png

3.集合静态库时,是选.framework文件里的libstaticlib文件

Snip20160930_10.png

合并:

Snip20160930_11.png

删除libstaticlib,libCalculateTool拉入libstaticlib.framework项目中,libstaticlib.framework静态库制作完了

Snip20160930_12.png

Demo
:(源码)https://github.com/canny1997/ADSDK
(.a)
https://github.com/canny1997/ADSDKAAAA

相关文章

网站地图xml地图