查看.a静态库的生成及使用单击此处

注:这篇教程将只使用一小部分Objective-C代码,本文主要讲解从开始到应用的详细步骤。
环境:xcode 9.2
下面我们开始操作:

第一步:创建一个静态库工程

打开Xcode,选择新建一个项目,新建Cocoa Touch Framework。名称看自己需求起名,我直接叫MYSDK。

创建完成后已经有一个.h文件MMYSDK.h和Info.plist文件,如果想要新实现方法封装成SDK可以直接新建类在里面实现,也可以将自己已经实现功能的类添加到工程里面。(这里只是写生成.framework静态库的步骤,所以直接拖入以前写好的类,获取设备的IP地址,.m里面具体的获取方法就不往出来发了,如果有需要直接访问iOS常用系统信息获取方法中的IP获取部分)

第二步:修改SDK工程配置

2.1、在TARGETS -> Build Setting中设置Build Active Architecture Only下的Debug对应值为NO。

2.2、在TARGETS -> Build Setting中设置Mach-O Type的对应值为静态库Static Library。

2.3、在TARGETS -> Build Setting中设置Dead Code Stripping的对应值为NO。(大致意思是如果开启此项就会对代码中的”dead”、”unreachable”的代码过滤,不过这个开关是否关闭,似乎没有多大影响,不过为了完整还原framework中的代码,将此项关闭也未曾不可)

2.4、在TARGETS -> Build Setting中设置Link With Standard Libraries的对应值为NO,避免重复链接。

2.4、在TARGETS -> Build Phases中将需要变成可见的头文件移动到public下。

2.5、将里面有可直接调用方法的头文件添加到MYSDK.h中。

第三步:生成.framework静态库

静态库分为手机和模拟器两种(手机端的只有手机能调用,模拟器的只有模拟器能调用)

3.1、生成模拟器使用静态库,随意选择一个模拟器,然后编译工程(快捷键command + B)。这时候已经生成只在模拟器能用的.a静态库MYSDK.framework。

3.2、同样的道理选择Generic iOS Device生成真机能用的.a静态库。

右键MYSDK.framework,选择Show in Finder 在Products文件夹下有两个文件夹Debug-iphoneos和Debug-iphonesimulator,分别是真机和模拟器对应的静态库。

第四步:合成通用.a静态库

将真机和模拟器MYSDK.framework里面的MYSDK静态库合并成一个通用的静态库,在终端完成。使用命令行:lipo -create 真机MYSDK静态库路径  模拟器MYSDK静态库路径 -output 合成静态库路径 (直接拖拽MYSDK文件路径就可出现在终端)。

至此,最终的合成库已经生成在Debug-iphoneos文件夹下,用新生成的MYSDK替换MYSDK.framework下的MYSDK。MYSDK.framework就是我们最终要使用的静态库。可以直接使用了。

第五步:.framework静态库的使用

5.1、随意创建一个工程,将合成的.framework静态库添加到工程(这里只是说明静态库的使用,请忽略工程目录结构)。然后在ViewController里面导入头文件调用静态库里面的方法

5.2、分别在模拟器和手机端运行(iPhone X模拟器和iPhone 6S手机),结果如下(请忽略页面布局,只是为了展示结果)。

            

至此,大功告成。

