最近在做Apple的IOS开发,有开发静态库的需求,下面就简单写一个静态库和一个调用静态库的例子。

静态库的编写:
1. 静态库工程的建立:

Xcode New一个新的project,选择IOS下面的Framework&Library,下面有一个Cocoa Touch Static Library。直接next去建立一个Print这样的工程。

2.工程建立

我们添加很简单的"- (void)printA;"和"+ (void)printB;"的方法,这个方法的实现也是很简单的,在*.m文件中的实现就是一个"NSLog(@“”);"这样我们编译出来的libstaticlib就可以被其他的IOS工程进行调用了。这块注意一下,目前我们的Print->iOS Device

3.编译前准备

这里分release与debug版本,需要设置一下

4.OK,编译

我们可以在Products下面找到我们编译生成的libstaticlib.a这个文件。

注意未编译前为红色:左                             编译后为黑色: 右

      

5.ok

在右边 这个文件上右键Open In Finder。这时候我们打开了一个文件夹,里面有一个libPrint.a。后面我们继续编写一个调用这个libPrint.a的App。这个是给真机用的,那我们要给模拟器和真机封装的静态库应该都能用才好。这个下面介绍!!!!!

然后再在终端 打开这个文件:cd /Users/user/Library/Developer/Xcode/DerivedData/UItab-dbvoszbzpavyglaboxgflvrnzfce/Build/Products/Debug-iphoneos

命令是:lipo -info libPrint.a,可以看到显示的结果是:Arch是  Arm7。下面我会具体介绍一下。

6.建立一个调用这个libPrint.a的应用

应用就很简单了,我们添加刚才libPrint.a的*.h文件。 然后在这个工程的Build Phases的Link Binary With Library里面添加我们刚才拷贝出来的那个libPrint.a。

7.插入了h和a文件后

我们就可以在control里面调用这个libPrint.a 函数了。

#import "AstroDiskAppDelegate.h"

#import "Print.h"

@implementation AstroDiskAppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

//调用libPrint.a

[Print printB];

Print  *print = [[[Print alloc] init] autorelease];

[print printA];

self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

[self.window makeKeyAndVisible];

return YES;

}

8.OK,编译运行这个应用程序。

9.合并.a文件,制作通用静态库

真机运行的.a、模拟器运行的.a,  可以用 lipo 将这.a 合成一个通用的 .a。命令如下:

lipo -create xxxx/Release-iphonesimulator/libPrint.a  xxxx//Release-iphoneos/libPrint.a  -output /Users/pjk1129/Desktop/libPrint.a

10.打包以后的库文件,我们查看信息

然后打入如下命令:lipo -info /Users/pjk1129/Desktop/libPrint.a

可以看到如下信息:


如上,你已经看到了,它具备了i386和arm7的条件。 现在我们这个静态库,支持的构架已经是armv7 i386了。

(0054)iOS开发之制作静态库详解相关推荐

  1. xcode6制作静态库详解

    开发IOS程序时我们使用的是Objective-c语言,Objective-c语言有.h .m 文件组成.静态库可以将 .m文件封装成一个.a文件,第三方应用程序只需要拿到这个.a文件和代码对应的.h ...

  2. xcode 4 制作静态库详解

    最近在做Apple的IOS开发,有开发静态库的需求,本身IOS的开发,只允许静态库或者Framework.在Xcode上没有找到允许编译,如同Android上的*.so和Win32上的dll这样的说法 ...

  3. iOS 开发:『Runtime』详解(二)Method Swizzling

    本文用来介绍 iOS 开发中『Runtime』中的黑魔法Method Swizzling. 通过本文,您将了解到: Method Swizzling(动态方法交换)简介 Method Swizzlin ...

  4. iOS开发拓展篇—静态库

    一.简单介绍 1.什么是库? 库是程序代码的集合,是共享程序代码的一种方式 2.库的分类 根据源代码的公开情况,库可以分为2种类型 (1)开源库 公开源代码,能看到具体实现 比如SDWebImage. ...

  5. iOS开发 蓝牙技术4.0详解

    前言 前端时间,同学在做项目过程中遇到关于蓝牙方面的问题,今天我就给大家进行详细的进行讲解下蓝牙在iOS开发中的具体实现.在介绍蓝牙前,大家要搞清楚什么是蓝牙? 什么是蓝牙? 随着蓝牙低功耗技术BLE ...

  6. iOS开发-Apple开发者账号详解

    证书类型 账号类型 价格 可以发布AppStore? 支持安装设备数量 申请条件 证书类型 个人账号 $99 √ 500 无限制 Ad Hoc, App Store 公司账号 $99 √ 500 DU ...

  7. iOS开发系列课程(08) --- 事件处理详解和手势操作

    iOS中的事件分发 事件的分类 Touch Events(多点触摸事件) touchesBegan:withEvent:方法:一个或多个手指置于视图或窗口上 touchesMoved:withEven ...

  8. IOS开发网络篇之──ASIHTTPRequest详解

    目录 目录 发起一个同步请求 创建一个异步请求 队列请求 请求队列上下文 ASINetworkQueues, 它的delegate提供更为丰富的功能 取消异步请求 安全的内存回收建议 向服务器端上传数 ...

  9. iOS 开发 二维码扫描详解

    1.扫描二维码的控制器.m代码 #import "JDGScanQRcodeController.h" #import <AVFoundation/AVFoundation. ...

最新文章

  1. tomcat 初始管理用户和密码
  2. 计算机协会科创部部长职责,学生会科创部工作计划
  3. Oracle DB 服务器 系统时间修改问题 与 SCN 关系的深入研究
  4. Athentech Perfectly Clear中文版
  5. 【Java】练习题:数字判断
  6. 震惊!原来这才是Kafka的“真面目”!
  7. 麦咭早教机器人_【今日吐槽】这句台词有毒!完全忘不了!(机器人免费送)...
  8. eureka源码:开启服务注册
  9. Java当中的HashSet
  10. js判断数组中对象是否存在某个值
  11. MacBook 调度中心设置
  12. c mysql命令_最基本的mysql命令
  13. 消息通知系统模型设计
  14. 如何设置并使用运行在远程服务器上jupyter notebook
  15. SqlServer修改密码后登陆不上
  16. 万分之二用百分之怎么表示_怎么腐熟猪粪做有机肥
  17. oracle expdp作业外表报错ORA-20011KUP-11024ORA-29913
  18. java 首字母大写方法
  19. 缅因大学欧洛诺分校计算机科学,缅因大学申请要求高不高?开学时间是什么时候?...
  20. Appium+python自动化(六)- 连接模拟器并启动淘宝APP(超详解)

热门文章

  1. 【转】C#对象的深拷贝与浅拷贝
  2. ajax实现关联词提示
  3. 把两个文件捆绑压缩成一个文件命令
  4. TensorFlow学习笔记(一):数据操作指南
  5. 初入angular4——实际项目搭建总结
  6. linux 网卡配置详情
  7. HBase 系统架构
  8. Error:Execution failed for task ':myapp:dexDebug'. com.android.ide.common.process.ProcessExcepti
  9. (转载)Android游戏开发之旅一 长按Button原理
  10. 线程里面添加参数,并解决多个参数问题[原创]