以前公司比较纯粹,做自己的研发而已,当时当各种需求不那么纯粹时,你可能需要各种尝试,mark打包frameWork
想把一个功能完整的模块,打包成frameWork分割开来,首先,打开Xcode,file-->new-->workSpace,新建一个工作空间
第二步,创建frameWork,
此时需要做相关设置
设置完以上步骤后
注意细节问题,比如info中的developmentTarget最好和要融合的项目保持一致,一些不支持的ARC的第三方库,要配置支持ARC
打开终端,到该framework路劲,用cocoapod加入要打包的代码需用的第三方库,添加成功之后,重新用workspace打开SDK
把要封装的代码,放入SDK项目中,commend+b后在product中,生成对应的framework
如果需要完整的融合,可能还涉及到要打包bundle资源文件,bundle打包步骤如下
新建project,xcode-->file-->new-->project
选macOS下的bundle
bundle创建之后设置相关配置如下图
把需要打包的xib 图片等文件,放到该bundle中
分别选择ios 设备 和模拟器,commend+b 在product中看见两个版本的bundle文件
生产bundle资源文件后,对于xib 以及图片资源的引用,需要注意修改NSString* bundlePath = [[NSBundle mainBundle]pathForResource: @"MyBundle"ofType:@"bundle"];
NSBundle*resourceBundle = [NSBundle bundleWithPath:bundlePath];
图片获得bundle中的资源
NSString *bundlePath = [[NSBundle mainBundle] pathForResource:@"SourcesBundle" ofType:@"bundle"];
NSString *imgPath= [bundlePath stringByAppendingPathComponent:@"xxx"];
可能出现的问题,
第一:重复问题,模块化的代码,打包后,可能和融合的项目中代码重复,尤其注意类别代码,报连接错误时,注意看一下错误上下文一般会提示重复的文件类
第二:缺失第三库库文件问题,打包的项目里可能存在的第三方库,需要在当前项目用同样的方式,比如cocoapod引入
第三:注意第三方API中的framework及bundle资源文件的添加
细节问题,因人而异不在赘述,打卡,Mark!
关于真机包和模拟器包合并
1、首先在在连接真机的情况下编译出一个版本,show in finder可见
2、再次选中模拟器编译一个版本,编译成功之后 show in finder可见
lipo +空格+ _create+空格+framewrok下二进制文件的目录+空格+同样真机framework目录下二进制文件的目录+ -output + 空格 + 同样模拟器framework目录下二进制文件的目录
例如:lipo -create /Users/yonyou/Desktop/10.22号合并FW/真机/YYOUPatProject.framework/YYOUPatProject /Users/yonyou/Desktop/10.22号合并FW/模拟器/YYOUPatProject.framework/YYOUPatProject -output /Users/yonyou/Desktop/10.22号合并FW/真机/YYOUPatProject.framework/YYOUPatProject
合并出来的包,就是原来模拟器目录下的framwork了。
注意-output在哪个文件夹路径下,最后合并的二进制文件就在哪个路径下
最后需要用合并的二进制文件替换原来真机或者模拟器framework下面的二进制文件,才是最后合成适用真机和模拟器的合并包。