iOS开发 封装SDK

category是项目开发中经常用到的,把category打包成静态库是没有问题的,但是在使用这个静态库时,
调用category中的方法时会发生找不到该方法的运行时错误(selector not recognized),
解决的办法是在使用静态库的工程中配置other linker flags的值为 -ObjC -all_load

1,创建项目,选择Framework
截屏2020-05-25 上午11.44.06.png

2,常规命名
截屏2020-05-25 上午11.44.49.png

3,设置兼容版本,版本这个看需求吧
截屏2020-05-25 上午11.50.15.png

4,修改动态库为静态库,我们创建的framework默认是动态库,苹果审核中如果发现动态库的话似乎会审核不通过,所以我们要将Mach-O Type设置为静态库 Static Library
截屏2020-05-25 上午11.52.39.png

5,导入所需要封装的代码,这里先直接创建演示,创建HelloWorld类,常规创建
截屏2020-05-25 上午11.58.11.png

6,HelloWorld.h中

//
//  HelloWorld.h
//  MySDK
//
//  Created by Twinkleo on 2020/5/25.
//  Copyright © 2020 Twinkleo. All rights reserved.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface HelloWorld : NSObject

- (void) logTest;

@end

NS_ASSUME_NONNULL_END

7,HelloWorld.m中

//
//  HelloWorld.m
//  MySDK
//
//  Created by Twinkleo on 2020/5/25.
//  Copyright © 2020 Twinkleo. All rights reserved.
//

#import "HelloWorld.h"

@implementation HelloWorld

- (void) logTest {
    NSLog(@"SDK测试-----Hello World");
}

@end

8,设置需要公开给用户的头文件,下面的直接拖拽到Public中
截屏2020-05-25 下午12.00.33.png

变为
截屏2020-05-25 下午12.02.45.png

9,设置头文件,头文件引用
截屏2020-05-25 下午12.03.58.png

10,模拟器下编译一下
截屏2020-05-25 下午1.58.10.png

11,切换到真机状态,左侧framework变红,开始编译
截屏2020-05-25 下午1.58.30.png

12,Generic iOS Device下编译以后
截屏2020-05-25 下午1.58.39.png

13,选中,右键Show in Finder
截屏2020-05-25 下午2.01.26.png

14,对应真机和模拟器状态下的sdk
截屏2020-05-25 下午2.04.03.png

15,合并,打开终端,格式

lipo -create 模拟器framework的路径 真机framework路径 -output  新的路径
截屏2020-05-25 下午2.10.08.png

16,在根目录下会拿到新的framework,替换掉原来的
截屏2020-05-25 下午2.14.50.png

17,拿到最终的MySDK.framework

18,测试刚才生成的MySDK.framework

19,新建一个iOS项目,将刚才生成的MySDK.framework直接拖到项目中
截屏2020-05-25 下午2.27.27.png

20,测试
截屏2020-05-25 下午2.31.33.png

21,打完收工,基本完成。

后续还会有一些其他细节,之后会添加上,暂时先就这些吧

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容