iOS-制作Framework

本文介绍如何在iOS中创建和打包Framework,包括定义类、配置工程参数、合并模拟器与真机版本等步骤。

iOS-制作Framework

Mac OS X扩展了framework的功能,让我们能够利用它来共享代码和资源。通过framework我们可以共享所有形式的资源,如动态共享库,nib文件,图像字符资源以及文档等。
系统会在需要的时候将framework载入内存中,多个应用程序可以同时使用同一个framework。这种方法可以使得你的代码易分享,在多个工程中复用,并且可以隐藏实现细节,控制公开的头文件。

制作过程
1、这里写图片描述
2、创建一个类,这个类就是你想要让他拥有的功能

@interface sayHello : NSObject

- (void)sayHello;

@end
#import "sayHello.h"
@implementation sayHello
 1. (void)sayHello
{
    NSLog(@"输出一句话,就是这个framework");
}
@end

3、在TARGETS下选中工程,在Build Settings下更改一些参数。
这里写图片描述
在Architectures下增加armv7s,并选中。将Build Active Architecture Only 设置为NO。
这里写图片描述
将你要公开的头文件移动到Public下,要隐藏的放在Private或者Project下,当然,隐藏的头文件就无法再被引用。
这里写图片描述
然后需要在Test.h(必须是公开的,否则无法引用)中将你所有要公开的.h引入。

//  引入头文件,这就是要公开供别人使用的头文件
#import <myframework/sayHello.h>

4、现在开始打包framework
①.选中模拟器,编译程序
②.选中测试机,编译程序
③.在finder中找到framework文件
选中项目中的framework,然后右键show in finder。
找到下图中所示的Test文件,一个是Debug-iphoneos(真机)下的,一个是Debug-iphonesimulator(模拟器)下的。
这里写图片描述
④.通过终端命令将两个framework合为一个模拟器和真机都可使用的framework。
打开控制台输入 lipo -create iphoneos下framework的路径 simulator下framework的路径 -output 新的路径,这样就完成了模拟器和真机版本的合并,新路径下的framework就是你合并后的文件,将这个文件名字改成和你未合并之前的一样的名字,放到framework文件夹下,替换掉原来的framework文件。
这里写图片描述
上面这段命令就是把真机和模拟器的framework合并成一个myframework文件并存放在桌面上的cer文件夹下。
⑤.替换掉以后,将framework拷贝出来,进行保存,这就是最终的framework了。

制作 iOS FrameworkiOS 开发中常见的需求,特别是在构建 SDK 或者希望将部分代码模块化、提供给其他项目或团队使用时。以下是一个完整的制作流程,涵盖从创建工程到配置以及最终生成 framework 的关键步骤。 ### 创建 Framework 项目 在 Xcode 中新建一个 Framework 工程: 1. 打开 Xcode,选择 **File -> New -> Project**。 2. 在模板中选择 **Framework**(iOS 下的 Cocoa Touch Framework)。 3. 输入项目名称,例如 `MySDK`,并选择存储路径。 此时,Xcode 会自动生成一个包含 `.framework` 目标的工程结构。 ### 配置 Build Settings 为了确保生成的 framework 能够兼容多种设备和模拟器,需要对项目的编译设置进行调整: - **Mach-O Type** 设置为 **Static Library**,因为对于用户自定义的 framework,通常都是静态形式 [^3]。 - **Build Active Architecture Only** 设置为 **NO**,以确保生成的 framework 包含所有支持的架构(如 arm64、x86_64 等),否则可能只包含当前连接设备的架构 [^3]。 - **iOS Deployment Target** 应该设置为一个较低版本,以保证兼容性,并且不能高于主项目的最低支持版本 。 - **Valid Architectures** 可以根据需要添加或删除特定的 CPU 架构支持,比如移除模拟器相关的架构以减小体积。 ### 编写公共接口与实现 在 framework 中,需要将对外暴露的类、方法和属性标记为 `public` 或 `open`,以便外部项目可以访问这些内容。例如: ```swift // MySDK.swift import Foundation @objc public class MySDK: NSObject { @objc public func greet() -> String { return "Hello from MySDK!" } } ``` 此外,如果是 Objective-C 项目,则需要将头文件添加到 **Public Headers** 列表中,以便外部可见。 ### 构建 Framework 构建时可以选择不同的 scheme 来生成不同平台的二进制文件: - **Generic iOS Device**:用于真机运行的版本,生成的 framework 支持 arm64 架构。 - 模拟器(Simulator):用于在 Mac 上运行的模拟器环境,支持 x86_64 或 arm64(Mac M1 之后)。 可以通过命令行脚本或者使用 `lipo` 命令合并多个架构的 framework,生成通用的多架构 framework 文件。 #### 示例:使用 lipo 合并架构 ```bash # 分别构建真机和模拟器版本 xcodebuild -target MySDK -sdk iphoneos xcodebuild -target MySDK -sdk iphonesimulator # 合并两个架构 lipo -create -output build/MySDK.framework/MySDK \ build/Release-iphoneos/MySDK.framework/MySDK \ build/Release-iphonesimulator/MySDK.framework/MySDK ``` ### 导出与使用 构建完成后,可以在 `Products` 文件夹下找到生成的 `.framework` 文件。将其拖入目标项目中,并确保在 **Build Phases -> Link Binary With Libraries** 中添加该 framework。 如果希望 framework 支持 Swift 和 Objective-C 混编,还需要注意是否启用 **Defines Module**(YES)以及正确设置 **Product Module Name**。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值