java.lang.UnsatisfiedLinkError

之前做app的時候引入一個第三方庫后,報如下錯誤

java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/***-7Tf-RsFV6kwvEqK9L5ntUg==/base.apk"],nativeLibraryDirectories=[/data/app/***-7Tf-RsFV6kwvEqK9L5ntUg==/lib/arm64, /data/app/***-7Tf-RsFV6kwvEqK9L5ntUg==/base.apk!/lib/arm64-v8a, /system/lib64, /system/vendor/lib64]]] couldn't find "libffmpeg_pptv.so"

分析了一下,原來第三方庫依賴有arm64-v8a,armeabi,armeabi-v7a,x86的so庫,我的app依賴的libffmpeg_pptv.so只有armeabi版本,所以導致不匹配。
解決方法有兩個:

  • 將app的so庫補全
  • 或整個工程只使用armeabi的so庫
    這里使用第二種辦法解決,在build.gradle中添加配置
android {

    defaultConfig {    
            ndk {
                abiFilters = ["armeabi"]
            }
    }
}

NDK SO庫的使用者應該遵循一個準則:要么支持所有平臺,要么都不支持。

參考:http://www.lxweimin.com/p/cb05698a1968

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容