原文地址:http://blog.csdn.net/shengyingpo/article/details/51538444
跟着书学习使用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()
-
- maven { url "https://raw.github.com/bmob/bmob-android-sdk/master" }
- }
- }
然后添加compile依赖文件:
- compile 'cn.bmob.android:bmob-sdk:3.4.7-aar'
这样就解决了。
注:以上方法是在android studio中使用的。