静态库的制作

很多时候,我们和合作方合作开发项目。为了保护我方源代码不被对方看到,可能需要制作自己的静态库文件。

iOS制作静态库.a文件:
1,新建一个项目
这里写图片描述
2,编写类
3,编译成a文件,进行合并
合并命令:
lipo -create “模拟器静态库a文件路径” “真机静态库a文件路径” -output “保存的静态库a文件路径”
查看静态库信息命令:
lipo -info “静态库a文件路径”

示例

1 . 新建项目->iOS->Framework & Library->Cocoa Touch Static Library->MyLib(项目名称)

ps: 创建项目后会自动生成和项目名称相同的MyLib.h、MyLib.m文件,一般我们都是直接从其他项目中拉取文件到此项目或者新建类创建静态库。所以删除自动生成的MyLib.h、MyLib.m文件,创建TheLib.h和TheLib.m文件。

ps: 项目->TARGETS->Build Phases->Comppile Sources 下是显示的是要编译成静态库的.m文件,注意 如果你要编译的.m文件不在此列表内,请手动添加。

选择静态库支持的最低版本,如下图
这里写图片描述

2 . 编写静态库方法内容。
3 . 编译 选择iOS Device,Ctrl+B 进行编译或运行 然后选择虚拟设备,Ctrl+B进行编译或运行。 Products->libMylib.a 右键show in
Finder 有两个.a文件,如下图 一个是真机的静态库文件另一个文件夹有虚拟机的静态文件。
这里写图片描述

4 . 查看合并静态库文件

4 .1 查看真机的.a文件信息

wangzhen:~ wjs$ lipo -info /Users/wjs/Library/Developer/Xcode/DerivedData/MyLib-gnfqxcnwsuwicwbcjyqwhpwpbihy/Build/Products/Debug-iphoneos/libMyLib.a
//armv7 arm64 是真机内的处理器,此.m文件只能在真机中运行
Architectures in the fat file: /Users/wjs/Library/Developer/Xcode/DerivedData/MyLib-gnfqxcnwsuwicwbcjyqwhpwpbihy/Build/Products/Debug-iphoneos/libMyLib.a are: armv7 arm64 

4 .2 查看虚拟机的.a文件信息

wangzhen:~ wjs$ lipo -info /Users/wjs/Library/Developer/Xcode/DerivedData/MyLib-gnfqxcnwsuwicwbcjyqwhpwpbihy/Build/Products/Debug-iphonesimulator/libMyLib.a 
//x86_64 是虚拟机的处理器,此.m文件只能在虚拟机中运行(Android虚拟机真机中都可以运行--因为android基于虚拟机)
input file /Users/wjs/Library/Developer/Xcode/DerivedData/MyLib-gnfqxcnwsuwicwbcjyqwhpwpbihy/Build/Products/Debug-iphonesimulator/libMyLib.a is not a fat file
Non-fat file: /Users/wjs/Library/Developer/Xcode/DerivedData/MyLib-gnfqxcnwsuwicwbcjyqwhpwpbihy/Build/Products/Debug-iphonesimulator/libMyLib.a is architecture: x86_64

4 .3 合并两个.m文件为一个静态库文件,合并的文件在真机和虚拟机中都可以运行
代码如下:

wangzhen:~ wjs$ lipo -create "/Users/wjs/Library/Developer/Xcode/DerivedData/MyLib-gnfqxcnwsuwicwbcjyqwhpwpbihy/Build/Products/Debug-iphoneos/libMyLib.a" "/Users/wjs/Library/Developer/Xcode/DerivedData/MyLib-gnfqxcnwsuwicwbcjyqwhpwpbihy/Build/Products/Debug-iphonesimulator/libMyLib.a" -output "/Users/wjs/Desktop/out.a"

如下图,.h文件和合并的.a文件(二进制文件,可以任意类型)可以共同作为静态库文件导入到项目中使用
这里写图片描述

导入库可能出现错误,项目->TARGETS->Build Settings Debug设置为NO,去除arm64
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值