ubuntu Android studio中引入so文件的方法

这几天将eclipse ADT项目移植到android studio中发现,jni中so没有导入到apk中,运行后发现提示“can’t find lib**.so”,折腾一段时间。

本人环境如下:
studio vesion: 1.2.2
android gradle:1.2.3
PC:ubuntu 14.04

首先,在我们的Module的根目录中建立libs目录(如果有就不用了),将so文件分别拷入。

网上好多方法说,在build.gradle文件添加如下:

.src-sh}
1
2
3
4
5
6
7
8
9
10
11
task nativeLibsToJar(type: Zip, description: "create a jar archive of the native libs") {
destinationDir file("$projectDir/libs")
baseName "Native_Libs2"
extension "jar"
from fileTree(dir: "libs", include: "**/*.so")
into "lib"
}
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn(nativeLibsToJar)
}

我没有尝试成功, 可能本人是linux平台原因吧,最后发现两种方式。

1.1 手动添加

修改build.gradle:

.src-sh}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
android{
....
sourceSets {
main {
...
jniLibs.srcDirs = ['libs']
}
}
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/notice.txt'
exclude 'META-INF/ASL2.0'
exclude 'lib/mips/*.so' //这里可以替换具体的so文件
exclude 'lib/armeabi/*.so'
exclude 'lib/x86/*.so'
}
}

1.2 指定路径

修改build.gradle:

.src-sh}
1
2
3
4
5
6
7
8
9
10
11
android{
splits {
abi {
enable true
reset()
include 'x86', 'x86_64', 'arm64-v8a', 'armeabi-v7a', 'armeabi'
universalApk false
}
}
}

可以根据自己需要添加。

/home/hujd/project/org/blog/android_import_so.html

JasonThink wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!