在開發(fā)中人断,我們多少都會(huì)用到第三方的東西吭从。有些庫正好適合自己的需求,但是卻只支持真機(jī)上運(yùn)行恶迈,在模擬器上編譯卻不通過涩金。
一般情況下谱醇,.a靜態(tài)包,剛導(dǎo)入的時(shí)候,不管真機(jī)還是模擬器都是不會(huì)編譯報(bào)錯(cuò)的步做,這說明副渴,只有在調(diào)用到其中的方法時(shí),編譯器才會(huì)去檢測(cè).a文件是不是支持當(dāng)前的設(shè)備架構(gòu)全度。想要在模擬器上運(yùn)行煮剧,就要避開模擬器上運(yùn)行報(bào)錯(cuò)的地方。
例如下面的報(bào)錯(cuò)就是模擬器運(yùn)行報(bào)錯(cuò):
解決辦法:
找到報(bào)錯(cuò)的地方将鸵,例如第一個(gè)錯(cuò)誤位置是JYBDScanCardManage類里面configIDScan方法中EXCARDS_Init這句代碼不支持模擬器運(yùn)行勉盅,所以在此對(duì)運(yùn)行環(huán)境做判斷
#if TARGET_IPHONE_SIMULATOR
#else
//不支持模擬器運(yùn)行的方法
#endif
修改后的代碼示例
static bool initFlag = NO;
- (void)configIDScan {
if (!initFlag) {
#if TARGET_IPHONE_SIMULATOR
#else
const char *thePath = [[[NSBundle mainBundle] resourcePath] UTF8String];
int ret = EXCARDS_Init(thePath);
if (ret != 0) {
NSLog(@"初始化失敗:ret=%d", ret);
}
#endif
initFlag = YES;
}
}
判斷是真機(jī)還是模擬器顶掉,只有在真機(jī)情況下調(diào)用插件初始化方法草娜。