1.首先明白一个道理。

  Android Studio编译的时候会自动将项目生成jar和aar的,我一开始以为jar需要自己单独生成,其实AS已经自动生成了,网上找的很多资料都是一个复制的过程而已。

  只不过在AS3.1以前是放到build/intermediates/bundles文件夹里面。

  然而现在换成了build\intermediates/packaged-calsses文件夹里面了,以后也不知道会放哪儿了,这是一坑。

2.通常第一步都是一个新建一个module。

  如果直接从已经完成的项目出发,可以直接修改build.gradle第一行,改成apply plugin:'com.android.library';

  但是这么一修改,可能会出现很多错误,什么参数错误,什么资源文件有问题等。

  保险起见,从“0”开始。

  新建一个module,注意选择Android Library类型。

  把一些需要打包的文件统统写到这个library里面,如果有什么错误的话,就一个一个去解决吧。

  将module完善之后,就开始打包了。

3.在module的build.gradle配置生成jar的方案。

  在文末添加如下代码:

//修改jar名字+将指定jar生成的地方
task makeJar(type:Copy){
//如果之前存在,则先删除
delete 'build/libs/test.jar'
//设置拷贝的文件
from('build/intermediates/packaged-classes/debug/')
//生成jar包后的文件目录位置
into('build/libs/')
//include,exclude参数来设置过滤
include('classes.jar')
//重命名
rename('classes.jar','test.jar')
} makeJar.dependsOn(build)

  

4.利用命令行执行该方案。

  在AS最下方的Terminal中输入命令即可。

  如果是MAC电脑:./gradlew makeJar

          如果报错,参考一下这篇文章。

  如果是Windows电脑: gradlew makeJar

          如果报错,一般都是没有配置gradle环境,谷歌一下解决方案呗。

  幸运的话,可以在build/libs文件夹下看到生成的jar文件了。

5.简单理解一下jar和aar的区别吧。

  参考文章:AndroidStudio项目打包成jar。

  在Build Success后,在module的build/outputs/aar文件夹下会有一个aar文件。

  在module的build/libs或自己定义的其他位置下会有一个jar文件。

  二者区别:

  jar:  只包含了class文件与清单文件 ,不包含资源文件,如图片等所有res中的文件。

  aar:  包含jar包和资源文件,如图片等所有res中的文件。

  aar编译完就自动生成了,所以不同担心资源问题。

6.如何使用aar文件。

  很简单。

  i.将aar文件拷贝至目标项目的app/libs文件夹下。

  ii.在app下的build.gradle中添加如下代码:    

    分别是这两块:  

repositories{
flatDir{
dirs 'libs'
}
}
implementation(name:'librarydemo-release',ext:'aar')

  Sync Now一下,如果没有报错,应该就是成功引用了。

  看一下依赖的外部类,已经有了刚才我们引用的library了。

  

7.如何引用jar文件。

  这个网上搜一大把。方法也是类似的,更加简单。

  先将jar拷贝至目标项目的app/libs文件夹下。

  mac电脑操作如下:右键->add as library->选择当前mudule->OK.

  windows电脑类似的。

8.其实jar文件也是可以使用资源文件的。

  稍微有点麻烦。

  首先将jar包中用到的资源文件放到自己的项目中。

  然后在自己的项目中利用反射获取。参考文章点我。

