IOS中,制作.a 和 .framework详细流程和讲解

本文详细介绍如何在iOS开发中创建和使用.framework及.a库,包括选择类型、创建库文件、配置支持架构、设置版本、选择库类型、配置头文件、编译版本、查看库文件,以及如何制作兼容所有设备处理器的库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘要

在开发过程中,经常会遇到很多相同的控件、方法等内容;项目中的隐私核心算法、架构等;采用模块化封装等需求。我们采用Framework或.a库进行封装这些内容,可以尽可能减少在开发过程中存在的重复操作和保密的功能。

一、制作.framework和.a 库

在制作.framework和.a 库过程并不复杂,只要根据步骤操作一遍.framework和.a 库的制作你就很轻松的学会了,不要被这些步骤吓到,尝试一下就可以了。

1.选择制作静态库的类型

首先打开Xcode创建项目,选择需要制作的静态库类型,制作.framework和.a 库的方法和步骤大致相同,就一起把.framework和.a 库结合在一起来讲解
选择制作静态库的类型

2.创建库文件

当我们创建好一个库的项目之后,需要创建封装的类文件。封装的的控件,封装隐私算法等内容,需要分装的内容全部搞定之后,配置库的
841547026855_.pic_hd.jpg

3.打包库的配置

配置当前支持架构(处理器)的类型:armv7,armv7s和arm64,i386,x86_64。
打包库处理器支持配置

4.静态库支持的版本

App有系统的最低版本配置,而分装的库同样也有版本的配置,默认情况下是当前Xcode的最支持的最高版本,所以在制作过程中一定要选择库的版本配置。
库支持的最低版本

5.选择库的类型(静态库/动态库)

根据具体需要选择封装库的类型(静态、动态等)
静态库/动态库 选择

6.库的头文件

.framework和.a 库的头文件的选择是不一样的,下边分别对.framework和.a 库的两种情况都有说明

.a库的头文件配置
a库的头文件配置

.framework 库的头文件配置
.framework 库的头文件配置

7. .framework和.a库编译选择debug和release版本

第一步编辑debug和release1第二步选择debug和release

2

8.查看生成的库文件

1.选择当前的设备,build或者运行当前库。

如果选择任意模拟器运行(或者build),生成的库文件支持当前所有模拟器的处理器类型。
如果选择真机运行(或者build),生成的库文件支持当前所有真机的处理器类型

查看库文件

分别执行模拟器和真机,查看库所在文件目录,可以真机和模拟器两种库文件。但是我们在执行项目过程中,运行真机使用真机的库,模拟器使用模拟器的库,替换过程中很是麻烦,所以需要制作出一个支持所有设备的库文件。第二部分会详细讲解如何制作一个支持模拟器和真机的库
库文件所在目录

二、制作的支持的所有设备处理器的.framework和.a 库

1.通过终端查看当前.framework和.a 支持处理器

通过终端命令行的方式查看当前库支持的处理器。

查看方法:打开终端输入如下:(AAA代表库)
# 1. .framework库
lipo -info  /path/AAA.framework/AAA
# 2. .a库
lipo -info  /path/AAA.a

查看库支持处理器类型

2.合并支持模拟器和真机两种处理器的库文件

第一种方法:
采用最基本的命令行的方法:

#在终端运行
[xxxx$]: lipo - create PATH1 PATH2 -output PATH3

# .framework (输出目录选择任意地址或者真机、模拟器库文件的地址都可以)
 lipo - create /PATH1/AAA.framework/AAA  /PATH2/AAA.framework/AAA  -output /PATH3/AAA.framework/AAA

# .a (同上)
 lipo - create /PATH1/AAA.a  /PATH2/AAA.a  -output /PATH3/AAA.a

在终端运行 lipo - create PATH1 PATH2 -output PATH3

第二种方法:

1、配置和书写脚本
采用脚本的方式:创建脚本的方法如下:
7,8,9分别代表1,2,3步骤(7=>1,8=>2,9=>3)

添加脚本合并支持模拟器和真机处理器

.framework 架构合并方法的代码

# Type a script or drag a script file from your workspace to insert its path.
if [ "${ACTION}" = "build" ]
then
INSTALL_DIR=${SRCROOT}/Products/${PROJECT_NAME}.framework

DEVICE_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.framework

SIMULATOR_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.framework

# 如果真机包或模拟包不存在,则退出合并
if [ ! -d "${DEVICE_DIR}" ] || [ ! -d "${SIMULATOR_DIR}" ]
then
exit 0
fi

# 如果合并包已经存在,则替换
if [ -d "${INSTALL_DIR}" ]
then
rm -rf "${INSTALL_DIR}"
fi

mkdir -p "${INSTALL_DIR}"

cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"

# 使用lipo命令将其合并成一个通用framework  
# 最后将生成的通用framework放置在工程根目录下新建的Products目录下  
lipo -create "${DEVICE_DIR}/${PROJECT_NAME}" "${SIMULATOR_DIR}/${PROJECT_NAME}" -output "${INSTALL_DIR}/${PROJECT_NAME}"

#合并完成后打开目录
open "${SRCROOT}/Products"

fi

.a库的脚本合成

# Type a script or drag a script file from your workspace to insert its path.
if [ "${ACTION}" = "build" ]
then
INSTALL_DIR=${SRCROOT}/Products/${PROJECT_NAME}.a

DEVICE_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphoneos/${PROJECT_NAME}.a

SIMULATOR_DIR=${BUILD_ROOT}/${CONFIGURATION}-iphonesimulator/${PROJECT_NAME}.a

# 如果真机包或模拟包不存在,则退出合并
if [ ! -d "${DEVICE_DIR}" ] || [ ! -d "${SIMULATOR_DIR}" ]
then
exit 0
fi

# 如果合并包已经存在,则替换
if [ -d "${INSTALL_DIR}" ]
then
rm -rf "${INSTALL_DIR}"
fi

mkdir -p "${INSTALL_DIR}"

cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/"

# 使用lipo命令将其合并成一个通用framework  
# 最后将生成的通用framework放置在工程根目录下新建的Products目录下  
lipo -create "${DEVICE_DIR" "${SIMULATOR_DIR}" -output "${INSTALL_DIR}"

#合并完成后打开目录
open "${SRCROOT}/Products"

fi

2、分别运行真机和模拟器

分别运行一次真机和模拟器,脚本会自动把合并成的库文件目录打开。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值