码迷,mamicode.com
首页 > 移动开发 > 详细

Android - Gradle架构中使用的“.so”库

时间:2014-12-29 23:03:59      阅读:303      评论:0      收藏:0      [点我收藏+]

标签:mytra   android   so   unsatisfiedlinkerror   gradle   

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”库

标签:mytra   android   so   unsatisfiedlinkerror   gradle   

原文地址:http://blog.csdn.net/caroline_wendy/article/details/42246015

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!