解決Android引用多個庫的jni架構平臺支援衝突的問題

V-Man發表於2016-11-08

今天在自己寫Demo時, 引用了兩個庫: Realm 和高德地圖.
接著時開開心心地碼程式碼,順利地編譯apk.然後一執行掛了!!!
異常如下:java.lang.UnsatisfiedLinkError
檢視了程式碼,找到了異常原因:
高德地圖只有一個 armeabi 的so檔案,而 Realm 帶有全平臺的so檔案.執行時由於手機是 armeabi-v8a ,所以一執行就掛了!
怎麼解決呢?本來想下載Realm的原始碼重新編譯aar然後去除其他平臺的so檔案,但又在群裡問了一下,找到了簡單的方法.
解決辦法
在module的build.gradle檔案新增如下設定:

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’
}
}

相關文章