1. 程式人生 > >/lib/x86, /system/lib, /vendor/lib]]] couldn't find xx.so

/lib/x86, /system/lib, /vendor/lib]]] couldn't find xx.so

近日對接PapPal,對接後在部份手機上會出現崩潰,檢視其日誌後發現報/lib/x86, /system/lib, /vendor/lib]]] couldn't find xx.so,我解壓了打好的apk發現裡面有對就的so,

折騰了一天發現,PapPal依賴了arm-v8a.x86_64等,於是報著試試看的心理在Gradle中加入如下配置


packagingOptions {
    exclude "lib/arm64-v8a/libcardioDecider.so"
    exclude "lib/arm64-v8a/libcardioRecognizer.so"
    exclude "lib/arm64-v8a/libcardioRecognizer_tegra2.so"
exclude "lib/arm64-v8a/libopencv_core.so" exclude "lib/arm64-v8a/libopencv_imgproc.so" exclude "lib/x86/libcardioDecider.so" exclude "lib/x86/libcardioRecognizer.so" exclude "lib/x86/libcardioRecognizer_tegra2.so" exclude "lib/x86/libopencv_core.so" exclude "lib/x86/libopencv_imgproc.so"
exclude "lib/x86_64/libcardioDecider.so" exclude "lib/x86_64/libcardioRecognizer.so" exclude "lib/x86_64/libcardioRecognizer_tegra2.so" exclude "lib/x86_64/libopencv_core.so" exclude "lib/x86_64/libopencv_imgproc.so" }

即打包時這些遮蔽掉不打入到apk中,就解決了。


事後瞭解到,因為包含了這些平臺的資料夾,系統會到相應平臺下找你寫的 loadLibary,因為沒找到,所以就報錯了,有人說不是64位能相容到32位麼,這裡你想有64位資料夾下有可用的SO了,那麼相應的其他庫也應有,如果沒有就會報錯。所以按照上述方法就解決了