美文网首页
打包Framework (含第三方库冲突)、boundle

打包Framework (含第三方库冲突)、boundle

作者: zYoung已被注册 | 来源:发表于2017-11-14 17:57 被阅读0次

前提: 在开发项目中,我们经常会用到一些第三方的sdk,不管是以.a或是.framework的形式,当然我们也可能去做一些这种sdk供其他人来使用,我们是用到了framework的形式,简单的说下

Step 1   新建一个framework工程,一般封装成SDK的话,后期维护是不可避免的,所以工程名字建议起的好一点

Step 2  编译

我以MJExtension为例,将MJExtension拖入后在模拟器/真机的环境下编译(运行)一下,首先看到如下图,名字字体变黑,说明你的项目没有问题,可以进入下一步。

Step 3   配置

1、系统会自动生成一个.h文件,(我的就是Test.h,可以找到),用来放置一些公开的头文件,删除会报错,暂时留着吧,不想用不要公开就好了

2、工程文件的配置,如图:

3、公开头文件,把你想要暴露给使用者的头文件统统暴露出来,从左面拖也好,从下面拽上来也好,都可。结果如下图:

4、pch文件的配置,plist文件的配置,按照你项目配即可

Step 4  打包、合并

1、打包

在真机和模拟器的环境下分别编译,注意,应该是Release版本,因为毕竟是要给其他使用着。

都运行好之后,在你的项目中framework处Show in Finder,找到你的framework,如下图,先不要关掉,开始合并

2、合并

1、检查架构支持情况,以模拟器编译的framwork为例

打开终端 输入

lipo -info xxxxx

查看支持的架构,xxxxxx下面这个东东的文件路径,如图,拖进去

回车,结果如下图:

2、合并

lipo -create xxxxxx zzzzzzz -output xxxxxx

xxxxxx 指真机路径(output后面的也是)   zzzzz 指的是模拟器路径 ,拖入的都是上面那个

回车

合并好后,再把合成后的framework(在真机路径下) 使用命令lipo -info xxxxx 重新检查一遍架构,这个时候应该是支持 armv7 i386 x86_64 arm64 的

至此,打包的工作已经完成!祝贺!!!


bundle文件的生成

1、Xcode创建

2、直接创建一个文件夹,把后缀名改为.bundle,点击添加即可

,

读取图片或文件的方法就要换掉了,以图片为例:

1、使用于文件类型

    NSString *bundle = [[NSBundle mainBundle] pathForResource:@"Resources" ofType:@"bundle"];

     NSString *strC = [[NSBundle bundleWithPath:bundle] pathForResource:imgName ofType:@"png"];

     strC = [[NSBundle bundleWithPath:bundle] pathForResource:[imgName stringByAppendingString:@"@2x"];

     UIImage *img = [UIImage imageWithContentsOfFile:strC];

2、适用于图片

[UIImage imageNamed:imgName inBundle:[NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"Resources" ofType:@"bundle"]] compatibleWithTraitCollection:nil]


解决第三方库文件冲突的问题

在我们打包sdk的时候,可能会用到一些第三方,如SDWebImage、AFN这些东西,如果项目中没有添加_all_load字段,那么恭喜你,不用改,但如果有或者报类名重复的错误,那么你就要改名字了

解决方法:

1、删除_all_load字段,不推荐,因为会使静态库中的Category中的方法失效

2、利用终端删除framework中的冲突文件(需要各位自己去网上找,因为第三方被我们修改了很多,所以没有采用这种方法)

3、在fromework源项目中建立PCH文件,把类名改掉,就像

#define MJProperty                                                  XXXMJProperty

#define MJFoundation                                              XXXXRLVMJFoundation

很多,要改好多,你最好在项目中添加一个Target,用来做Demo,以便进行!

后续修改、更新......


相关文章

网友评论

      本文标题:打包Framework (含第三方库冲突)、boundle

      本文链接:https://www.haomeiwen.com/subject/holfvxtx.html