热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

jar和aar在AndroidStudio中的生成和使用

jar和aar在AndroidStudio中的生成和使用当前环境AndroidStudio3.0jdk1.8认识jar和aarjar:javaapplicati

jar和aar在Android Studio中的生成和使用




当前环境

Android Studio3.0
jdk1.8


认识jar和aar

jar:java application resource 只包含class文件和清单文件
aar:Android application resource 包含class文件和其他所有的资源文件
如此便一目了然了,如果你的库需要资源文件的话,jar是满足不了的,只能使用aar。


生成jar和aar


  1. 新建工程
  2. 新建moudle(library类型)
    新建之后我们看下moudle的目录,主要是在build-intermediates这层目录下!
  3. 编译一下项目,此时再来看moudle的目录

经过以上简单的三步,已经看到了我们的jar和aar的生成过程和存放目录。是不是很简单,继续往下看!
4. 用jd-jui打开我们的jar,如图:

哈哈,我们什么也没写。接下来我们在myLibTest这个moudle里边编写一个文件JarTest,再编译得到jar,继续打开这个jar
编写的内容是:
再次打开jar后是这样的:

这次终于看到内容了,但或许你又会说,BuildConfig这是干嘛的,都没用,不想要。我们再来看一个目录:

编译之后,所有的文件都会生成对应的.class文件,我们的jar包也就是将这些class文件都打进去了。
问题1:像R.class和BuildConfig.class这些没用的不需要打进去。那么能否设置过滤。
问题2:这个jar的名字能否自己指定,以及存放的路径能否自己指定
针对以上问题,我们来了解一下修改gradle来生成jar包
gradle代码示例:

//Copy类型task makeJar(type: Copy) {//删除存在的delete 'build/libs/myLib.jar'//设置要拷贝的文件的目录。debug or releasefrom('build/intermediates/bundles/debug/')//拷贝到的那个目录into('build/libs/')//将classes.jar放入build/libs/目录下//include ,exclude参数来设置过滤include('classes.jar')exclude('**/R.class')exclude('**/BuildConfig.class')exclude { it.name.startsWith('R$')}//重命名rename ('classes.jar', 'myLib.jar')}//生成jarmakeJar.dependsOn(build)

接下来在我们的命令终端Terminal输入gradlew makeJar执行一下就ok了。然后再来看我们的目录结构:

如代码中所述,在build下多出了libs目录,我们重新命名后的jar包就在这个目录下。


jar和aar的使用


  1. jar的使用

    方法1:将jar拷贝到app中的libs,右键add as library选择app即可。然后在你的gradle中会增加上依赖的那句话。

    方法2:通过studio的试图添加,步骤自行百度谷歌
  2. aar的使用
    同样,还是拷贝到app的libs下。然后在gradle中配置如下

//指定在libs目录下的文件
repositories {flatDir {dirs 'libs'}
}
//添加依赖
dependencies {compile(name: 'aar的名字', ext: 'aar')
}






ps:如果有引入其他的第三方lib,是打不进aar中的。所以如果有引用的话,app中除了aar外的其他第三方库也需要拷贝过来引用上!


推荐阅读
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 本文整理了一份基础的嵌入式Linux工程师笔试题,涵盖填空题、编程题和简答题,旨在帮助考生更好地准备考试。 ... [详细]
  • malloc 是 C 语言中的一个标准库函数,全称为 memory allocation,即动态内存分配。它用于在程序运行时申请一块指定大小的连续内存区域,并返回该区域的起始地址。当无法预先确定内存的具体位置时,可以通过 malloc 动态分配内存。 ... [详细]
  • C语言是计算机科学和编程领域的基石,许多初学者在学习过程中会感到困惑。本文将详细介绍C语言的基本概念、关键语法和实用示例,帮助你快速上手C语言。 ... [详细]
  • 本文介绍了如何在Linux和Windows环境中使用C语言中的beep函数来生成不同频率的声音,并提供了详细的代码示例和解释。 ... [详细]
  • 短视频app源码,Android开发底部滑出菜单首先依赖三方库implementationandroidx.appcompat:appcompat:1.2.0im ... [详细]
  • 第14周实践项目(4)-验证平衡二叉树
    问题**Copyright(c)2015,烟台大学计算机学院*Allrightsreserved.*文件名称:test.cpp*作者:王敏*完成日 ... [详细]
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • Hadoop的文件操作位于包org.apache.hadoop.fs里面,能够进行新建、删除、修改等操作。比较重要的几个类:(1)Configurati ... [详细]
  • 本文详细介绍了在 CentOS 7 系统中配置 fstab 文件以实现开机自动挂载 NFS 共享目录的方法,并解决了常见的配置失败问题。 ... [详细]
  • 零拷贝技术是提高I/O性能的重要手段,常用于Java NIO、Netty、Kafka等框架中。本文将详细解析零拷贝技术的原理及其应用。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 在软件开发过程中,经常需要将多个项目或模块进行集成和调试,尤其是当项目依赖于第三方开源库(如Cordova、CocoaPods)时。本文介绍了如何在Xcode中高效地进行多项目联合调试,分享了一些实用的技巧和最佳实践,帮助开发者解决常见的调试难题,提高开发效率。 ... [详细]
  • NX二次开发:UFUN点收集器UF_UI_select_point_collection详解
    本文介绍了如何在NX中使用UFUN库进行点收集器的二次开发,包括必要的头文件包含、初始化和选择点集合的具体实现。 ... [详细]
author-avatar
手机用户2702937647
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有