近期需要使用sdk,现将最近所看以及自己所遇问题整理一下,一边查看
一:创建framework
1. 创建frameWork: 打开Xcode,选择File ----> New —> Project 选择iOS ----> Framework & Library —> Cocoa Touch Framework。
2. 创建好之后先把需要设置的地方设置好,以免后面遇到问题。
-
Build Settings -〉Build Active Architecture Only 设置为NO
-
TARGETS (SDKDemo) -》 Build Settings -〉Mach -O-type 将其设置成静态库 Static Library
-
调整最低支持的iOS系统
-
如果 SDK 有用到 Category,注意项目设置 Other Linker Flags 添加 -ObjC
-
TARGETS (SDKDemo) -》 Build Settings -〉ENABLE_BITCODE 设置为NO . 否则真机上跑会报ld: -bundle and -bitcode_bundle (Xcode setting ENABLE_BITCODE=YES) cannot be used together
-
选择Framework Target,在Build Settings里面搜索Link With Standard Libraries,改为No
3.导入原文件
将需要公开的.h文件移到public中。 选择Framework Target,在Build Phases的Headers里面将需要暴露出来的头文件设置好。public是可以被引用的,用户可以看到的,例如用户在使用的时候import “xxxxxx.h”,project和private是不暴露出来的。
然后将要公开的文件在sdk的.h文件中写出,不然后面使用s d k时,会提示文件找不到
二:创建资源文件bundle
生成的SDK,一般会有一些资源文件,那么最理想的是将资源文件也打包成为bundle给应用方一起使用。
1. 创建bundle, 在工程中创建一个新的target(SDKDemoResource),点下图左下方+号
选择macOS–》bundle
2. 创建好之后需要设置的地方:
- Build Settings–》Enable Bitcode设置为NO
- 将baseSDK改为iOS
- COMBINE_HIDPI_IMAGES改为NO
在生成资源bundle文件时,发现编译好后的图片文件从png转成了tiff,这在使用sdk时无法识别图片。
解决的方法: 经查是需要将编译设置COMBINE_HIDPI_IMAGES改为NO. 如下图所示:
3.将必要的资源文件添加进去
如下图:可以将图片/xib文件添加进去
- 图片加载方法:
backImageView.image = [UIImage imageNamed:@“SDKDemoResources.bundle/backImg”]; - xib加载方法:
NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@“SDKDemoResources” ofType:@“bundle”];
NSBundle *bundle = [NSBundle bundleWithPath:bundlePath];
[self.tableView registerNib:[UINib nibWithNibName:@“VideoListCell” bundle:bundle] forCellReuseIdentifier:@“VideoListCell”];
就是将有用到[NSBundle mainBundle]的地方,替换成上面定义的 NSBundle *bundle 。