ios开发:Xcode 制作SDK及使用

1. framework

1.1 创建一个framework工程

ios开发:Xcode 制作SDK及使用_第1张图片


未完 待续

2. .a

2.1 创建一个.a工程

ios开发:Xcode 制作SDK及使用_第2张图片

创建之后会默认生成一个和库名一样的文件夹和 类(XCode 7 好像没有生成类 需要自己手动创建)

ios开发:Xcode 制作SDK及使用_第3张图片

2.2 添加相关代码

ios开发:Xcode 制作SDK及使用_第4张图片

2.3 编译之后会生成.a文件如下图

ios开发:Xcode 制作SDK及使用_第5张图片

2.4 别人用我们生成的库 需要头文件 这时我就就需要吧我的的.h文件暴露出去

  • 第一种方式:直接把所有需要暴露的头文件copy出去(不推荐)
  • 第二种方式:用系统的CopyFile 添加对应的文件夹包含所有的头文件如下图(个人推荐)

ios开发:Xcode 制作SDK及使用_第6张图片

  • 第三种方式:用系统的header File 生成如下图

ios开发:Xcode 制作SDK及使用_第7张图片

2.5 生成模拟器和真机对应的.a文件

由于真机和模拟器架构不一样 所以我们要分别针对模拟器和真机生成不同的.a库
真机生成 在真机下编译 ,模拟器生成在模拟器下编译
最后会生成两个静态库

ios开发:Xcode 制作SDK及使用_第8张图片

合并两个静态库 终端命令: lipo -create 真机.a地址 模拟器.a地址 -output 输出.a地址

ios开发:Xcode 制作SDK及使用_第9张图片

新建一个工程 ,并导入刚才创建的.a 静态库 在模拟器 IPhone 8上测试可以 ,但是更换到模拟器iPhone 5编译报错

为什么呢?
每一个设备都有自己的CPU架构,每一个静态库也有自己支持的CPU架构
对于iOS 模拟器

  • iPhone4s~5 : i386
  • iPhone5s~8plus : x86_64
    真机
  • iPhone 3gs ~ 4s : armv7
  • iPhone5~5c: armv7s
  • iPhone6~ : arm6

armv6, armv7, armv7s是ARM CPU的不同指令集,原则是向下兼容的。例如iPhone4S CPU支持armv7, 但它同时兼容armv6,只是使用armv6指令可能无法充分发挥它的特性。

查看静态库.a 对处理器架构的支持 lipo -info xxx.a

解决不支持架构–>>Build Active Architecture Only中的Debug如果为YES,就是说只能调试当前活跃的架构,我们当前选中的即是活跃的,所以设置为No即可

ios开发:Xcode 制作SDK及使用_第10张图片ios开发:Xcode 制作SDK及使用_第11张图片

你可能感兴趣的:(SDK,开发)