目前有两种情况 SDK libagora-crypto.so 会加载失败:

  1. 应用设置 android:extractNativeLibs=“false"时,加载so失败。应用不设置该属性时,默认为"true”,无加载问题。Android文档:extractNativeLibs
  • 该值true:应用打包时,so库是压缩存放于apk文件中,应用安装时,会将so解压到同级lib目录下,SDK libagora-crypto.so 加载正常。

  • 该值false: 应用打包时,so库是未压缩并且对齐存放在apk中,应用安装时,不解压so,SDK libagora-crypto.so dlopen加载失败,通过原生 System.loadlibrary 加载so库正常。
    该值虽然默认为true, 但Android推荐设为false,即不解压so库。参考:Avoid extracting native libraries

  1. 应用使用app bundle且使用gradle plugin 3.3.0,这些应用使用 libagora-crypto.so 均加载失败,失败原因同上述 extractNativeLibs。

目前的临时解决办法:

在gradle.properties中设置: android.bundle.enableUncompressedNativeLibs=false 。