因为原来的工程里面的.so库,只有armeabi,加入Realm库后,引起冲突
log如下:
java.lang.UnsatisfiedLinkError:
com.android.tools.fd.runtime.IncrementalClassLoader$DelegateClassLoader[DexPathList[...]]
后面看了这篇文章
http://blog.devwiki.net/index.php/2016/09/02/android-multi-lib-jni-problem.html
于是在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'
}
}
但是发现新的问题:
com.getkeepsafe.relinker.MissingLibraryException: lib/armeabi-v7a/librealm-jni.so
这个问题在Realm github有讨论,https://github.com/realm/realm-java/issues/3484
全部是英文看的我云里雾里。。。
后面找到一个解决方案:
- 把工程中
armeabi
中的库,cope一份到armeabi-v7a
- 在module的
build.gradle
文件添加如下设置:
android {
//过滤掉不支持的平台
packagingOptions {
exclude "lib/arm64-v8a/librealm-jni.so"
exclude "lib/mips/librealm-jni.so"
exclude "lib/x86/librealm-jni.so"
exclude "lib/x86_64/librealm-jni.so"
}
splits {
abi {
enable true
reset()
include 'armeabi', 'armeabi-v7a'
}
}
}