这次所说的打包流程是最笨的方法,就是将所用的第三方类库直接改名.这样,避免了framework和用cocoaPods管理的类库带来的冲突,但是有个非常多的不好的地方:(1)首先这样打包,打出来的包比较大.(2)打包比较麻烦,需要将用到的类库改名,遇到不太好改的类库,那就相当的蛋疼了 …… 后续在网上看到关于用cocoaPods打包的,但是到工程打出来包以后,工程中引用的第三方库不管用,找不到原因,如果各位谁知道关于这方面的,欢迎评论或私信
1.编写原始工程代码
这是你实现完整功能的代码,同时里面用到的资源文件(png图片,xib文件,plist文件等吧),在打包bundle文件时会用到这个工程,后面会讲,但是在这之前,最后写个通用的常量配置文件,比如什么:XXXConst.h和XXXConst.m文件:里面会有bundle文件的路径,下面是我自己写的路径:
.h文件:
extern NSString *const Dve_ProjectResourceBundleName;//之后打的bundle包的名称
#ifdef DEBUG
#define Dve_ProjectSrcName(file) file//file 是图片名称
#else
#define Dve_ProjectSrcName(file) [Dve_ProjectResourceBundleName stringByAppendingPathComponent:file]
#endif
.m文件
//@"image" 名字可以修改
NSString *const Dve_ProjectResourceBundleName = @"image.bundle";
2.改动类库的名称
如果在framework中用到的类库和cocoaPods管理用的类库有冲突,那就需要该framework中类库的名称了
改动方法如下:
第三步
第四步:如果外面的名称没有变的话,手动改了
关于修改工程中类名的可以参考一下这几篇文章:
http://blog.csdn.net/ios_leungyl/article/details/47316565
http://blog.csdn.net/xiaonaiping061/article/details/48465159
3.打包framework静态库
第一步:可以在原工程中直接创建framework,也可以重新新建工程
(2)也可以另外打开一个工程,直接选择iOS ----> Framework&Library 选择framework就好了
第二步:配置工程
(1)在PROJECT->Deployment Target->iOS Deployment Target选择你需要支持的最低系统。
(2)Build时会发现 ld: warning: embedded dylibs/frameworks only run on iOS 8 or later警告,这是因为工程默认编译设置的是Dynamic Framework
( 7) 暴露头文件以供使用者使用
(8)打包 . Edit Scheme -> Buile Confifuration ->选择Release 然后Run 即可
(9) 选择模拟器,打的包就只支持模拟器,选择真机,就支持真机,两者可以合并在一起,这个稍后再讲
(10)打出包之后,在工程中Products,对framework Show in Finder 可以找到包
(11)这是如果将包中有CateGory,那在导入其他工程中使用,在build之后,会崩溃,这时需要在导入使用的工程中在 other linker flags 中添加 -ObjC ,若仍然崩溃,在添加 -all_load
(12)关于真机和模拟器打出的包合并 请参考文章 http://www.cnblogs.com/yajunLi/p/6005077.html
第三步 打包bundle文件
第二步 :
按照上面的步骤走完,会出现下面的字段:
只需要将COMBINE_HIDPI_IMAGES 设置为NO就好
这样在导出bundle包时,里面的图片还是png的,否则会变为tiff格式
第三步:添加资源:
第四步 引用.bundle中的资源文件
NSBundle *libBundle = [NSBundle bundleWithPath:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"XXX.bundle"]];
[[XXXController alloc] initWithNibName:@"Xib name " bundle:bundle路径];
plist文件引用
NSString *path = [bundle路径 pathForResource:@"XX" ofType:@"plist"];
所有的步骤应该是完成,如果在阅读中,有所疑问,欢迎评论,谢谢,如有转发,请标明来源
参考文章:同时感谢这些文章的作者
http://blog.csdn.net/xyxjn/article/details/42527341
http://www.cnblogs.com/zhanglinfeng/p/5510717.html
http://www.cocoachina.com/ios/20150127/11022.html
http://www.cocoachina.com/bbs/read.php?tid=153428
http://www.cnblogs.com/yajunLi/p/6005077.html
https://my.oschina.net/u/856930/blog/196484
http://www.jianshu.com/p/558b44c0fb74
http://www.jianshu.com/p/a8366426fe51
http://www.w2bc.com/Article/88645