iOS SDK开发之 .framework静态库
注:这篇教程将只使用一小部分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静态库的更多相关文章
- iOS SDK开发之 .a静态库
查看.framework静态库的生成及使用单击此处 注:这篇教程将只使用一小部分Objective-C代码,本文主要讲解从开始到应用的详细步骤.环境:xcode 9.2下面我们开始操作: 第一步:创建 ...
- iOS 中 .a 和 .framework 静态库的创建与 .bundle 资源包的使用
iOS 中 .a 和 .framework 静态库的创建与 .bundle 资源包的使用 前言 开发中经常使用三方库去实现某特定功能,而这些三方库通常又分为开源库和闭源库.开源库可以直接拿到源码,和自 ...
- iOS开发之——制作framework静态库教程
环境: 硬件:macbook air 系统:OSX EI Capitan 版本:10.11.3 xcode : Version 7.2.1 (7C1002) 最近在做ios的静态库(据说framewo ...
- iOS开发之*.a静态库注意事项
以*.a静态库的形式引入工程的(比如:libUploadLib.a),*.a里面的class有category形式实现时,除了在工程Target的 Build Phases里面的 Link Binar ...
- iOS开发中静态库之".framework静态库"的制作及使用篇
iOS开发中静态库之".framework静态库"的制作及使用篇 .framework静态库支持OC和swift .a静态库如何制作可参照上一篇: iOS开发中静态库之" ...
- iOS:Xcode7下创建 .a静态库 和 .framework静态库
Xcode7 中创建静态库:.a 和 .framework 一.简单介绍 1.什么是库? 库是程序代码的集合,是共享程序代码的一种方式 2.库的分类 根据源代码的公开情况,库可以分为2种类型 (1)开 ...
- Xcode6.1标准Framework静态库制作方法。工程转Framework,静态库加xib和图片。完美解决方案。
http://www.cocoachina.com/bbs/read.php?tid-282490.html Xcode6.1标准Framework静态库制作方法.工程转Framework,静态库加x ...
- 经验分享:Xcode 创建.a和framework静态库【转】
作者:Haley_Wong 最近因为项目中的聊天SDK,需要封装成静态库,所以实践了一下创建静态库的步骤,做下记录. 库介绍 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态 ...
- 经验分享:Xcode 创建.a和framework静态库
最近因为项目中的聊天SDK,需要封装成静态库,所以实践了一下创建静态库的步骤,做下记录. 库介绍 库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行.库分静态库和动态库两种. iOS中的 ...
随机推荐
- java实现spark常用算子之coalesce
import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.a ...
- IntelliJ IDEA 2017 提示“Unmapped Spring configuration files found.Please configure Spring facet.”解决办法
当把自己的一个项目导入IDEA之后,Event Log提示“Unmapped Spring configuration files found.Please configure Spring face ...
- 十三、LaTex中的参考文献BibTex
将默认文献工具设置为bibtex
- 安卓-去除ActionBar的方法
今天做一个播放器项目,由于要去除ActionBar,纠结好久,原来这么简单 记录一下 只需要修改AndroidManifest.xml文件中的主题即可 <application android: ...
- lua基础(2)
错误处理: local function add(a,b) assert(type(a) == "number", "a 不是一个数字") assert(typ ...
- python-字符编码的转换
python-字符编码的转换 1.了解基础知识 ASCII 一个英文,占一个字节.只能存英文和特殊字符. gb2312 约可以存7000中文 gb1830 约可以存27000中文 gbk 默认中文, ...
- php晚了8小时 PHP5中的时间相差8小时的解决办法
php页面顶部加一句date_default_timezone_set("Asia/Shanghai");或者直接在php.ini设置date.timezone=Asia/Shan ...
- Parallel并行循环
Parallel.For(, , new ParallelOptions() { MaxDegreeOfParallelism = 100 },(i, pls) => { ) { pls.Bre ...
- 问题:关于2.3 jmu-Java-02基本语法-03-身份证排序 (9 分)
输出未能排序 import java.util.Scanner; import java.util.Arrays; public class Main { pu ...
- samba服务和client挂载
服务端 1.安装samba服务 yum -y install samba 2.创建系统用户 因为Samba 服务程序的数据库要求账户必须在当前系统中已经存在,否则日后创建文件时将导致文件的权限属性混乱 ...