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
setting_objc.png
三、第三方庫到引入和沖突問題
1.SDK導入第三庫。一般正常導入第三方庫的時候,需要勾選target
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引入framework的時候,framework需要在工程內引入。否則報錯。
由于自己是寫的SDK,所以情況3暫未驗證;.a引入framework的時候問題,采用的方式是那樣,未找到好的解決方法,若有大神有好的解決方案,可留言,謝謝!