之前做app的時(shí)候引入一個(gè)第三方庫(kù)后爵卒,報(bào)如下錯(cuò)誤
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"
分析了一下,原來(lái)第三方庫(kù)依賴(lài)有arm64-v8a撵彻,armeabi钓株,armeabi-v7a,x86的so庫(kù)千康,我的app依賴(lài)的libffmpeg_pptv.so只有armeabi版本享幽,所以導(dǎo)致不匹配。
解決方法有兩個(gè):
- 將app的so庫(kù)補(bǔ)全
- 或整個(gè)工程只使用armeabi的so庫(kù)
這里使用第二種辦法解決拾弃,在build.gradle中添加配置
android {
defaultConfig {
ndk {
abiFilters = ["armeabi"]
}
}
}
NDK SO庫(kù)的使用者應(yīng)該遵循一個(gè)準(zhǔn)則:要么支持所有平臺(tái),要么都不支持摆霉。