程序员首页投稿(暂停使用,暂停投稿)iOS Developer

iOS制作framework

2017-09-25  本文已影响322人  LuisX
framework

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

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

一、打开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

上一篇下一篇

猜你喜欢

热点阅读