如何使用android so文件
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 ')?
}?