AS 3.1 项目打包成jar或aar的更多相关文章

  1. Eclipse中将含有图片资源的项目打包成jar文件

    前言: 最近学了GUI编程和UDP协议,心血来潮想做一个局域网内的聊天软件,前期都还算顺利,直到后来将整个项目打包成jar文件时遇到了困难.如图: 自己设置的图标不见了,但是也没有默认的图标,说明图片 ...

  2. 将项目打包成jar,如何又将jar还原成项目

    一.将项目打包成jar 第一步: 选择项目,鼠标右键,选择export ,出现如下 接下来就是点击Next,Next,最后点击Finish 后 会生成jar 二.将jar还原成项目 第一步 用反编译工 ...

  3. (3)Maven快速入门_3在Eclipse中创建Maven项目打包成jar

    Eclipse中创建Maven项目 new ---> maven project  ----> next 如下 普通java项目 选择  如下 quickstart 创建项目 : 输入 G ...

  4. AndroidStudio项目打包成jar

    AndroidStudio项目打包成jar 前言:在eclipse中我们知道如何将一个项目导出为jar包,现在普遍AndroidStuido开发,这里一步一步详加介绍AS项目打包成jar,jar和ar ...

  5. SpringBoot项目打包成jar后,启动脚本

    将springboot项目打包成jar后,上传至服务器,每次都需要手敲命令,重新部署项目,可将这些命令写入脚本中,直接运行. 启动脚本(start.sh): CUR_PATH=$(cd "$ ...

  6. 用gradle把springboot项目打包成jar

    ``` 用gradle把springboot项目打包成jar ```### build.gradle 中添加 buildscript { repositories { mavenLocal() mav ...

  7. maven将自己的springboot项目打包成jar包后,作为工具包引入其他项目,找不到jar中的类

    将springboot项目打包成jar包,作为工具包导入项目后,找不到jar中的类. 原因是:springboot项目使用了自动的打包插件. 原先的插件配置: <build> <pl ...

  8. Springboot项目打包成jar运行2种方式

    最近公司有个项目需要移植到SpringBoot框架上,项目里面又有许多第三方jar包,在linux服务器上最方便的就是用jar的方式来运行SpringBoot项目了,因此我研究了2种打jar包的方式, ...

  9. maven把项目打包成jar包后找不到velocity模板的bug

    使用springmvc 开发时候要实现发送velcotiy模板邮件,在配置正常后,在本地测试正常后,使用maven打包成jar包后,报以下错误, Caused by: org.apache.veloc ...

随机推荐

  1. July 20th 2017 Week 29th Thursday

    The darkness is no darkness with you. 有了你,黑暗将不再是黑暗. The darkness will not be driven out if we failed ...

  2. Oracle基础操作

    数据库的定义.作用介绍: 什么是数据库? 按照数据结构来组织.存储和管理数据的建立在计算机存储设备上的仓库. 数据库的发展史: 起始于1962年,1968年在IBM出现 数据库在测试过程中的作用: 需 ...

  3. c++中左值的含义

    <<cpp primer plus 6th edition>>中的原文(Chapter 8 Adventures in Functions): What is an lvalu ...

  4. 关于浏览器被http://www.51jetso.com/劫持

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/wwkaven/article/details/36373447     近期,新装了一下系统.安装软 ...

  5. [AHOI2004]数字迷阵

    嘟嘟嘟 应该算一道结论题吧. 首先很明显的一点,就是对于ai,j,我们只用求出ai,1就行了,剩下的就是斐波那契和矩阵快速幂的事. 至于如何求ai,1,用两种方法,但是哪一个我都不懂为啥,网上也没有解 ...

  6. Windows 下制作CentOS7安装U盘

    本文属于另类的U盘制作方法(更多U盘安装见U盘安装CentOS ),如何安装CentOS,请参考<安装指南> 以下列出了,完整的制作步骤: 1.下载安装镜像 选择一个合适的镜像网站,比如网 ...

  7. 【洛谷P2279】[HNOI2003]消防局的设立

    消防局的设立 题目链接 贪心:每次取出深度最大的节点,若没有被覆盖到,要想覆盖它, 最优的做法显然是将它的爷爷设为消防局 (因为该节点深度为最大,选兄弟.父亲所覆盖的节点,选了爷爷后都能够覆盖) 用优 ...

  8. python对文件进行读写操作

    转:http://sucre.iteye.com/blog/704077 ython进行文件读写的函数是open或file file_handler = open(filename,,mode) Ta ...

  9. direct path write 等待事件导致数据库hang

    同事反应十几分钟前数据库好像挂起了一会,让我排查数据库是否存在什么问题. 第一反应看当前数据库还是否有什么等待事件,结果有direct path write等待事件. 于是抓了问题时间段20分钟的AS ...

  10. 『ACM C++』 PTA 天梯赛练习集L1 | 042-43

    记录刷题情况 ------------------------------------------------L1-042--------------------------------------- ...