iOS架构-静态库.a的打包及使用(2)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shifang07/article/details/89177351

补充知识-框架分类:
模拟器架构:
• i386 : 32位架构 4S ~ 5
• x86_64 : 64位架构 5S ~ 现在的机型
真机架构:
• arm7: 在最老的支持iOS7的设备上使用
• arm7s: 在iPhone5和5C上使用
• arm64: 运行于iPhone5S的64位 ARM 处理器 上

目标:

打包成模拟器和真机都能运行的静态库.a包,形成SDK文件包提供给客户使用。
SDK文件包:头文件.h集合、通用.a包

环境

Xcode 10.1
默认新建的支持架构为x86_64arm64(如需增加架构arm7s 需要在设置中添加)

修改框架的方式如下图:
在这里插入图片描述debug 项默认为 YES ,表示仅生成当前选择的框架的库; release 项默认为 NO ,表示生成支持所有模拟器或真机的库。生成的库将会保存在 products 目录下的不同分类目录内:在这里插入图片描述

第一步:编译出模拟器和真机.a文件

  1. 在桌面创建 ProjectDemos 的文件
  2. 创建.a 静态库工程 名字为 VideoPlayerLib 放置于ProjectDemos
    在这里插入图片描述
  3. 在.h 中声明方法
    在这里插入图片描述
  4. 在.m中实现方法
    在这里插入图片描述
  5. 修改SDK支持的最低系统版本 iOS Deployment Target iOS 8.0
    在这里插入图片描述
  6. 分别选中 模拟器和Generic iOS Device 编译之后,在下面Products 下libVideoPlayerLib.a 红色变成了的白色,Show In Finder查看所在目录
    在这里插入图片描述
  7. 在路径Debug-iphoneos 和Debug-iphonesimulator 下生成了libVideoPlayerLib.a
    这样就有了真机和模拟器的.a 包了,头文件在include中
    在这里插入图片描述

第二步:合并成通用包.a

这里使用终端命令去合并,脚本自动化合并打包将会在(二)中详细讲解
DEVICE_DIR_A 真机.a 路径
SIMULATOR_DIR_A 模拟.a 路径
INSTALL_DIR_A 通用.a 路径

#合成模拟器和真机.a包
lipo -create DEVICE_DIR_A SIMULATOR_DIR_A -output INSTALL_DIR_A

这里我把合成的生成在工程的Products 下,libVideoPlayer.a 通用包名

lipo -create /Users/suning/Desktop/ProjectDemos/VideoPlayerLib/Build/Products/Debug-iphonesimulator/libVideoPlayerLib.a /Users/suning/Desktop/ProjectDemos/VideoPlayerLib/Build/Products/Debug-iphoneos/libVideoPlayerLib.a -output /Users/suning/Desktop/ProjectDemos/VideoPlayerLib/Build/Products/libVideoPlayer.a

在这里插入图片描述
执行后我们可以看到:目标.a
在这里插入图片描述验证合成包的架构是否成功

lipo -info 目标.a路径

在这里插入图片描述

第三步:SDK文件包,并导入工程使用

  1. 把真机中的include 文件夹和合并的.a copy到一个桌面上新的文件夹Mylib中
    在这里插入图片描述
  2. 在demo工程中使用.a 添加桌面上Mylib文件夹
    1. 添加文件选择 Create Group (黄色的/folder 蓝色实体文件)
    2. build phases 添加头文件
    3. 编译,使用处导入头文件。
      在这里插入图片描述
      // 使用处
      [[VideoPlayerLib sharedInstance] openPlayerWindow];

这个种方法弊端:
1.要终端打包,打包后还要验证
2.要手动组成 Mylib 文件夹

下篇文章解决这个问题:使用脚本,一键打包成Mylib。嗨上天!

结束!

猜你喜欢

转载自blog.csdn.net/shifang07/article/details/89177351