在开发中,我们多少都会用到第三方的东西。有些库正好适合自己的需求,但是却只支持真机上运行,在模拟器上编译却不通过。
一般情况下,.a静态包,刚导入的时候,不管真机还是模拟器都是不会编译报错的,这说明,只有在调用到其中的方法时,编译器才会去检测.a文件是不是支持当前的设备架构。想要在模拟器上运行,就要避开模拟器上运行报错的地方。
例如下面的报错就是模拟器运行报错:
模拟器运行报错.png
解决办法:
找到报错的地方,例如第一个错误位置是JYBDScanCardManage类里面configIDScan方法中EXCARDS_Init这句代码不支持模拟器运行,所以在此对运行环境做判断
#if TARGET_IPHONE_SIMULATOR
#else
//不支持模拟器运行的方法
#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;
}
}
判断是真机还是模拟器,只有在真机情况下调用插件初始化方法。
网友评论