如何使用android so文件

相信很多朋友都在用安卓?在studio的开发中,我们遇到了如何引入第三方so文件的问题,但是第三方官方只给出了ADT环境下的集成方式。

Android studio默认使用Gradle编译方式,与ADT编辑方式不同,那么so文件应该如何引入?

其实挺简单的。这里以集成的JPUSH为例,来看看so文件是如何引入编译环境的,最后so文件可以直接调用到JNI。

首先在我们模块的根目录下建立libs目录,分别复制jpush集成SDK中的so文件。截图如下:

然后编写我们的build.gradle文件。

so文件引入的配置很简单,代码配置如下:

[html]?观平原?复制?打印?

任务?nativeLibsToJar(类型:?Zip?描述:?“创造?答?罐子?存档?的?那个?原生?libs”)?{?

destinationDir?文件(" $projectDir/libs ")?

baseName?“Native_Libs2”?

延伸?“罐子”?

从哪里?文件树(目录:?“libs”,?包括:?"**/*.所以”)?

变成?“lib”?

}?

tasks.withType(JavaCompile)?{?

compileTask?-& gt;?compile task . dependson(nativeLibsToJar)?

}?

自定义任务,在该任务中指定项目所依赖的so文件的目录。这里,你用**/*。所以要写它。为了省事,你把需要复制的目录指定到“lib”中,然后动态运行时就会被复制到lib目录中。

完整的build.gradle文件如下所示:

[html]?观平原?复制?打印?

申请?插件:?' com.android.application '?

安卓?{?

compileSdkVersion?21?

buildToolsVersion?"21.1.0"?

defaultConfig?{?

applicationId?" com.wujay.footerballstar "?

minSdkVersion?8?

targetSdkVersion?21?

versionCode?1?

versionName?"1.0"?

}?

构建类型?{?

释放?{?

runProguard?假的?

proguardFiles?getDefaultProguardFile(' proguard-Android . txt '),?proguard-rules.pro?

}?

}?

任务?nativeLibsToJar(类型:?Zip?描述:?“创造?答?罐子?存档?的?那个?原生?libs”)?{?

destinationDir?文件(" $projectDir/libs ")?

baseName?“Native_Libs2”?

延伸?“罐子”?

从哪里?文件树(目录:?“libs”,?包括:?"**/*.所以”)?

变成?“lib”?

}?

tasks.withType(JavaCompile)?{?

compileTask?-& gt;?compile task . dependson(nativeLibsToJar)?

}?

}?

依赖?{?

编译?文件树(目录:?libs ',?包括:?['*.jar'])?

编译?com . Android . support:app compat-V7:21 . 0 . 0 '?

编译?文件(' libs/jpush-SDK-release 1 . 7 . 2 . jar ')?

编译?files('libs/umeng_sdk.jar ')?

编译?文件(' libs/libammsdk.jar ')?

}?