macOS Objective-C项目集成Linphone SDK无法定位vcard_grammar怎么解决?
Linphone macOS SDK集成vcard_grammar找不到问题解决方案
该报错根因为Linphone运行时需要读取配套的资源文件,仅导入framework未打包资源到App包会导致路径查找失败,可按以下步骤修复:
- 解压下载的Linphone SDK压缩包,找到包内的
share目录,vcard_grammar等资源文件都存储在该目录下的对应子文件夹中。 - 将完整的
share目录拖入Xcode项目,弹窗配置导入选项时:勾选「Copy items if needed」、选择你的主App target,必须选择「Create folder references」而非「Create groups」,否则share的层级结构会被展平,SDK依旧无法定位资源文件。 - 进入项目target的「Build Phases」页,检查「Copy Bundle Resources」列表中已包含导入的share文件夹,确认资源会被打包进App的资源目录。
- 在创建Core前先为LinphoneFactory指定资源根路径,修改你的代码如下:
LinphoneFactory *factory = linphone_factory_get(); // 配置资源根目录 NSString *shareResourcePath = [[NSBundle mainBundle] pathForResource:@"share" ofType:nil]; linphone_factory_set_data_dir(factory, shareResourcePath.UTF8String); // 原有逻辑保持不变 NSString *linphonecfg = [LinphoneManager bundleFile:@"linphonerc"]; NSString *fileStr = [NSString stringWithContentsOfFile:linphonecfg encoding:NSUTF8StringEncoding error:nil]; configDb = linphone_config_new_from_buffer(fileStr.UTF8String); theLinphoneCore = linphone_factory_create_core_with_config_3(factory, configDb, NULL);
修改完成后重新编译运行即可解决报错,若后续出现其他资源找不到的同类错误,确认share目录的文件完整性和导入配置即可。
内容的提问来源于stack exchange,提问作者Luís Campos
相关产品推荐
相关产品推荐

