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

iOS利用Xcode制作静态库和动态库

2017-03-25 23:46 288 查看

静态库制作

在实际的开发中经常会用到一些第三方的静态库,比如友盟,地图等,他们可以让源码不被直接暴漏.在需要使用时,仅仅拷贝相应的.h文件和.a文件就好但是在链接时,静态库会被完整地复制到可执行文件中, 被多次使用就有多份冗余拷贝

启动Xcode的时候选择iOS -> Cocoa Touch Static Library



加入类文件





选择要公开的头文件



分别选择
General iOS Device
(或真机) 和 模拟器进行
cmd + d
编译



查找编译的静态库



iphoneos
是真机生成的,
iphonesimulator
是模拟器生成的, 生成的静态库和头文件在该文件夹下.拷贝即可使用



查看生成的静态库所支持的架构

终端命令进入到上面对应的文件夹中,执行
lipo -info libLibraryName.a

$:cd cd /Users/macName/Library/Developer/Xcode/DerivedData/StaticLibrary-bdbrhhdqgqontmclpbovyevlafjp/Build/Products/Debug-iphoneos
$: lipo -info libLibraryName.a

//执行结果:即支持armv7和arm64
Architectures in the fat file: libStaticLibrary.a are: armv7 arm64


将两个静态库合并生成一个通用的静态库

$: lipo -create /iphoneos下的libLibraryName.a所在完整路径 iphonesimulator下的libLibraryName.a所在完整路径 -output /Users/Mac Name/Desktop/libResult.a
例如:
lipo -create /Users/macName/Library/Developer/Xcode/DerivedData/StaticLibrary-bdbrhhdqgqontmclpbovyevlafjp/Build/Products/Debug-iphoneos/libLibraryName.a /Users/macName/Library/Developer/Xcode/DerivedData/StaticLibrary-bdbrhhdqgqontmclpbovyevlafjp/Build/Products/Debug-iphonesimulator/libLibraryName.a -output /Users/macName/Desktop/libResult.a


动态库制作

启动Xcode的时候选择iOS -> Cocoa Touch Framework



加入类文件并且设置公开的头文件



分别选择
General iOS Device
(或真机) 和 模拟器进行
cmd + d
编译



查找编译的动态库



iphoneos
是真机生成的,
iphonesimulator
是模拟器生成的, 生成的静态库和头文件在该文件夹下.拷贝文件夹下的
.framework
文件到项目中



公开的头文件在
Header
文件夹下, 引入项目即可使用



关于静态库和动态库(摘自简书)

静态库:以.a 和 .framework为文件后缀名。链接时会被完整的复制到可执行文件中,被多次使用就有多份拷贝。

动态库:以.tbd(之前叫.dylib) 和 .framework 为文件后缀名。链接时不复制,程序运行时由系统动态加载到内存,系统只加载一次,多个程序共用(如系统的UIKit.framework等),节省内存。

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