天天看點

【Android】java.lang.UnsatisfiedLinkError:**nativeLibraryDirectories=[**, /vendor/lib64, /system/lib]坑

最近在測試某個工程中的一個demo子產品,為了保證客戶拿到源碼能直接使用,是以建立了一個工程之後直接将demo子產品添加進來,編譯的時候報錯:java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "*****.apk"],nativeLibraryDirectories=[*****/lib/arm64, /vendor/lib64, /system/lib64]]] couldn't find "****.so",很明顯這是64位so庫缺失,但是本身我就沒有在64位檔案夾下放任何東西:

【Android】java.lang.UnsatisfiedLinkError:**nativeLibraryDirectories=[**, /vendor/lib64, /system/lib]坑

在原工程中編譯啟動後也是不會報錯的,于是在gradle加入了ndk架構的篩選:

【Android】java.lang.UnsatisfiedLinkError:**nativeLibraryDirectories=[**, /vendor/lib64, /system/lib]坑

加入之後确實就沒問題了,但還是好奇是什麼導緻原工程沒問題而新的工程編譯運作會崩潰,于是在對比了兩個工程之後,發現主要還是gradle版本不同,嘗試着切換成了舊工程的版本之後就正常了,在此記錄下新舊工程的gradle和插件版本,具體哪個版本開始改變的就沒去細細研究,有查閱更新文檔後知道從哪個版本開始的,歡迎留言:

舊版工程:

gradle:3.0.1

gradle-wrapper:4.4

新版工程:

gradle:3.5.2

gradle-wrapper:5.4.1