【Android】so庫缺失--UnsatisfiedLinkError
阿新 • • 發佈:2018-10-31
第一次引入多個so庫,果斷報了UnsatisfiedLinkError錯誤
先引入的DMD(牆外的一個全景拍照sdk)的so庫
長這樣:
只支援兩個平臺:armeabi和armeabi-v7a,除錯正常。
然後引入百度地圖so庫
長這樣:
支援的機稍微多了一些,五個平臺。
把兩堆檔案合併,開始除錯。
除錯百度地圖功能時正常,但突然就死了。搜了一下,說有的so庫是先編譯再載入,除錯的時候正在載入,載入到這個地方就卡住了。
報錯型別:UnsatisfiedLinkError
日誌說找不到DMD的so庫,大眾的解釋是:如果so庫有多個資料夾,那麼每個資料夾下都應該有一個對應so檔案。但DMD在其他三個平臺的資料夾下沒有相應的so檔案,所以,報了個找不到。
解決方法
在build.gradle(app)檔案中新增平臺過濾器
android {
······
buildTypes {
release {
ndk {
abiFilters = ["armeabi"]
}
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
ndk {
abiFilters = ["armeabi"]
}
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
這裡的 abiFilters = [“armeabi”] 指只支援armeabi平臺,其他的過濾掉,讓系統不要再去找了。
這樣就解決了。