一、iOS模拟器的库合并方法
提供iOS真机与模拟器静态库(.a文件)的合并脚本及操作指南,合并后生成支持真机+模拟器的通用静态库,简化开发调试与打包流程。脚本自动匹配同名库文件、移除冲突架构,无需手动操作。
1.1 功能说明
脚本核心作用:
-
自动匹配
Lib/iOS(真机库)与Lib/iOS-simulator(模拟器库)的同名.a文件 -
移除模拟器库中的
arm64架构(避免与真机架构冲突,导致IPA打包失败) - 合并生成通用静态库,支持在模拟器和真机环境下直接使用
1.2 使用步骤
按以下步骤执行合并操作,无需额外配置(默认路径下):
-
将SDK解压后,以根目录作为工作目录(或修改脚本中
IOTC_ROOT参数指定路径); -
复制下方
combine.sh脚本到SDK根目录; -
终端进入SDK根目录,执行授权命令:
chmod +x combine.sh; -
执行合并脚本:
./combine.sh; -
合并结果输出至
Lib/iOS_all目录(可通过OUT_DIR参数自定义)。
1.3 合并脚本(combine.sh)
1.4 参数配置
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| IOTC_ROOT | String | . |
SDK根目录路径,如脚本不在根目录,需改为绝对路径(例:/Users/xxx/SDK)
|
| OUT_DIR | String | iOS_all |
通用库输出目录,位于Lib文件夹下(默认路径:Lib/iOS_all)
|
| TMP_DIR | String | tmp | 临时处理目录,用于存放移除架构后的模拟器库,脚本执行后自动删除 |
1.5 结果验证
执行以下命令验证合并是否成功,若输出包含多架构则表示合并有效:
成功示例输出:
1.6 注意事项
注意事项
1. 目录要求:SDK需包含 Lib/iOS(真机库)和 Lib/iOS-simulator(模拟器库),路径不一致需修改脚本中的目录名称;
2. 依赖工具:需安装Xcode及命令行工具,执行 xcode-select --install 可完成安装(依赖lipo工具进行架构处理);
3. 文件名匹配:真机库与模拟器库的.a文件名必须完全一致(例:libiotc.a),否则会跳过合并;
4. 权限说明:若执行脚本时提示权限不足,重新执行授权命令:chmod +x combine.sh;
5. 冲突处理:若输出目录已存在同名库文件,脚本会自动覆盖,无需手动删除。
