记录.so load error

2020-02-09  本文已影响0人  誓不言弃

记录.so load error

华为手机输出的错误log:

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.ks.kaishustory-0fXou6bzoislF4TVx3g4EA==/base.apk"],nativeLibraryDirectories=[/data/app/com.ks.kaishustory-0fXou6bzoislF4TVx3g4EA==/lib/arm64, /system/lib64, /system/product/lib64, /hw_product/lib64, /system/product/lib64]]] couldn't find "libmp3lame.so"
        at java.lang.Runtime.loadLibrary0(Runtime.java:1067)
        at java.lang.Runtime.loadLibrary0(Runtime.java:1007)
        at java.lang.System.loadLibrary(System.java:1668)
        at com.czt.mp3recorder.Mp3VoiceRecorder.<clinit>(Mp3VoiceRecorder.java:35)
        at com.ks.kaishustory.ui.SecondActivity.onCreate(SecondActivity.java:34)
        at android.app.Activity.performCreate(Activity.java:8066)
        at android.app.Activity.performCreate(Activity.java:8054)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1313)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3733)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3939)

小米手机输出的错误log:

java.lang.UnsatisfiedLinkError: dlopen failed: library "/system/lib64/libmp3lame.so" needed or dlopened by "/system/lib64/libnativeloader.so" is not accessible for the namespace "classloader-namespace"
        at java.lang.Runtime.loadLibrary0(Runtime.java:1016)
        at java.lang.System.loadLibrary(System.java:1657)
        at com.czt.mp3recorder.Mp3VoiceRecorder.<clinit>(Mp3VoiceRecorder.java:35)
        at com.ks.kaishustory.ui.SecondActivity.onCreate(SecondActivity.java:34)
        at android.app.Activity.performCreate(Activity.java:7040)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2809)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2931)
        at android.app.ActivityThread.-wrap11(Unknown Source:0)

最初使用的是小米手机进行调试的,一直显示需要依赖 libnativeloader.so,google了一圈 未找到有用信息,被小米的log误导了,以为是androidX 的兼容问题,修改了targetSdkVersion等都无效,换到华为手机后明显提示libmp3lame.so的so库加载不到,在 library 的 build.gradleandroid {} 声明了如下两个加载so的目录后仍然无效:

sourceSets{
    main {
       jniLibs.srcDirs = ['libs']
    }
}

repositories{
        flatDir {
            dirs 'libs'
        }
}

重新梳理了一遍代码 才想起来我只编译生成了 armeabi-v7a 下的so文件,因为该架构下的so库足以兼容市面上的大部分手机,到这里基本就猜测的到,新建的demo工程没有指定apk支持的so abiFilters,添加abiFilters编译通过

ndk {
    //设置支持的SO库架构
    abiFilters 'armeabi', 'armeabi-v7a'//, 'arm64-v8a'//, 'x86_64',
}
上一篇 下一篇

猜你喜欢

热点阅读