iOS开发笔记--静态库的制作与使用

一、iOS项目中库的使用

1、开源库

* 公开源代码,能看到具体实现

*比如SDWebImage、AFNetworking

2、闭源库

* 不公开源代码,是经过编译后的二进制文件,看不到具体实现

* 主要分为:静态库、动态库(注意自己制作的动态库不能上传到appStore)

二、本文首先讲的的是静态库的制作以及使用

1、新建静态库项目

新建静态库项目选择cocoa Touch Static Library

然后编写核心代码

2、分别在真机和模拟器下编译生成对应环境的静态库

(注意真机文件夹下得静态库只能用于真机上, 模拟器文件夹下得静态库只能用于模拟器下)

3、利用终端指令合成真机、模拟器静态库

可以借助 lipo -info 静态库文件地址 指令查看当前静态库支持的平台
       可以借助 lipo -create libdev/lib08-staticDemo.a  libPro/lib08-staticDemo.a  -output HMTool.a 指令将模拟器和真机的静态库合并为一个静态库
       lipo -create 需要合并的静态库1 需要合并的静态库2 -output 合并之后的文件名称
       注意: 虽然将真机和模拟器的静态库合并在一起之后, 以后我们就不用关心当前是允许在模拟器还是真机了, 但是如果在程序发布时还是建议大家使用真机的静态库. 小

4、图片资源的处理

如果静态库中用到了图片资源,一般都放到一个bundle文件中,bundle名字一般跟 .a 或 .framework 名字一致

bundle的创建:新建一个文件夹,修改扩展名为 .bundle 即可,右击bundle文件,显示包内容,就可以往bundle文件中放东西

5、静态库的注意点

静态库中包含了Category

如果静态库中包含了Category,有时候在使用静态库的工程中会报“方法找不到”的错误(unrecognized selector sent to instance)

解决方案:在使用静态库的工程中配置Other Linker Flags为-ObjC

时间: 2024-07-30 23:55:13

iOS开发笔记--静态库的制作与使用的相关文章

iOS开发之静态库(五)—— 图片、界面xib等资源文件封装到静态框架framework

编译环境:Macbook Air + OS X 10.9.2 + XCode5.1 + iPhone5s(iOS7.0.3) 一.首先将资源文件打包成bundle 由于bundle是静态的,所以可以将“iOS开发之静态库(三)—— 图片.界面xib等资源文件封装到.a静态库”中生成的“MyToolsWithAssetsA.bundle”文件直接拿过来使用. 二.创建静态框架 创建过程参考“iOS开发之静态库(四)—— 静态框架framework制作”,里面介绍非常详细. 静态库代码借用“iOS开

李洪强iOS开发之静态库

iOS开发拓展篇—静态库 一.简单介绍 1.什么是库? 库是程序代码的集合,是共享程序代码的一种方式 2.库的分类 根据源代码的公开情况,库可以分为2种类型 (1)开源库 公开源代码,能看到具体实现 比如SDWebImage.AFNetworking (2)闭源库 不公开源代码,是经过编译后的二进制文件,看不到具体实现 主要分为:静态库.动态库 二.静态库和动态库 1.静态库和动态库的存在形式 静态库:.a 和 .framework 动态库:.dylib 和 .framework 2.静态库和动

iOS开发之静态库(四)—— 静态框架framework制作

前面介绍过,虽然苹果公司禁止在iOS开发中使用动态库,而且也从XCode中移除了创建静态框架的功能,但我们还是可以通过对XCode进行小小的改动来创建静态框架. 编译环境:Macbook Air + OS X 10.9.2 + XCode5.1 + iPhone5s(iOS7.0.3) 首先创建一个静态库工程 给工程起个名字 创建成功 XCode5.0以后,创建的工程中默认自带了单元测试的代码: 即MyToolsFrameworkTestTests目录及TARGETS中的MyToolsFrame

iOS开发之静态库.a的制作

简介 什么是库? 库是程序代码的集合,是共享程序代码的一种方式 根据源代码的公开情况,库可以分为2种类型 开源库 公开源代码,能看到具体实现 比如SDWebImage.AFNetworking 闭源库 不公开源代码,是经过编译后的二进制文件,看不到具体实现 主要分为:静态库.动态库 静态库和动态库 静态库和动态库的存在形式 静态库:.a 和 .framework 动态库:.dylib 和 .framework 静态库和动态库在使用上的区别 静态库:链接时,静态库会被完整地复制到可执行文件中,被多

iOS开发之静态库.a的制作教程

简介 什么是库? 库是程序代码的集合,是共享程序代码的一种方式 根据源代码的公开情况,库可以分为 2 种类型 开源库 公开源代码,能看到具体实现 比如 SDWebImage . AFNetworking 闭源库 不公开源代码,是经过编译后的二进制文件,看不到具体实现 主要分为:静态库.动态库 静态库和动态库 静态库和动态库的存在形式 静态库: .a 和 .framework 动态库: .dylib 和 .framework 静态库和动态库在使用上的区别 静态库:链接时,静态库会被完整地复制到可执

iOS开发之静态库(一)—— 基本概念

在项目开发过程中,经常出现优秀代码重用现象,又或者提供给第三方功能模块却又不想让其看到源代码,这些时候,通常的做法是将代码封装成库或者框架,这些在Windows编程或Linux编程中非常容易实现的过程,在iOS开发中却遇到了麻烦,原因是:苹果公司禁止在iOS开发中使用动态库(而苹果自己却可以使用动态库),同时,苹果也从Xcode中移除了创建静态框架的功能.值得庆幸的是我们可以通过对Xcode进行小小的改动来创建静态框架,而静态库和静态框架是被App Store所允许的,其实静态框架本质上说也是静

iOS开发之静态库(六)—— 时空之争

前面的所有试验中,我们的静态库都支持了所有可能的指令集(i386, x86_64, armv7, armv7s, arm64),最大限 度的匹配了所有可能运行该代码的设备,使代码在当前存在的几乎所有iOS设备上都能以最优的性能运行.然而,这样 做是否真的很好,是否真的必要. 我们来做个试验:参考“Apple移动设备处理器指令集 armv6.armv7.armv7s及arm64”生成各种包含特定指令集 的静态库,查看其占用磁盘空间的大小,结果如下 从上图可以很清楚的看到,生成的二进制文件所支持的指

iOS开发之静态库(三)—— 图片、界面xib等资源文件封装到.a静态库

编译环境:Macbook Air + OS X 10.9.2 + XCode5.1 + iPhone5s(iOS7.0.3) 一.首先将资源文件打包成bundle 新建工程:File -> New -> Project... -> OS X -> Framework & Library -> Bundle 我们必须借助于OS X,因为iOS框架中没有创建Bundle的模板 填写项目名称 保存位置 其实本无需这么麻烦,bundle的本质是一个目录,我们完全可以创建一个文

iOS开发之静态库(二)—— .a

前面已经介绍了iOS中静态库的基本概念和特点,这里就不再多废话,直接上代码 编译环境Xcode5.1 + Mac OS X 10.9.3 新建静态库项目 Xcode中创建静态库的模板有两个,一个是创建iOS静态库,另一个是创建Mac OS X静态库,我们选择前者 点击右下角Next按钮进入下一步 给工程起个名字MyToolsA,其余的按默认值 点击Next下一步 我们所关心的就只有MyToolsA.h和MyToolsAm文件,其他的暂且不管 // MyToolsA.h // MyToolsA /