1. 问题描述:
在android-studio中,进行项目编译时,出现以下error:
Init library failed & error:!java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/xxxxx/base.apk"],nativeLibraryDirectories=[/data/app/xxxxx/base/lib/arm, /vendor/lib, /system/lib]]] couldn't find "libxxx.so"
2. 原因分析:
很显然,是因为没有正确load相应的so库。可是,我已经在libs下面放置了so库了啊。通过在/data/data/包名/lib下面查看,的确没有这个.so文件(我的手机是root过的,所以可以用root权限打开/data/data/包名/lib这个目录),
那么,为什么会这样呢?
经查,是因为在gradle文件中没有指定相应的so文件的目录
3. 解决办法:
在项目的build.gradle文件中,加入以下code,再编译,问题解决:
其中,jniLibs.srcDirs指定的就是so所在的目录。
用android-studio开发,了解gradle相关知识,必不可少。
在android-studio中,进行项目编译时,出现以下error:
Init library failed & error:!java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/xxxxx/base.apk"],nativeLibraryDirectories=[/data/app/xxxxx/base/lib/arm, /vendor/lib, /system/lib]]] couldn't find "libxxx.so"
2. 原因分析:
很显然,是因为没有正确load相应的so库。可是,我已经在libs下面放置了so库了啊。通过在/data/data/包名/lib下面查看,的确没有这个.so文件(我的手机是root过的,所以可以用root权限打开/data/data/包名/lib这个目录),
那么,为什么会这样呢?
经查,是因为在gradle文件中没有指定相应的so文件的目录
3. 解决办法:
在项目的build.gradle文件中,加入以下code,再编译,问题解决:
sourceSets { main { jniLibs.srcDirs = ['libs'] // jni.srcDirs = [] //disable automatic ndk-build } }
其中,jniLibs.srcDirs指定的就是so所在的目录。
用android-studio开发,了解gradle相关知识,必不可少。