iOS入门之打包静态库

原创 2017年09月09日 13:56:05

在项目开发中,或多或少的都会使用第三方库,有时候也会将自己项目中独立于业务的相关代码打包成库以供别人使用。在Android开发中,一般打包为aar或者jar文件以供第三方使用。iOS开发中,则可以直接打包为.a文件,iOS内置了Static Library的模板,所以使用上也是十分的方便。
在正式讲解打包.a静态库之前,首先来看一些概念:

什么是库?

所谓库就是程序代码的集合,是共享程序代码的一种方式。

库的分类

根据程序代码的开源情况,库可以分为两类:

开源库

源代码是公开的,第三方开发者可以看到具体实现。比如GitHub上比较出名的第三方框架AFNetworking、SDWebImage。

闭源库

不公开源代码,只公开调用的接口,看不到具体的实现,是一个编译后的二进制文件。这种常见于一些公司的SDK包,比如高德地图SDK、环信即时通讯SDK等等。而闭源库又分为两类:静态库和动态库。本篇重点要讲的便是其中的静态库。

静态库和动态库的区别

静态库

以”.a”或者“.framework”为文件后缀名。

动态库

以”.dylib”或者“.framework”为文件后缀名。

区别

静态库链接时会被完整的复制到可执行文件中,被多次使用就有多份拷贝。形如:
这里写图片描述

动态库链接时不复制,程序运行时由系统动态加载到内存,供程序调用。而且系统只加载一次,多个程序共用,节省内存。
这里写图片描述

苹果芯片架构

armv6: iPhone、iPhone 2、iPhone 3G、iPod Touch(第一代)、iPod Touch(第二代)

armv7: iPhone 3Gs、iPhone 4、iPhone 4s、iPad、iPad 2

armv7s: iPhone 5、iPhone 5c (静态库只要支持了armv7,就可以在armv7s的架构上运行)

**arm64:**iPhone7、iPhone7 Plus iPhone 5s、iPhone 6、iPhone 6 Plus、iPhone 6s、iPhone 6s Plus、iPad Air、iPad Air2、iPad mini2、iPad mini3

打包静态库

1,打开Xcode创建一个新的工程,这里以Xcode8.3为例。新建Static Library静态库工程。
这里写图片描述
2,创建工程完毕后,再创建一个工具类StaticLibTool,添加一个方法用于测试。
这里写图片描述
然后在.h文件中声明一个方法,并在.m文件中实现该方法,在方法内容输出一段日志。
这里写图片描述

这里写图片描述

3,运行工程进行打包,运行完毕后,会看到工程中Products文件夹下的StaticLib.a文件由红色变成了黑色。这就是我们打包好的.a静态文件了。
这里写图片描述

4,公开接口头文件和相关需要暴露的方法。依次选择targets->Build Phases->Copy Files->”+”->需要公开的头文件
这里写图片描述
或者
这里写图片描述
这里写图片描述
添加完成后, 需要手动将StaticLib文件拖入Public一栏中进行公开。
这里写图片描述

5,设置Scheme。即运行的环境,因为正是环境和debug环境所需要的库还不一样,需要分别打包。
选择Product->Scheme t-> Edit Scheme。再次运行即可。
这里写图片描述

如果需要合并模拟版本和真机版本的静态库。当debug环境和relase环境.a文件都打包好以后,选择libStaticLib.a,右键选择Show in Finder,进入Finder后,可以看到编译后的模拟器和真机版本的.a静态库。

这里写图片描述

合并终端命令如下:

lipo -create "真机版本.a静态库路径" "模拟器版本.a静态库路径" -output "合并后的.a静态库路径"

注意中间要有空格。

5,测试。新建一个可运行的工程,libStaticLib.a和StaticLib.h文件拖入工程即可。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

iOS将多个第三方sdk打包成静态库

前段时间做了个sdk打包成动态库,发现使用非常方便各种好处也特别多,然后在最后将APP打包时出问题了,打包时候动态库打不进去,想了很多办法还是没有解决,又因为赶时间所以只能重新打成静态库了。   ...

iOS 打包静态库.a文件

制作.a1、新建项目 –> Cocoa Touch Static Library 2、添加库需要包含的代码 3、将需要暴露的.h文件暴露出来,.m会自动编译到.a文件中 4、分别选择真机设备和模...

ios开发使用xcode6打包protobuf静态库 解决了 官方引用 protobuf 导致的冲突问题 包含 arm64 支持

1、下载 protobuf-2.5.0-mast ,并解压 2、在解压后的  目录内部建立一个 目录 名字随便写,我这里写的 是 xcodeProject 如图:

【iOS开发】打包静态库.a文件

MENU HOMECATEGORIESTAGSABOUT FEED IOS开发 this post is featured 【iOS开发】打包静态库.a文件 Bison 10...

iOS 打包静态库

打包iOS静态库听起来很牛逼的样子,其实很他娘的简单。 楼主使用的是XCode6.4 1,新建Cocoa Touch Static Library                 2,起名并保存...

ios将工程打包成静态库过程

1、     新建一个工程(工程1)file——>new——>project——>Framework&Library——>点击next——>Product Name里面输入名字,如:DaoBaoSDK...

将 protobuf 打包成 iOS 静态库 xcode4.6.2

1、创建静态库工程  :protobuf 2.(github上去下载protobuf源代码)在protobuf的源代码跟文件夹中创建一个文件夹xcodeproject 3.将刚刚创...

[绍棠] ios打包静态库,看这篇就够了

一、前言 前段时间看的一本书上说:“隔着一段距离看,很多有趣的知识看起来都很唬人。”比如说这篇我要总结的“静态库知识”,在我初出茅庐的时候着实觉得那些后缀名为“.frameworke”、...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)