iOS16+iPhone11ProMax下Linphone SDK5.2beta82启动崩溃(缺失libjsoncpp库)
iOS 16设备集成Linphone SDK 5.2 Beta 82启动崩溃:libjsoncpp.24.dylib加载失败
我将Linphone SDK 5.2 Beta 82编译后集成到应用中,在iOS 16系统的iPhone 11 Pro Max上启动时直接崩溃,核心崩溃栈信息如下:
dyld[591]: Library not loaded: @rpath/libjsoncpp.24.dylib Referenced from: <37C02679-31AD-371A-8BBD-1EB40F928F79> /private/var/containers/Bundle/Application/38841998-D49D-441F-BE5A-DFB40043F67C/personal_chat.app/Frameworks/linphone.framework/linphone Reason: tried: '/usr/lib/system/introspection/libjsoncpp.24.dylib' (errno=2, not in dyld cache), '/private/var/containers/Bundle/Application/38841998-D49D-441F-BE5A-DFB40043F67C/Frameworks/libjsoncpp.24.dylib' (errno=2), ...(省略重复路径)
此前集成Linphone SDK 5.2 Beta 10时,iOS 16设备上运行正常(仅存在音频无声音问题),升级到Beta 82后出现该崩溃。
解决步骤
1. 检查SDK编译产物是否包含依赖库
打开编译生成的Linphone SDK包,确认Frameworks目录下存在libjsoncpp.24.dylib文件。如果缺失,说明编译过程中jsoncpp模块未正确构建,需重新编译SDK,确保编译脚本包含jsoncpp的编译逻辑。
2. 配置Xcode项目依赖
- 将
libjsoncpp.24.dylib添加到Xcode项目的Frameworks, Libraries, and Embedded Content列表中,设置Embed选项为Embed & Sign。 - 检查项目
Build Settings->Runpath Search Paths,确保包含@executable_path/Frameworks和@loader_path/Frameworks,保证dyld能正确定位库文件。
3. 验证linphone.framework的依赖路径
使用otool命令检查linphone.framework的依赖配置:
otool -L /path/to/linphone.framework/linphone
确认libjsoncpp.24.dylib的引用路径为@rpath/libjsoncpp.24.dylib。如果路径错误,需重新编译SDK并调整依赖的rpath设置。
4. 清理缓存并重新构建
- 执行
Product->Clean Build Folder(快捷键Cmd+Shift+K)清理Xcode构建缓存。 - 删除
~/Library/Developer/Xcode/DerivedData下当前项目的缓存文件夹。 - 重新安装应用到测试设备,避免旧缓存干扰。
5. 检查SDK编译的iOS版本兼容性
确认编译Linphone SDK时,目标iOS版本设置为iOS 16或更低(匹配测试设备系统版本),避免因SDK最低支持版本高于设备系统导致加载失败。
内容的提问来源于stack exchange,提问作者zeshanbaig786
相关产品推荐
相关产品推荐

