为了适应潮流使用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文件)相关推荐

  1. 关于gradle项目中使用queryDsl生成Q类的问题的解决方式

    关于gradle项目中使用queryDsl生成Q类的问题的解决方式 1.在idea中勾选下面的选项 2.检查实体类上是否有@Entity注解 3.编译项目并检查项目中的Q类是否被编译 4.重新构建项目

  2. 初次使用Android Studio问题,Android Studio往项目中添加图片

    2019独角兽企业重金招聘Python工程师标准>>> 习惯了iOS往项目中直接拖拽的图片的习性,第一次往Android Studio中添加图片为难了,怎么也拖拽不进去,为难了,研究 ...

  3. android项目添加图片,安卓开发:往项目中添加并使用图片

    一 往项目中添加图片文件 (1)iOS项目 在iOS项目中,如果往项目中添加的图片是png格式的,就是往Assets.xcassets文件夹中添加. 如果不是png格式,比如jpg格式的图片,就不能往 ...

  4. Android项目中添加依赖的方式

    先来看看常用的三种依赖的区别: 库依赖(Library dependency): 是通过访问网址的形式将依赖库相应版本下载到本地; 文件依赖(File dependency): 是将已经下载下来的依赖 ...

  5. 关于如何正确地在android项目中添加第三方jar包

                  在android项目中添加第三方jar包虽然不是一个很复杂的问题,但是确实给很多开发者带来了不小的困扰.我自己就曾经碰到过calss not found exception ...

  6. 文件管理搜不到Android 里的文件,Android:在原始文件夹中添加文件后窗口找不到内容容器视图...

    正在获取窗口找不到内容容器视图.这个错误询问应用程序何时将检查权限Android:在原始文件夹中添加文件后窗口找不到内容容器视图 我注意到,对于穿着应用程序,我正在将穿着apk复制到原始文件夹中.它有 ...

  7. Android 4.0.4-在build.prop中添加属性

    Android 4.0.4-在build.prop中添加属性 2013-10-07 16:40:56|  分类: 默认分类|举报|字号 订阅 1.在*.rc文件中用setprop添加,例如在源码and ...

  8. vue 打开html流_在vue项目中添加一个html页面,开启本地服务器

    在vue项目里新增一个不需要登录的页面,那么我只能新增一个html页面了,不经过路由,直接在浏览器输入路径打开,那么就需要用到本地服务器, 1.vue里面的html页面最好放过在public文件夹里面 ...

  9. VB.NET 在项目中添加App.config的配置

    右击项目,选择属性, 在属性中选择Settings选项卡,Scope选择User 这样就会在项目中添加了App.config配置 内容: <?xml version="1.0" ...

  10. Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作

    Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作 Entity Framework 的小实例:在项目中添加一个实体类,并做插入操作 1>. 创建一个控制台程序 2 ...

最新文章

  1. paramiko在windows上的安装和使用
  2. [UIKit学习]08.关于自定义控件
  3. 最近新学的小东西和单词
  4. python输入三个整数、输出最大的数_题目:使用Python编程,输入三个整数x,y,z,请把这三个数由小到大输出...
  5. 【Flink】Flink消费Kafka数据时指定offset的五种方式
  6. adb指令通过uid控制_图文教程:PC利用adb工具通过CMD命令控制手机动作(备忘笔记)...
  7. 浅谈Python-IO多路复用(select、poll、epoll模式)
  8. java encode乱码_java 中文乱码问题的解决
  9. java this()函数_Java经典面试题之(如何正确的使用this?)
  10. 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 F题 Overlapping Rectangles(线段树)
  11. MySQL UTF8与UTF8MB4
  12. 程序员生存定律--如何尽快变的稍微专业一点
  13. Callable 接口控制线程
  14. matlab 命令打开ANSYS,matlab如何调用ansys
  15. 西门子atch指令详解_轻松记住西门子PLC指令,简单明了!
  16. 计数器代码php,php的计数器程序_php
  17. Golang的基础数据类型
  18. php月考勤统计,考勤系统功能实现——统计
  19. Qt绘制出思岚雷达扫描到的轮廓
  20. Java 推箱子游戏

热门文章

  1. 【ZOJ 1964】【尺取】Bound Found【暑期 No.3】
  2. 对 n = 2,3,...,300, 判断那些 Mersenne 数 M_n=2^n-1 是素数 | matlab 源码
  3. 能力提升综合题单Part 8.1 图的存储与遍历
  4. linux shell捕获异常,shell脚本中如何获取错误输出
  5. 2019.03.30 图解HTTP
  6. 对于PHP面试知识点的小结
  7. openjudge1.2
  8. centos 7 升级python2.7 到3.5
  9. mysql 开启用户远程登录
  10. Zookeeper之事件监听机制