作者:手机用户2702937647 | 来源:互联网 | 2023-09-06 21:45
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
- 新建工程
- 新建moudle(library类型)
新建之后我们看下moudle的目录,主要是在build-intermediates这层目录下! 编译一下项目,此时再来看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的使用
- jar的使用
方法1:将jar拷贝到app中的libs,右键add as library选择app即可。然后在你的gradle中会增加上依赖的那句话。
方法2:通过studio的试图添加,步骤自行百度谷歌 - aar的使用
同样,还是拷贝到app的libs下。然后在gradle中配置如下
//指定在libs目录下的文件
repositories {flatDir {dirs 'libs'}
}
//添加依赖
dependencies {compile(name: 'aar的名字', ext: 'aar')
}
ps:如果有引入其他的第三方lib,是打不进aar中的。所以如果有引用的话,app中除了aar外的其他第三方库也需要拷贝过来引用上!