Android 引入so包的两种方式
来源:互联网 发布:mac字典扩展 编辑:程序博客网 时间:2024/06/06 05:01
参考:http://jingyan.baidu.com/article/e3c78d644baaf23c4d85f57d.html
http://blog.csdn.net/wulianghuan/article/details/44567001
两个方法,我使用的是方法二,方法一没有测试。
方法一、
1、在src/main中添加 jniLibs文件夹 ,把.so复制进去
2、在build.gradle中就添加这么几行 , 看图
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
3、然后make project
4、切换到android结构下,你会看到 jniLibs 中.so已经变成了.jar文件,证明已经成功
注意:此方法成功的android studio版本是1.2.1.1
方法二、
其实很简单。这里以集成JPUSH为例,看一下so文件如何引入到编译环境,最终到JNI直接可以调用该so文件。
首先,在我们的Module的根目录中建立libs目录,将jpush集成SDK中的so文件分别拷入,截图如下:
然后就是编写我们的build.gradle文件。
关于so文件引入的配置很简单,代码配置如下:
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) }
自定义一个任务,在其中指定项目所依赖的so文件的目录,这里用了**/*.so来写,为了省事,指定需要拷入的目录 into "lib",那么动态运行库就被拷入到lib目录中。
完整的build.gradle文件如下:
apply plugin: 'com.android.application'android { compileSdkVersion 21 buildToolsVersion "21.1.0" defaultConfig { applicationId "com.wujay.footerballstar" minSdkVersion 8 targetSdkVersion 21 versionCode 1 versionName "1.0" } buildTypes { release { runProguard false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } 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) }}dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:21.0.0' compile files('libs/jpush-sdk-release1.7.2.jar') compile files('libs/umeng_sdk.jar') compile files('libs/libammsdk.jar')}
0 0
- Android 引入so包的两种方式
- AndroidStudio 引入so包的两种方式
- Android Studio正确添加so库的两种方式
- android 引入v7包的正确方式
- 类的两种引入方式
- 引入XSD的两种方式
- Android Studio signed apk 引入so包
- Android Studio 项目中引入jar包及so包
- Android——JNI加载so两种方式
- FreeMarker中引入公共文件的两种方式
- react native 引入module的两种方式
- iOS xib文件引入的两种方式
- webpack成功引入d3 v4的两种方式
- spring引入非属性文件的两种方式
- springMvc静态资源引入的两种方式
- Android Studio-引入jar包及so文件
- Eclipse开发Android程序引入jar包和so文件
- Android Studio如何引入jar包和so库?
- 正则表达式判断日期和时间
- 注册大朋账户
- LifecycleProcessor not initialized
- Linux ALSA声卡驱动之六:ASoC架构中的Machine
- 欢迎使用CSDN-markdown编辑器
- Android 引入so包的两种方式
- 第十一周-OJ-E求两整数的最大公约数与最小公倍数
- poj1195 二维树状数组【pascal】
- caffe源码 之 Blob类
- redis
- Java 简介
- Python开发环境Spyder安装方法
- 安卓获得view的宽高
- IntelliJ IDEA 15快捷键大全