Xamarin.Forms项目LibVLCSharp初始化报libc++_shared.so加载错误如何解决?
问题根因
这个报错是Android平台特有问题,Android 7.0及以上版本限制了应用对系统目录下原生so库的访问权限,同时你的项目没有将LibVLCSharp依赖的libc++_shared.so打包进APK,导致运行时加载库失败。
可行解决方案
方案1:添加项目配置强制打包libc++_shared.so
打开你的Android项目(Xamarin.Android/.NET MAUI Android)的.csproj文件,在第一个<PropertyGroup>节点下添加如下配置:<PropertyGroup> <!-- 强制打包libc++_shared.so --> <AndroidIncludeCxxShared>True</AndroidIncludeCxxShared> <!-- 确保覆盖你需要适配的CPU架构 --> <AndroidSupportedAbis>arm64-v8a;armeabi-v7a</AndroidSupportedAbis> <AndroidUseLlvm>True</AndroidUseLlvm> </PropertyGroup>配置完成后全量清理项目、重新生成即可。
方案2:确保NuGet包版本匹配
检查项目安装的NuGet包,必须同时安装版本完全一致的LibVLCSharp和LibVLCSharp.Android,不要出现跨版本混用的情况,否则会出现原生库依赖不匹配的问题。方案3:手动导入libc++_shared.so
如果上述方案无效,可以手动从你项目使用的NDK安装路径下,找到对应架构的libc++_shared.so文件:
路径示例:ndk/<你的NDK版本>/sources/cxx-stl/llvm-libc++/libs/<对应架构>/libc++_shared.so
将文件复制到你的Android项目的Resources/lib/<对应架构>/目录下,右键文件设置「生成操作」为AndroidNativeLibrary,重新生成项目即可。
验证方法
重新打包生成APK后,解压APK查看lib/目录下对应架构的文件夹,确认存在libc++_shared.so文件即说明配置生效。
内容的提问来源于stack exchange,提问作者Bill Qu

