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