iOS SDK开发之 .framework静态库的更多相关文章

  1. iOS SDK开发之 .a静态库

    查看.framework静态库的生成及使用单击此处 注:这篇教程将只使用一小部分Objective-C代码,本文主要讲解从开始到应用的详细步骤.环境:xcode 9.2下面我们开始操作: 第一步:创建 ...

  2. iOS 中 .a 和 .framework 静态库的创建与 .bundle 资源包的使用

    iOS 中 .a 和 .framework 静态库的创建与 .bundle 资源包的使用 前言 开发中经常使用三方库去实现某特定功能,而这些三方库通常又分为开源库和闭源库.开源库可以直接拿到源码,和自 ...

  3. iOS开发之——制作framework静态库教程

    环境: 硬件:macbook air 系统:OSX EI Capitan 版本:10.11.3 xcode : Version 7.2.1 (7C1002) 最近在做ios的静态库(据说framewo ...

  4. iOS开发之*.a静态库注意事项

    以*.a静态库的形式引入工程的(比如:libUploadLib.a),*.a里面的class有category形式实现时,除了在工程Target的 Build Phases里面的 Link Binar ...

  5. iOS开发中静态库之".framework静态库"的制作及使用篇

    iOS开发中静态库之".framework静态库"的制作及使用篇 .framework静态库支持OC和swift .a静态库如何制作可参照上一篇: iOS开发中静态库之" ...

  6. iOS:Xcode7下创建 .a静态库 和 .framework静态库

    Xcode7 中创建静态库:.a 和 .framework 一.简单介绍 1.什么是库? 库是程序代码的集合,是共享程序代码的一种方式 2.库的分类 根据源代码的公开情况,库可以分为2种类型 (1)开 ...

  7. Xcode6.1标准Framework静态库制作方法。工程转Framework,静态库加xib和图片。完美解决方案。

    http://www.cocoachina.com/bbs/read.php?tid-282490.html Xcode6.1标准Framework静态库制作方法.工程转Framework,静态库加x ...

  8. 经验分享:Xcode 创建.a和framework静态库【转】

    作者:Haley_Wong 最近因为项目中的聊天SDK,需要封装成静态库,所以实践了一下创建静态库的步骤,做下记录. 库介绍 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态 ...

  9. 经验分享:Xcode 创建.a和framework静态库

    最近因为项目中的聊天SDK,需要封装成静态库,所以实践了一下创建静态库的步骤,做下记录. 库介绍 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种. iOS中的 ...

随机推荐

  1. java CAS和AQS

    全面了解Java中的CAS机制 https://www.jb51.net/article/125232.htm https://www.cnblogs.com/javalyy/p/8882172.ht ...

  2. 机器学习及scikit-learn

    一.机器学习以及scikit-learn 1. 机器学习基本步骤: (1)定义一系列函数  =>   (2)定义函数的优劣  =>  (3)选择最优函数 2.什么是scikit-learn ...

  3. 获取url中参数值

    function GetRequest() {var url = window.location.href; //获取url中"?"符后的字串var theRequest = ne ...

  4. python 四舍五入进位不准

    python中四舍五入进位不准,自己写了个方法结果: def new_round(_float, _len): ''' 四舍五入保留小数位,如果想实现 0.2 显示为 0.20,可使用 '%.2f' ...

  5. 使用CXF开发WebService程序的总结(三):创建webservice客户端

    1.创建一个maven子工程 ws_client,继承父工程 1.1 修改父工程pom配置 <modules> <module>ws_server</module> ...

  6. 遍历获取html页面所有元素的id

    因为要写一个权限管理系统精确到每个标签.以前用过的是给每个标签加权限判断的代码.但感觉这种方式太麻烦和落后,向让页面加载时自动把每个标签的id扫描到并保存到数据库.通过id控制.研究了下实现代码如下: ...

  7. python基础练习题4

    题目:现有一个数据库记录文件(0005.txt)保证了学生课程签到的数据记录('2017-03-13 11:50:09',271,131),('2017-03-14 11:52:19',273,131 ...

  8. 基于 maven 实现跨平台编译 protobuf 文件

    基于 maven 实现跨平台编译 protobuf 文件 mavne protobuf .proto  跨平台  需求 在团队协作中使用 protobuf 时, 有以下几点需求: protoc 跨平台 ...

  9. Python之常用模块三(面向对象相关的三个模块)

    hashlib.configparser.logging模块 一.常用模块二 hashlib模块 hashlib提供了常见的摘要算法,如md5和sha1等等. 那么什么是摘要算法呢?摘要算法又称为哈希 ...

  10. JAVA笔记26-网络编程(不等于网站编程)

    一.网络基础(TCP/IP详解) 1.IP协议(Internet Protocol):网络层,支持网间数据报通信.无连接数据报传送,数据报路由选择和差错控制. IPv4 32位(4字节),IPv6 1 ...