制作静态库

2023-12-06  本文已影响0人  奋斗吧程序员

静态库:.a格式  .framework格式

制作工具:Xcode

示例:模拟器设备

制作后的库包含文件:二进制文件+头文件+其他资源文件(图片资源等)

一、.a 静态库的制作

1.创建Static Library项目

File-New-Project- iOS-Framewotk&Library-Static Library-自定义静态库名

创建任意文件或者添加已有的文件到项目

2.编译项目(生成静态库)

Product- Build(快捷键command+B),Products文件下的红色文件会变黑(旧版的Xcode会显示这个文件)

3.静态库路径

路径1:Products文件下的黑色文件右击-show in finder-右击包名-显示包内容

路径2:新版Xcode没有Products文件夹,可通过以下路径找到静态库

/Library/Developer/Xcode/DerivedData/StaticTool-bxkcwjehhbvnzvcvurqibktpqdmc/Build/Products/Debug-iphonesimulator

⚠️StaticTool-bxkcwjehhbvnzvcvurqibktpqdmc  这是项目的别名。建议在第二步之前先删除DerivedData文件下的内容,以防项目名多不好查找

4.静态库在目标项目中的使用

1.新建一个文件夹,把.a文件和头文件和资源文件放一起,添加入到目标项目

2.无须别的配置,导入头文件,可直接使用

二、.framework静态库的制作

1.创建Framework项目

File-New-Project- iOS-Framewotk&Library-Framework-自定义库名

创建任意文件或者添加已有的文件到项目

2.修改库为静态库

默认创建的Framework库是动态库,需手动改为静态库

Build Setting- Linking-Mach-O Type-选择Static Library

3.对外公开的头文件进行暴露

Build Phases-Headers

把想暴露的头文件从Project模块下拖到Public模块下

4.编译项目(生成静态库)

Product- Build(快捷键command+B),Products文件下的红色文件会变黑(旧版的Xcode会显示这个文件)

5.静态库路径

路径1:Products文件下的黑色文件右击-show in finder-右击包名-显示包内容

路径2:新版Xcode没有Products文件夹,可通过以下路径找到静态库

/Library/Developer/Xcode/DerivedData/StaticTool-bxkcwjehhbvnzvcvurqibktpqdmc/Build/Products/Debug-iphonesimulator

⚠️StaticTool-bxkcwjehhbvnzvcvurqibktpqdmc  这是项目的别名。建议在第二步之前先删除DerivedData文件下的内容,以防项目名多不好查找。

6.静态库在目标项目中的使用

1.把.framework添加入到目标项目

2.无须别的配置,导入头文件,可直接使用

三、合并静态库

静态库有四种模式:Debug模拟器,Debug真机,Release模拟器,Release真机

/Library/Developer/Xcode/DerivedData/StaticTool-bxkcwjehhbvnzvcvurqibktpqdmc/Build/Products/Debug-iphonesimulator

/Library/Developer/Xcode/DerivedData/StaticTool-bxkcwjehhbvnzvcvurqibktpqdmc/Build/Products/Debug-iphoneos

/Library/Developer/Xcode/DerivedData/StaticTool-bxkcwjehhbvnzvcvurqibktpqdmc/Build/Products/Release-iphonesimulator

/Library/Developer/Xcode/DerivedData/StaticTool-bxkcwjehhbvnzvcvurqibktpqdmc/Build/Products/Release-iphoneos

使用终端合并,合并命令

1.cd 存放合并后的库的文件路径

2.lipo - create  xxx.a  xxx.a -output xxx.a

lipo - create 模拟器环境下的.a路径  真机环境下的.a路径 -output 合并后的(自定义).a库名

合并后的库既可以在模拟器上运行,也可以在真机上运行

上一篇下一篇

猜你喜欢

热点阅读