赞
踩
Android Studio3.0
jdk1.8
jar:java application resource 只包含class文件和清单文件
aar:Android application resource 包含class文件和其他所有的资源文件
如此便一目了然了,如果你的库需要资源文件的话,jar是满足不了的,只能使用aar。
编译一下项目,此时再来看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 release from('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') } //生成jar makeJar.dependsOn(build)
接下来在我们的命令终端Terminal输入gradlew makeJar执行一下就ok了。然后再来看我们的目录结构:
如代码中所述,在build下多出了libs目录,我们重新命名后的jar包就在这个目录下。
//指定在libs目录下的文件
repositories {
flatDir {
dirs 'libs'
}
}
//添加依赖
dependencies {
compile(name: 'aar的名字', ext: 'aar')
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。