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. 推荐一个可以把网页背景色调成护眼色的Chrome扩展应用

    程序员一天有10几个小时要面对着电脑,老是这种白晃晃的屏幕,谁的眼睛受得了? 我在网上逛了一圈,找到一个比较实用的Chrome扩展应用,可以一键实现将Chrome打开网页的背景色修改成护眼的豆沙绿,这 ...

  2. System IPC 与Posix IPC(共享内存)

    系统v(共享内存) 1.对于系统V共享内存,主要有以下几个API:shmget().shmat().shmdt()及shmctl(). 2.shmget()用来获得共享内存区域的ID,如果不存在指定的 ...

  3. bzoj2816 [ZJOI2012]网络

    Description http://www.lydsy.com/JudgeOnline/upload/zjoi2012.pdf 正解:$link-cut \ tree$. $LCT$板子题,直接维护 ...

  4. 二十九、利用 IntelliJ IDEA 进行代码对比的方法

    我们会有这样的需求,即:想对比出两个不同版本代码的区别.如何实现? 第 1 种:如果我们是从 SVN 检出的项目,并且想比较本地代码与从 SVN 检出时的代码相比都有那些区别,可以按如下步骤操作, 如 ...

  5. 移动端web开发技巧和常见问题

    常见问题 1.移动端如何定义字体font-family 三大手机系统的字体: ios 系统 默认中文字体是Heiti SC 默认英文字体是Helvetica 默认数字字体是HelveticaNeue ...

  6. 【题解】洛谷P1541 [NOIP2010TG] 乌龟棋(类似背包的DP)

    题目来源:洛谷P1541 思路 类似背包的题 总之就是四种卡牌取的先后顺序不同导致的最终ans不同 所以我们用一个四维数组每一维分别表示第几种取了几张的最大分数 然后就是简单DP解决 代码 #incl ...

  7. 陈正冲老师讲c语言之内存的申请malloc() 和释放free()

    1.如何使用 malloc 函数 不要莫名其妙,其实上面这段小小的对话,就是malloc的使用过程.malloc是一个函数,专门用来从堆上分配内存.使用malloc函数需要几个要求: 内存分配给谁?分 ...

  8. Mark一下在模仿团购App搭建页面时犯的低级错误

    1.关于Xib拖线错误 2.下面这个错误的根源其实是代码提示时直接敲下了回车,没看仔细,导致后来找了好久才发现该错误,郁闷啊!

  9. 使用BSRR和BRR寄存器直接操作STM32的I/O端口

    STM32的每个GPIO端口都有两个特别的寄存器,GPIOx_BSRR和GPIOx_BRR寄存器,通过这两个寄存器可以直接对对应的GPIOx端口置'1'或置'0'. GPIOx_BSRR的高16位中每 ...

  10. stm32之remap

    1.GPIO的重映射属于AFIO,不同类型不同引脚数单片机情况不一样,比如下图: 2.AFIO 下面还分default/Remap,如果用到了remap就得使用: GPIO_PinRemapConfi ...