iOS有些库只能在真机上运行,想在模拟器上运行的解决办法

在开发中,我们多少都会用到第三方的东西。有些库正好适合自己的需求,但是却只支持真机上运行,在模拟器上编译却不通过。

一般情况下,.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;
    }
}

判断是真机还是模拟器,只有在真机情况下调用插件初始化方法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。