首页 > 代码库 > Android - Gradle架构中使用的“.so”库
Android - Gradle架构中使用的“.so”库
Gradle架构中使用的".so"库
本文地址:http://blog.csdn.net/caroline_wendy
Android使用Gradle架构的Android应用,需要对.so库做特殊的处理,因为会找不到,就会导致编译正确,使用错误;
常见的使用情况是根据不同的cpu,有不同的库,包括:armeabi,mips,x86等。
报错:
java.lang.UnsatisfiedLinkError: Couldn‘t load weibosdkcore from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/xxx.apk"],nativeLibraryDirectories=[/data/app-lib/xxx-2, /vendor/lib, /system/lib]]]: findLibrary returned null
有两种方法可以解决:
1. 将“.so”库生成jar
把jar引入项目即可,需要注意目录的顺序:
-lib --armeabi ---xxx.so命令:
jar cvf xxx_cpu.jar ./lib再加载到应用中,即可;
2. 使用gradle配置
在Android{}的范围内,添加:
//noinspection all task copyNativeLibs(type: Copy) { // third party lib so from(new File(projectDir, ‘libs‘)) { include ‘armeabi/*.so‘ } into new File(buildDir, ‘native-libs‘) } tasks.withType(JavaCompile) { compileTask -> //noinspection all compileTask.dependsOn copyNativeLibs } //noinspection all tasks.withType(com.android.build.gradle.tasks.PackageApplication) { pkgTask -> pkgTask.jniFolders = new HashSet<File>() pkgTask.jniFolders.add(new File(buildDir, ‘native-libs‘)) }
即可,"//noinspection all"可以去除warning。
Android - Gradle架构中使用的“.so”库
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。