开发者社区 问答 正文

接入短视频SDK时出现UnsatisfiedLinkError错误

  • 错误日志:
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.tsingthu.i_business-RUx9FM_0xdCb7qW5MPdo-w==/base.apk"],nativeLibraryDirectories=[/data/app/com.tsingthu.i_business-RUx9FM_0xdCb7qW5MPdo-w==/lib/arm64, /data/app/com.tsingthu.i_business-RUx9FM_0xdCb7qW5MPdo-w==/base.apk!/lib/arm64-v8a, /system/lib64, /system/product/lib64, /hw_product/lib64, /system/product/lib64]]] couldn't find "libgxx_personality.so"
java.lang.NoSuchMethodError: No virtual method sendCodecInfoEvent()V in class Lcom/alivc/conan/event/AlivcEventReporter; or its super classes (declaration of 'com.alivc.conan.event.AlivcEventReporter' appears in /data/app/com.tsingthu.i_business-RUx9FM_0xdCb7qW5MPdo-w==/base.apk!classes8.dex)
  • 下载的短视频demo可以正常的运行,但即使把demo中的module拷贝到工程中引入也还是出现上述问题
  • 添加了ndk配置仍然未生效
ndk {
    abiFilters "armeabi-v7a", "arm64-v8a"
}

展开
收起
tsingthu 2020-07-27 22:47:40 1186 分享 版权
阿里云 AI 助理回答

从错误日志中可以看出,您遇到的问题主要涉及两个方面:UnsatisfiedLinkErrorNoSuchMethodError。下面我将分别针对这两个问题提供可能的解决方案:

UnsatisfiedLinkError: libgxx_personality.so not found

这个错误表明您的应用在运行时尝试加载一个本地库(.so文件),但系统未能找到名为libgxx_personality.so的库。这通常是因为该库没有被正确地打包到APK中,或者路径配置不正确。

解决方法:

  1. 确认本地库是否已包含:确保您的项目中确实包含了所有需要的.so文件,并且它们被放置在正确的目录下。对于Android Studio项目,这些文件应位于src/main/jniLibs/{abi}目录下,其中{abi}是目标CPU架构,如armeabi-v7aarm64-v8a。根据您的ndk配置,您已经指定了armeabi-v7aarm64-v8a,请检查这些目录下是否有遗漏的libgxx_personality.so

  2. 检查Gradle配置:确保您的build.gradle文件正确配置了NDK路径和abi过滤器。您已经添加了abiFilters,看起来这部分配置是正确的。但是,请确认没有其他配置覆盖或忽略了这些设置。

  3. 清理并重建项目:有时候,即使配置正确,也需要执行Clean ProjectRebuild Project来确保所有更改都被应用。

  4. 检查依赖库:如果libgxx_personality.so属于某个第三方库,请确保该库的依赖也被正确添加到项目中,并且版本兼容。

NoSuchMethodError: sendCodecInfoEvent()

这个错误意味着在运行时尝试调用com.alivc.conan.event.AlivcEventReporter.sendCodecInfoEvent()方法,但该方法在当前类或其父类中找不到。这通常是因为编译时和运行时使用的库版本不一致。

解决方法:

  1. 检查依赖版本:确认com.alivc.conan.event.AlivcEventReporter相关的库是否是最新的,并且与您的项目兼容。在build.gradle文件中查看相关依赖,并确保它与阿里云音视频SDK的文档推荐版本一致。

  2. 清除旧的缓存和依赖:有时老版本的库文件可能会因为缓存的原因而没有被更新。尝试删除项目的.gradle目录、build目录以及IDE的缓存,然后重新同步和构建项目。

  3. 确保依赖传递正确:如果AlivcEventReporter是从另一个依赖中间接引入的,检查是否有依赖冲突。可以使用./gradlew app:dependencies命令来查看整个依赖树,找出可能的冲突并解决。

  4. 联系技术支持:如果上述方法都无法解决问题,建议直接联系阿里云的技术支持,提供详细的错误信息和项目配置,以便获得更专业的帮助。

综上所述,这些问题通常涉及到项目配置、依赖管理和构建流程,通过仔细检查和调整这些方面,应该能够解决遇到的问题。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答