ios制作.a静态库
2015-10-09 20:22
309 查看
开发中大家都会使用或多或少的第三方sdk,这些sdk基本都是一个.a文件和若干.h文件组成。.a文件就是ios的静态库,还有一种是.framework/.dylib的动态库。但是自己编写的动态库不能通过审核,所以一般使用的是制作静态库。
新建工程
编写代码
项目会生成一个.h和一个.m初始文件,然后我们编写一个最简单的打印(NSlog)功能的静态库。
编译
接下来就行编译,cmd+b或者product中build都行。注意这里要进行两次,一次是以真机或者ios device进行编译,一次以模拟器进行编译(先以真机或ios device编译)。因为模拟器和真机的运行不一样,编译成功后,products文件夹下的.a文件会变为正常颜色。show in finder后,可以看到两个文件夹,如图
合并静态库(.a文件)
刚才生成了两个文件夹,我们自己制作的sdk不可能让别人分两个环境去使用,所以我们需要合并两个.a文件。
命令为:
可以用 lipo -info lib.a来查看生成的静态库是支持哪个环境,armv7 arm64 armv7s(根据architectures的valid architecture来生成)的为真机环境,为i386(iPhone4s) x86_64(5s及以上)的话为模拟器。最后合并成功的是两这都有的。在某些情况下生成的静态库会导致build报错,使用不同的模拟器生成.a库,必要的时候还需修改build settings 里的architectures的属性,然后再生成进行合并。
使用静态库
新建一个普通项目,把.h和合并后的.a文件加入工程中,然后
运行程序就可以在控制台看见 printB与printA了。
到此为止,就完成了一个最简单的ios静态库的制作。
望指正与补充~
新建工程
编写代码
项目会生成一个.h和一个.m初始文件,然后我们编写一个最简单的打印(NSlog)功能的静态库。
#import <Foundation/Foundation.h> @interface libraryDemo : NSObject -(void)printA; +(void)printB; @end
#import "libraryDemo.h" @implementation libraryDemo -(void)printA { NSLog(@"PrintA"); } +(void)printB { NSLog(@"printB"); } @end
编译
接下来就行编译,cmd+b或者product中build都行。注意这里要进行两次,一次是以真机或者ios device进行编译,一次以模拟器进行编译(先以真机或ios device编译)。因为模拟器和真机的运行不一样,编译成功后,products文件夹下的.a文件会变为正常颜色。show in finder后,可以看到两个文件夹,如图
合并静态库(.a文件)
刚才生成了两个文件夹,我们自己制作的sdk不可能让别人分两个环境去使用,所以我们需要合并两个.a文件。
命令为:
lipo -create /yourpath1/lib.a /yourpath2/lib.a -output lib.a
可以用 lipo -info lib.a来查看生成的静态库是支持哪个环境,armv7 arm64 armv7s(根据architectures的valid architecture来生成)的为真机环境,为i386(iPhone4s) x86_64(5s及以上)的话为模拟器。最后合并成功的是两这都有的。在某些情况下生成的静态库会导致build报错,使用不同的模拟器生成.a库,必要的时候还需修改build settings 里的architectures的属性,然后再生成进行合并。
使用静态库
新建一个普通项目,把.h和合并后的.a文件加入工程中,然后
#import "libraryDemo.h" - (void)viewDidLoad { [super viewDidLoad]; [libraryDemo printB]; libraryDemo *testDemo = [[libraryDemo alloc]init]; [testDemo printA]; }
运行程序就可以在控制台看见 printB与printA了。
到此为止,就完成了一个最简单的ios静态库的制作。
望指正与补充~
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- IOS 改变键盘颜色代码
- 举例详解iOS开发过程中的沙盒机制与文件
- Android和IOS的浏览器中检测是否安装某个客户端的方法
- javascript实现阻止iOS APP中的链接打开Safari浏览器
- IOS开发第三方语音-微信语音
- iOS开发之路--微博OAuth授权_取得用户授权的accessToken
- 基于UIControl控件实现ios点赞功能
- iOS开发中实现邮件和短信发送的简单示例