关于打包frameWork

以前公司比较纯粹,做自己的研发而已,当时当各种需求不那么纯粹时,你可能需要各种尝试,mark打包frameWork

想把一个功能完整的模块,打包成frameWork分割开来,首先,打开Xcode,file-->new-->workSpace,新建一个工作空间

关于打包frameWork_第1张图片
创建完成后,把他放在,桌面提前建好的文件夹

第二步,创建frameWork,


关于打包frameWork_第2张图片
创建好frameork

此时需要做相关设置



关于打包frameWork_第3张图片
第一步设置



关于打包frameWork_第4张图片
第二步设置


关于打包frameWork_第5张图片
第三步设置

设置完以上步骤后


关于打包frameWork_第6张图片
把要暴露的文件放在public


关于打包frameWork_第7张图片
暴露在外的文件,放在.h中

注意细节问题,比如info中的developmentTarget最好和要融合的项目保持一致,一些不支持的ARC的第三方库,要配置支持ARC

打开终端,到该framework路劲,用cocoapod加入要打包的代码需用的第三方库,添加成功之后,重新用workspace打开SDK

把要封装的代码,放入SDK项目中,commend+b后在product中,生成对应的framework

如果需要完整的融合,可能还涉及到要打包bundle资源文件,bundle打包步骤如下

新建project,xcode-->file-->new-->project

选macOS下的bundle


关于打包frameWork_第8张图片
bundle

bundle创建之后设置相关配置如下图


关于打包frameWork_第9张图片


关于打包frameWork_第10张图片


关于打包frameWork_第11张图片


关于打包frameWork_第12张图片
设置完成

把需要打包的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下面的二进制文件,才是最后合成适用真机和模拟器的合并包。

你可能感兴趣的:(关于打包frameWork)