iOS制作framework

framework

在编写 iOS 的 App 时,有很多的功能只需要通过 API (Application Programming Interface) 调用别人已经写好的代码就可以了。
iOS SDK 内置了很多不同功能的 API,如果将这些 API 中相似或类似同一类型问题的 API 包装起来,就成为一个 “framework”。

Xcode 中建立的项目,预先会加载 Foundation,CoreGraphics,UIKit 这3个基本的 framework。

  • Foundation(提供最常用的类和数据类型)
  • UIKit(提供触控为基础的类)
  • CoreGraphics(提供绘图的类)

一、打开Xcode创建工程,选中CocoaTouchFramework

首先新建一个项目,选择Cocoa Touch Framework

给它取一个响亮又文雅的名字

二、在TARGETS下,选中BuildSettings

1、搜索linking项,修改如下
项目 设置 说明
Dead Code Stripping NO 关闭对代码中“dead”,“unreachable”代码过滤
Link With Standard Libraries NO 避免重复链接
Mach-O Type Static Library 用户制作的只能是静态库(系统的framework可以是动态库)
2、搜索architectures项,修改如下

针对一些特殊机型的支持,添加armv7s架构。(增加对使用该架构的支持)

项目 设置 说明
Build Active Architecture Only NO 编译所有的版本(反之, 只编译当前的architecture版本)

三、在TARGETS下,选中BuildPhases

1、搜索header项,修改如下

新建MCDefine文件,将公开的头文件拖入Public中,私有的放入Private或Project中,隐藏的头文件就无法再被引用。

四、MagicCubeKit.h导入头文件

在MagicCubeKit.h中将你所有要公开的头文件引入。(MagicCubeKit.h必须为公开的,否则无法引用)

MagicCubeKit.h文件中
#import <UIKit/UIKit.h>

//! Project version number for MagicCubeKit.
FOUNDATION_EXPORT double MagicCubeKitVersionNumber;

//! Project version string for MagicCubeKit.
FOUNDATION_EXPORT const unsigned char MagicCubeKitVersionString[];

// In this header, you should import all the public headers of your framework using statements like #import <MagicCubeKit/PublicHeader.h>

/*
 * 导入公开的头文件,供他人使用
 */
#import <MagicCubeKit/MCDefine.h>

五、打包framework

1、选中Generic iOS Device,然后Command+B编译framework
2、选中任意模拟器,然后Command+B编译frameWork
3、选中Products文件夹中MagicCubeKit.framework,然后Show in Finder
4、可以在Finder中看到Products下的两个文件夹
名称 说明
Debug-iphoneos 真机编译生成
Debug-iphoneosimulator 模拟器编译生成
5、将两个framework中的MagicCubeKit文件合成

5.1、真机编译framework

5.2、模拟器编译framework

5.3、输入命令

lipo -create(上面两个文件【真机、模拟器】路径)-output(合成后文件的输出路径)

5.4、如图(注意:-output路径拼接MagicCubeKit

5.5、桌面framework文件夹下得到了合成的MagicCubeKit文件

5.6、用上面的文件替换(真机编译framework)Debug-iphoneos文件夹下的MagicCubeKit

5.7、得到最终的framework

6、将MagicCubeKit.framework拖入项目工程中使用

参考文章:

Xcode8制作framework
iOS制作framework
iOS封装功能生成 .framework

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转载请注明出处:http://www.jianshu.com/p/04a7e28f11b9作者:纪小衰 frame...
    纪小衰阅读 6,547评论 3 16
  • 前言 之前有很多的大神们已经写过framework的制作,但最近由于Xcode7的出现,很多之前的教程内容已经不符...
    陈向阳哈阅读 15,534评论 44 62
  • 指令集 通常会把CPU的扩展指令集称为”CPU的指令集”(因为基本的,类似加减的指令似乎是必须被CPU所支持的指令...
    JimmyL阅读 4,535评论 7 10
  • 开发中经常会使用到第三方库,有的第三方库打开后,只能看到别人的头文件,里面具体的实现逻辑查看不了,感觉很高大上的样...
    捷风阅读 312评论 0 0
  • 休息了两天,让扭伤的右手慢慢恢复,写下这一篇。 周六我跟你四点半起床,五点二十在门口等待徒步穿越秦岭鹰嘴崖活动的大...
    阿尔法酱阅读 351评论 5 4