SDK系列-FrameWork制作(2)

SDK系列-iOS FrameWork制作概述
SDK系列-FrameWork的制作(1)
SDK系列-FrameWork的制作(2)

ios FrameWork制作(2)

在SDK里,一般会引入图片资源bundle文件,如何获取相关的图片;类别头文件未找到;第三方库冲突怎么解
决;SDK内添加SDK问题;

一、bundle资源文件

1.可获取2x,3x图片

UIImage *image = [UIImage imageNamed:@"SourcesBundle.bundle/
imageName.jpg"];

2.通过获取图片的路径,来获取图片,无法获取2x和3x图片

NSBundle *bundle = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"Resource" ofType:@"bundle"]];
NSString * imagePath = [bundle pathForResource:scaledName ofType:@"png"];
UIImage *img = [UIImage imageWithContentsOfFile:imagePath];

3.宏定义

#define ImageBundel @"SourceImage.bundle"
#define MYBUNDLE_PATH [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent: ImageBundel]
#define ResourcePath(fileName) [MYBUNDLE_PATH stringByAppendingPathComponent:[NSString stringWithFormat:@"Contents/Resources/%@",fileName]]

二、类别的添加

SDK中类别文件找不到,则需要在工程内添加-ObjC

SDK系列-FrameWork制作(2)_第1张图片
setting_objc.png

三、第三方库到引入和冲突问题

1.SDK导入第三库。一般正常导入第三方库的时候,需要勾选target

SDK系列-FrameWork制作(2)_第2张图片
import_lib1.png
勾选中targets,则会在SDK内可执行的.o文件;若不勾选,则不会生成,添加到工程时,
则需要再次添加,否则报错。

2.冲突问题。

a.SDK第三方库和工程的第三库冲突;

报`duplicate symbol_OBJC_METACLASS_ `;是因为SDK内导入了第三方库,和工
程的同时导入第三方库或者2个静态库同时导入第三方库;
情况1:静态库和工程第三方库冲突(SDK自己做的):则更改SDK内的第三方库类名;或者SDK内导入的第三库不勾选target,但对于静态库的独立性和可移植性效果不好;
情况2:静态库和工程第三方库冲突(SDK不是自己做的):通过命令拆分SDK,再删除重复文件,在合并成SDK。
情况3:两个或两个以上静态库冲突或者静态库和工程第三方库冲突(SDK不是自己做的:在Other Linker Flag 设置参数,或者通过命令拆分SDK,再删除重复文件,在合并成SDK。

参考文献:解决.a 静态库冲突问题

四、.a引入framework的时候,framework需要在工程内引入。否则报错。

由于自己是写的SDK,所以情况3暂未验证;.a引入framework的时候问题,采用的方式是那样,未找到好的解决方法,若有大神有好的解决方案,可留言,谢谢!

你可能感兴趣的:(SDK系列-FrameWork制作(2))