跟着书学习使用Bmob后端云的使用,导入用到的两个jar包后出现了下面的错误:
java.lang.UnsatisfiedLinkError:dalvik.system.PathClassLoader[DexPathList[[zip file "xxx.apk"],nativeLibraryDirectories=[xxx/lib, /vendor/lib, /system/lib]]] couldn't find "libxxx.so"
原来是缺少.so文件。然后我在下载的sdk里找到了.so,关键是如何导入。
上网搜索后找到两种方法:
方法1
一定要将目录结构改成下面这个样子:
|---src
|---main
|---jniLibs
|---arm64-v8a
|---libhello-jni.so
|---armeabi
|---libhello-jni.so
|---armeabi-v7a
|---libhello-jni.so
|---x86
|---libhello-jni.so
|---x86_64
|---libhello-jni.so
|---mips
|---libhello-jni.so
|---mips64
|---libhello-jni.so
方法2
直接修改app的build.gradle文件如下:
android {
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
但是,我使用以上方法后,又出现了一个新错误:
java.lang.UnsatisfiedLinkError: dlopen failed: "libxxx.so" is too small to be an ELF executable
问公司带我的人怎么办,他让我直接去看Bmob的开发文档,结果开发文档里显示不需要手动添加jar包,而是在build.gradle中添加maven库:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
}
}
allprojects {
repositories {
jcenter()
//Bmob的maven仓库地址,必须填写
maven { url "https://raw.github.com/bmob/bmob-android-sdk/master" }
}
}
然后添加compile依赖文件:
compile 'cn.bmob.android:bmob-sdk:3.4.7-aar'
这样就解决了。
注:以上方法是在android studio中使用的。