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
三、第三方库到引入和冲突问题
1.SDK导入第三库。一般正常导入第三方库的时候,需要勾选target
勾选中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引入framework的时候,framework需要在工程内引入。否则报错。
由于自己是写的SDK,所以情况3暂未验证;.a引入framework的时候问题,采用的方式是那样,未找到好的解决方法,若有大神有好的解决方案,可留言,谢谢!