[Android][Android Studio] Gradle项目中添加JNI生成文件(.so文件)
为了适应潮流使用Android Studio还是有半年多了!
对于从Eclipse迁移项目到Android Studio中添加.jar文件和.so文件无疑是一件很重要也是很头疼的问题!
在最新版本中,默认是自动打包libs下面的所有.jar文件的,所以jar不用多讲了。
加入.SO(这个是要看你的项目Gradle版本)
提示:都是设置build.gradle文件
(1)老版本,好像是指0.5以前的,具体不太记得了,方法如下:
task copyNativeLibs(type: Copy) {from(new File(project(':MyProject').buildDir, 'native-libs')) { include '**/*.so' }into new File(buildDir, 'native-libs')
}tasks.withType(Compile) { compileTask -> compileTask.dependsOn copyNativeLibs }clean.dependsOn 'cleanCopyNativeLibs'tasks.withType(com.android.build.gradle.PackageApplicationTask) { pkgTask ->pkgTask.jniDir new File(buildDir, 'native-libs')
}
(2)新版本,具体版本号忘记了,反正如果你下载的是最新的那么自带就是最新的编译器。
这个版本我现在知道的有三种办法做到打包.SO文件
(2.1)打包前先生成.Jar文件后自动解包到apk文件
task nativeLibsToJar(type: Zip, description: 'create a jar archive of the native libs') {destinationDir file("$buildDir/native-libs")baseName 'native-libs'extension 'jar'from fileTree(dir: 'libs', include: '**/*.so')into 'lib/'
}tasks.withType(Compile) {compileTask -> compileTask.dependsOn(nativeLibsToJar)
}
下面一句话就是打包生成目录(build\native-libs)中的.jar文件
compile fileTree(dir: "$buildDir/native-libs", include: 'native-libs.jar')
(2.2)手动生成.Jar文件后自动解包到apk文件
这个方式需要自己手动进行.SO文件压缩,具体步骤为:将所有需要使用的.so文件压缩为.zip文件(zip中的文件目录结构为: lib/armeabi/*.so)然后把zip文件后缀改为.Jar然后放到libs生成apk就ok
默认就是自动打包所有.Jar文件:
dependencies {compile fileTree(dir: 'libs', include: '*.jar')
}
(2.3)这也就是现在 我正在使用的方式(推荐),其实弄了大半天无非就是把.SO文件打包到APK的lib文件夹中,假如仔细阅读了Gradle的使用方法,自然就知道其实Gradle官方在新版已经自动实现了打包.SO文件的.很简单级就是在配置的android节点下加入下面的内容就ok:
sourceSets {main {jniLibs.srcDirs = ['libs']}}
其他地方无需修改,整个项目的配置文件如下:
apply plugin: 'android'android {compileSdkVersion 19buildToolsVersion "19.0.0"defaultConfig {minSdkVersion 16targetSdkVersion 19versionCode 1versionName "1.0"}buildTypes {release {runProguard falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'}}sourceSets {main {jniLibs.srcDirs = ['libs']}}
}dependencies {compile fileTree(dir: 'libs', include: ['*.jar'])
}
这不就是很简单么,无需手动打包,也无需很复杂的打包拷贝命令,简单的操作就ok。可以说多看看官方文档是多么的重要。
原创作品,转载请注明出处!
QIUJUER(qiujuer@live.cn)
[Android][Android Studio] Gradle项目中添加JNI生成文件(.so文件)相关推荐
- 关于gradle项目中使用queryDsl生成Q类的问题的解决方式
关于gradle项目中使用queryDsl生成Q类的问题的解决方式 1.在idea中勾选下面的选项 2.检查实体类上是否有@Entity注解 3.编译项目并检查项目中的Q类是否被编译 4.重新构建项目
- 初次使用Android Studio问题,Android Studio往项目中添加图片
2019独角兽企业重金招聘Python工程师标准>>> 习惯了iOS往项目中直接拖拽的图片的习性,第一次往Android Studio中添加图片为难了,怎么也拖拽不进去,为难了,研究 ...
- android项目添加图片,安卓开发:往项目中添加并使用图片
一 往项目中添加图片文件 (1)iOS项目 在iOS项目中,如果往项目中添加的图片是png格式的,就是往Assets.xcassets文件夹中添加. 如果不是png格式,比如jpg格式的图片,就不能往 ...
- Android项目中添加依赖的方式
先来看看常用的三种依赖的区别: 库依赖(Library dependency): 是通过访问网址的形式将依赖库相应版本下载到本地; 文件依赖(File dependency): 是将已经下载下来的依赖 ...
- 关于如何正确地在android项目中添加第三方jar包
在android项目中添加第三方jar包虽然不是一个很复杂的问题,但是确实给很多开发者带来了不小的困扰.我自己就曾经碰到过calss not found exception ...
- 文件管理搜不到Android 里的文件,Android:在原始文件夹中添加文件后窗口找不到内容容器视图...
正在获取窗口找不到内容容器视图.这个错误询问应用程序何时将检查权限Android:在原始文件夹中添加文件后窗口找不到内容容器视图 我注意到,对于穿着应用程序,我正在将穿着apk复制到原始文件夹中.它有 ...
- Android 4.0.4-在build.prop中添加属性
Android 4.0.4-在build.prop中添加属性 2013-10-07 16:40:56| 分类: 默认分类|举报|字号 订阅 1.在*.rc文件中用setprop添加,例如在源码and ...
- vue 打开html流_在vue项目中添加一个html页面,开启本地服务器
在vue项目里新增一个不需要登录的页面,那么我只能新增一个html页面了,不经过路由,直接在浏览器输入路径打开,那么就需要用到本地服务器, 1.vue里面的html页面最好放过在public文件夹里面 ...
- VB.NET 在项目中添加App.config的配置
右击项目,选择属性, 在属性中选择Settings选项卡,Scope选择User 这样就会在项目中添加了App.config配置 内容: <?xml version="1.0" ...
- Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作
Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作 Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作 1>. 创建一个控制台程序 2 ...
最新文章
- paramiko在windows上的安装和使用
- [UIKit学习]08.关于自定义控件
- 最近新学的小东西和单词
- python输入三个整数、输出最大的数_题目:使用Python编程,输入三个整数x,y,z,请把这三个数由小到大输出...
- 【Flink】Flink消费Kafka数据时指定offset的五种方式
- adb指令通过uid控制_图文教程:PC利用adb工具通过CMD命令控制手机动作(备忘笔记)...
- 浅谈Python-IO多路复用(select、poll、epoll模式)
- java encode乱码_java 中文乱码问题的解决
- java this()函数_Java经典面试题之(如何正确的使用this?)
- 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 F题 Overlapping Rectangles(线段树)
- MySQL UTF8与UTF8MB4
- 程序员生存定律--如何尽快变的稍微专业一点
- Callable 接口控制线程
- matlab 命令打开ANSYS,matlab如何调用ansys
- 西门子atch指令详解_轻松记住西门子PLC指令,简单明了!
- 计数器代码php,php的计数器程序_php
- Golang的基础数据类型
- php月考勤统计,考勤系统功能实现——统计
- Qt绘制出思岚雷达扫描到的轮廓
- Java 推箱子游戏
热门文章
- 【ZOJ 1964】【尺取】Bound Found【暑期 No.3】
- 对 n = 2,3,...,300, 判断那些 Mersenne 数 M_n=2^n-1 是素数 | matlab 源码
- 能力提升综合题单Part 8.1 图的存储与遍历
- linux shell捕获异常,shell脚本中如何获取错误输出
- 2019.03.30 图解HTTP
- 对于PHP面试知识点的小结
- openjudge1.2
- centos 7 升级python2.7 到3.5
- mysql 开启用户远程登录
- Zookeeper之事件监听机制