制作静态库文件(.a文件)
制作静态库文件(.a文件)
1、创建静态库工程:
在Xcode中new一个新的project,选择IOS下面的Framework&Library,下面有一个Cocoa Touch Static Library。直接next去建立一个静态库工程。(如下图)

2、编写工程:
现在就可以编写静态库要实现的功能(新建文件,编写代码)
3、配置静态库工程对应的Copy Files和Copy Headers:
在工程设置的Build Phases中设置(如下图),选择右下角的Add Build Phases,添加Copy Files和Copy Headers。
其中Copy Files是将其他工程调用静态库时候需要的头文件拷贝到Products Directory下的include文件夹下;Copy Headers用来设置静态库工程中文件的Target Membership,将需要公开的头文件拖到public下面。

4、添加资源文件(包括xib和图片等资源):
网上很多教程都是到上一步就可以编译了,但是仅限于编写一些方法(代码),无法添加资源,这里介绍如何添加资源文件。
采用的方法是,我们将所有的资源文件添加到一个bundle里面,然后把它和静态库一起include到其他工程中使用。下面是创建bundle的步骤:
a、添加bundle:在工程设置的Build Phases中设置,选择右下角的Add Target新建一个target,这里我们选择OS X下面的Framework&Library中的Bundle(如下图)。

b、我们可以看出这个目标模板是用于mac下面的,所以我们需要改下配置,让它可以在ios下面使用,在Build Setting下面的Base SDK值改为ios(最好改给Latest..那项)(如下图)。

c、现在我们可以将资源文件添加到刚才创建的bundle中了:
选择刚才创建的bundle的工程设置,在Build Phases中,将需要添加的资源添加到Link Binary With Libraries中(如下图)

5、编译:
编译器准备:我们编译生成的静态库文件分为release和debug版本,平时调试可以用debug版本,发布时候一定要用release版本(在Edit Schemes中修改,如下图);

现在就可以编译了,编译后的静态库文件、头文件还有bundle文件全都在Products Directory文件夹下。
另外静态库还区分真机版和模拟器版本(编译的时候选择的是设备编译的就是真机版,选择的如果是模拟器编译出来的就是模拟器版本,我们可以在命令行用下面的命令查看静态库的信息:
lipo –info *.a
i386是模拟器版本,armv7是真机版本,下面的命令可以将两个版本的库文件合成一个:
lipo –create path1/lib1.a path2/lib2.a -output path3/newlib.a
6、建立一个调用静态库的应用:
7、链接静态库:把第5步编译生成的后的静态库文件(.a文件)、头文件还有bundle文件添加到新建的应用中,将.a库添加到工程设置Build Phases的Link Binary With Library中,将bundle添加到工程设置Build Phases的Copy Bundle Resources中。
至此,我们已经将静态库添加到应用中了,在需要用库中方法的地方引入头文件,然后就可以调用里面的方法了。
制作静态库文件(.a文件)的更多相关文章
- Ubuntu16.04下编译OpenCV2.4.13静态库(.a文件)
Ubuntu16.04下编译OpenCV2.4.13静态库(.a文件) https://blog.csdn.net/woainishifu/article/details/79712110 我们在做项 ...
- 静态库是.o文件的集合与弱符号
静态库是.o文件的集合. 静态库与弱符号的概念相关联. 在生成库文件时,不做强符号检查.
- 判断IOS静态库(.a文件)是否支持模拟器和真机运行
判断IOS静态库(.a文件)是否支持模拟器和真机运行 在mac终端下,进入到.a文件目录下,然后输入: lipo -info libMyAlertView.a Architectures in the ...
- Xcode8.3.2制作静态库
1. 打开Xcode8.3.2: 2. 如下操作 3. 创建Bundle文件 比如xib或者图片存放 File-new-Target 选择macOS 搜索Bundle文件 4.创建完成如下所示 5. ...
- Linux库函数制作(静态库、动态库)
Linux库函数制作(静态库.动态库) 静态库与动态库 链接方式 链接分为两种:静态链接.动态链接 静态链接: 由链接器在链接时将库的内容加入到可执行程序中 静态链接的特点是: 优点: 对运行环境的依 ...
- Linux下制作静态库 & 动态库
静态库 1.将.c生成.o文件 gcc-cadd.c-o add.o 2.使用ar工具制作静态库 ar rcs lib库名.a add.o sub.o div.o 3.编译静态库到可执行文件中 gcc ...
- xcode 制作静态库.a文件 详解
http://blog.csdn.net/kepoon/article/details/21516977 最近在做Apple的IOS开发,有开发静态库的需求,本身IOS的开发,只允许静态库或者Fram ...
- iOS开发--CornerStone上传静态库(.a文件)
首先打开软件左上角 CornerStone-Preferences-SubVersion 第一个地方把对号去掉,第二个地方把.a那个删除,然后save. 然后把你的.a文件放到本地的相应文件夹下, 但 ...
- iOS静态库(.a文件)
1.找到静态库工程
随机推荐
- mysql query insert中文乱码
mysql新建的表的charset都是utf8的. 在phpmyadmin里直接敲sql,中文可以insert进去的,但是在php代码里mysql_query同样的sql语句就是不行,保存到表里是乱码 ...
- ConcurrentHashMap中的2的n次方幂上舍入方法
最近看JDK中的concurrentHashMap类的源码,其中有那么一个函数: /** * Returns a power of two table size for the given desir ...
- js 判断数组中是否存在
/* 判断数组中是否存在 var somearray = ["mon", "tue", "wed", "thur"] s ...
- C#实现记事本查找功能
private void button1_Click(object sender, EventArgs e) { if (!(String.IsNullOrEmpty(this.textBox1.Te ...
- Swift lazy 修饰符和方法
LAZY 修饰符和 LAZY 方法 由 王巍 (@ONEVCAT) 发布于 2015/10/07 延时加载或者说延时初始化是很常用的优化方法,在构建和生成新的对象的时候,内存分配会在运行时耗费不少时间 ...
- POJ 1961 Period KMP算法next数组的应用
题目: http://poj.org/problem?id=1961 很好的题,但是不容易理解. 因为当kmp失配时,i = next[i],所以错位部分就是i - next[i],当s[0]...s ...
- PHP利器-WAMPServer
为了配置memcacheAdmin,牵涉到搭建PHP的环境,使用的是WAMPServer,安装之后,需要对apache进行配置, 端口,需要将wamp\bin\apache\Apache2.2.21\ ...
- 蓝牙音箱bose soundlink mini2链接mac后itunes自动启动的问题解决
1.在应用程序列表中复制一个应用重命名为DoNothingApp.app(非系统应用才可以成功复制) 2.打开terminal执行该命令(执行后需要输入密码),注意mv和iTunes.app后分别有一 ...
- hbase rowkey设计的注意事项
充分利用有序性 1.1 如果要scan操作,且不是很频繁,可以利用rowkey的有序性将需要一起扫描的数据放到一起.例如直接用时间戳.这样就可以按时间scan了.这个只要是简单的全表扫描都行. 1.2 ...
- Central Europe Regional Contest 2012 Problem J: Conservation
题目不难,感觉像是一个拓扑排序,要用双端队列来维护: 要注意细节,不然WA到死 = =! #include<cstdio> #include<cstring> #includ ...