AndroidStudio导入.SO文件

作者: 云雾云岭 | 来源:发表于2017-06-01 12:09 被阅读0次

    近日做Android项目,引用的第三方包需要依赖JNI。

    特意在网上查了一下AndroidStudio如何导入.so文件,发现有很多不同的方式,有简单的也要比较复杂的,而且有的方式还是错误的(说多了都是泪啊),为了避免很多人在第一次导入so浪费太多时间,在此教大家一种最简单的导入方式。

    大家使用过Eclipse的都知道,Eclipse中导入.so文件很简单,根据支持的CPU框架直接放在/libs目录下面就好了,项目打包时会直接就打包到了apk中。然而AndrodStudio这样做却不行,它只会把识别jar打包到apk中,而so文件就被遗忘在风中,这是为什么呢?

    其实我们只要认真看看项目工程中的module下的build.gradle中的代码我们就能明白,为什么libs中jar能被打包到apk中,而so文件却不能。

    compile fileTree(dir:'libs',include: ['*.jar']) 就是这句代码申明了将项目中/libs下的jar一起打包到apk中。

    那么问题来了,是不是我们把这个地方的 *.jar换成 */*.so (因为so文件有多种CPU支持,所以要在前面加上*/)就可以将so文件一起打包到apk中了呢?答案当然是不可以,因为这种方式仅支持jar类型。

    其实要想将so文件打包到apk中,和上面的也差不多,只需要在build.gradle里面申明一下就好了。

    在build.gradle中的android下面添加

    sourceSets {

        main {

            jniLibs.srcDirs= ['libs']

        }

    }

    这串代码,就可以实现将module下libs中的so一起打包到apk中了。

    sourceSets是Android打包时资源集,包含了很多目录资源指向,如:src、libs、res等目录都是在这里面指定了路径,ide才会在编译的时候去编译路径下面的资源代码。

    main就和我们java的class中的main方法一样,是sourceSets的执行主入口方法。

    jniLibs表示jni引用libs,.srcDirs用于指定路径。

    (以上内容纯属个人看法,有不对的地方望大家提出改正)

    相关文章

      网友评论

        本文标题:AndroidStudio导入.SO文件

        本文链接:https://www.haomeiwen.com/subject/xswsfxtx.html