博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS静态库的编译
阅读量:6937 次
发布时间:2019-06-27

本文共 1608 字,大约阅读时间需要 5 分钟。

在做第三方的SDK的时候常会把自己的类编译成静态库,在提供给开发者使用的是好就能隐藏自己的私密信息,如私有API、APIKey等;


此处将开源的JSONKit类库编译成静态库,然后再使用我们编译好的静态库来来解析一个json文件


1.新建静态库工程,选择Framework & Library --》next ,命名JSONKitLib

1366104162_9260.png1366104386_4373.png

2.删除自动生成的JSONKitLib.h和JSONKitLib.h(因为是打包别人的类,不需要这两个文件,如果是自己制作就没必要删除了),在下载JSONKit,将JSONKit.h和JSONKit.m拷贝到这个工程之中;


3.此处要特别注意的,因为iOS模拟器是基于Mac OS平台X86架构,iOS设备都是给予ARM架构,所以给他们提供的静态库也必须对于他们的架构,幸运的是Xcode可以同时编译这两个架构的库;

编译的时候调到iOS Device ,  Product  --> Build;  如果调到其他则不能编译出来静态库

1366105436_7786.png

4.编译成功后就会出来libJSONKitLib.a,右键选中,show  in finder  ;会有Debug-iphoneos和Debug-iphonesimulator两个文件夹下的静态库,先让我们看看用lipo查看一下文件类型

1366105859_8833.png

1366106448_2935.png

一个是ARM架构的  一个是x86平台的i386架构的;如果我们要在模拟器上运行测试需要拷贝Debug-iphonesimulator下的静态库,如果需要在运行真机或是真机测试就必须是Debug-iphoneos下的静态库;


5.现在来测试刚刚编译的静态库,最好将这两库都拷贝出来,方便添加使用;新建一个xcode工程,把JSONKit.h文件添加到新建工程中,然后在把Debug-iphonesimulator下编译的静态库添加进去

1366106979_1048.png

6.此处测试代码测试使用的是国家气象局api,返回的是json文件

 

- (IBAction)TapJsonPaser:(id)sender {    NSError *error;    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://m.weather.com.cn/data/101180701.html"]];    NSData *repsponse = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:&error];    JSONDecoder *jsonPaser = [[JSONDecoder alloc] init];        NSDictionary *weatherDic = [jsonPaser objectWithData:repsponse error:&error];    NSLog(@"解析结果:%@",weatherDic);    [jsonPaser release];}

结果
 

 

1366107167_9627.png

但是有人会觉得这个太麻烦,果断的将这两个静态库打包成一个静态库使用命令

lipo -create Debug-iphoneos/libJSONKitLib.a Debug-iphonesimulator/libJSONKitLib.a -output libJSONKitTestLib.a

1366107639_4201.png


方法好虽好,但会牺牲空间,文件会变大,JSONKit源文件12KB + 177KB,编译成静态库后arm架构的511KB  i386架构的263KB,把它们打包成一个静态库是774KB;


     本文转自新风作浪 51CTO博客,原文链接http://blog.51cto.com/duxinfeng/1201853,如需转载请自行联系原作者

你可能感兴趣的文章
中文环境下的Weblogic
查看>>
[Android]开源中国源码分析——UI设计XML文件分析
查看>>
Angular CLI 常用命令
查看>>
Nginx的安装和配置
查看>>
mysql 5.6.27 rpm 安装
查看>>
Android Studio 创建项目常见问题
查看>>
在主机用ssh连接vitualbox虚拟机 nat端口转发 ssh连接
查看>>
Google Map For Android
查看>>
【转载】Hibernate3注解
查看>>
IN和EXISTS的详解
查看>>
在Mac上安装EA
查看>>
kmalloc详解
查看>>
Jquery 实现 微博,消息向上滚动
查看>>
Redis(一)——NoSQL入门和概述
查看>>
我为什么不看好 PHP 发展 ?
查看>>
使用jquery jcrop插件进行图片的截取与保存
查看>>
Spring Boot学习笔记-MVC
查看>>
Java身份证号码验证
查看>>
利用docker搭建php7和nginx运行环境的全过程
查看>>
C语言中的const和指针
查看>>