您的位置:首页 > 移动开发 > IOS开发

[iOS]制作静态库

2016-03-08 15:51 309 查看
关于静态库的概念及好处,这里不再赘述,直接给出制作步骤;

1. 建立静态库工程

新建工程 -->Framework&Library --->Cocoa Touch Static Library



完成后可见,只有一个.m和.h文件,就是在这里编写我们的代码:



这里,我简单写了一个方法,实现文件里只有一个输出语句输出一句话:

-(void)log {
NSLog(@"只是测试一下");
}


2.生成静态库

生成的静态库有两种模式:Debug和Release,其中默认的是Debug模式,需要将其改为Release模式(如果不上线可不改):

选择 Product -->Scheme -->Edit Scheme...



Run --> info -->Build Configuration



完成后,选择运行的设备,在真机和模拟器上各运行一次,这时会发现,在项目的Products目录下会有个.a文件(未运行之前是红色的,表示不存在;运行后是黑色的,表示存在),右键-->Show In Finder



可打开缓存目录:



以显示详细路径可发现,在Products文件夹下有两个文件:Release-iphoneos和Release-iphonesimulator,分别保存着可真机环境下和可在模拟器环境下运行的.a静态库和.h(在include文件夹下)文件;

4.合并静态库(生成可同时在模拟器和真机使用的静态库)

打开终端,cd到Products文件夹(也可将此文件夹复制到桌面,方便操作,我这里直接进入到缓存目录下的),可直接单击上图中Products文件夹名,然后拖到终端里,可自动生成路径:

$ cd /Users/mac/Library/Developer/Xcode/DerivedData/Test-dogkciifmtqvakafpvgtudysyghv/Build/Products


指令ls可查看当前文件夹下的文件:

$ ls
Release-iphoneos	Release-iphonesimulator


查看静态库可执行的CPU环境,使用指令lipo -info 可查看文件信息,因为.a文件不是在此直接目录下,需要加上相对路径:

$ lipo -info Release-iphoneos/libTest.a
Architectures in the fat file: Release-iphoneos/libTest.a are: armv7 arm64
回车后,可以看到支持armv7和arm64

$ lipo -info Release-iphonesimulator/libTest.a
Architectures in the fat file: Release-iphonesimulator/libTest.a are: i386 x86_64
这是模拟器静态库信息;

合并静态库:

$ lipo -create Release-iphoneos/libTest.a Release-iphonesimulator/libTest.a -output libTest.a


-output后的是合并后的.a文件名称,可指定保存的位置,只需在名称前加上路径,这里直接保存在Products文件夹下的;

回车后可发现Products文件夹下多了一个.a文件:



查看合并后的.a文件支持的CPU环境:

$ lipo -info libTest.a
Architectures in the fat file: libTest.a are: armv7 i386 x86_64 arm64


到此,静态库的生成和合并就完成了,使用时只需添加新生成的.a文件和上面提到的.h文件到工程中即可;

5.使用

添加.a文件和.h文件后,导入头文件,即可使用,如下图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: