category是项目开发中经常用到的,把category打包成静态库是没有问题的,但是在使用这个静态库时,
调用category中的方法时会发生找不到该方法的运行时错误(selector not recognized),
解决的办法是在使用静态库的工程中配置other linker flags的值为 -ObjC -all_load
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.png21,打完收工,基本完成。
网友评论