1.打开Xcode,点击File\New\Project,选择iOS\Framework and Library\Cocoa Touch Static Library新建一个静态库工程.
2.导入你的项目(包括项目里面所有的功能类和资源文件)
1》对于图片,建议不要把存放图片的Assets.xcassets文件直接挪过来,这样后期把资源文件打包后,不方便读取读取到图片;
2》我在这里把xib,故事板,和图片都放在了一个文件夹下面,是为了大家看的方便,开发者也可以不这么做
3、把你项目里面需要被开发者引用的类暴露出来(例如:我需要从外面引用到MyProjectController这个控制器,就把.h文件从 project路径下面移动到public路径下)
4.在你的fraework的头文件里面,引入你需要被外部引用的功能类的头文件(这个项目里面MySdk.h就是我的静态库的头文件)
5、修改一些配置信息
6.接下来就是很多人纠结的,对于图片,xib文件的处理问题了 ,上面我已经将所有的资源文件放在了include目录下
接下来,我们创建一个bundle文件用来静态库中所有的资源文件的存放,关于bundle文件的创建和使用,网上也有很多教程;但是我在看了之后 ,还是不太懂bundle和静态库是怎么关联的,以及是否方便后期的文件的读取等疑问,后面看了好几个文档才弄明白
1》在framework静态库工程中创建bundle文件
2》bundle文件创建完成,接下来就是导入你的项目里面所有的资源文件
7.修改bundle文件的一些参数配置
8 接下来就是打包Framework和bundle文件的时候了(分别对framework和bundle在模拟器,真机环境下编译一遍);
9.接下来就是就是提取到我们需要的.framework静态库和bundle文件了
1》关于合成真机和模拟器编译后的.framework文件网上很多例子了,我就不赘述了
2》关于bundle文件,我们选取真机编译后的bundle文件
10 把这个真机编译环境下的bundle文件导出来 ,和我们合成的.framework文件放在一个文件夹下面,导入到其他工程中,就可以正常使用了,但是对于上面提到的资源文件(图片,故事版,xib)的访问路径,我们要略作修改 ,不然sdk内部的功能类读取不到图片和xib文件等,会crash;
1.故事版
NSURL *bundleURL = [[NSBundle mainBundle] URLForResource:@"CLAppreciationSDKBundle"
withExtension:@"bundle"];
NSBundle *bundle = [NSBundle bundleWithURL:bundleURL];
UIStoryboard * board = [[UIStoryboard storyboardWithName:storyBoard bundle:bundle]
2.xib
NSURL *bundleURL = [[NSBundle mainBundle] URLForResource:@"CLAppreciationSDKBundle"
withExtension:@"bundle"];
NSBundle *bundle = [NSBundle bundleWithURL:bundleURL];
[tableView registerNib:@"CLpastCostsAddressCell"] bundle:bundle];
3.image
NSURL *bundleURL = [[NSBundle mainBundle] URLForResource:@"CLAppreciationSDKBundle"
withExtension:@"bundle"];
NSBundle *bundle = [NSBundle bundleWithURL:bundleURL];
UIImage *image = [UIImage imageNamed:@"bundle/imageName"];
这就是我打包SDK的过程,欢迎指正,也希望对一些朋友有一点帮助。