1.aar不仅可以打包代码,还可以打包资源文件(jar只能打包代码)
2.aar本身是一个zip文件,可以手动改后缀名为zip然后解压打开,里面有classes.jar包、res文件、AndroidManifest文件(其中jar包里面是class文件,所以引入aar可以提升编译速度)
附录一些命令行命令:
打包多个Java文件到一个指定文件夹中:javac -d 指定文件夹 java文件1 java文件2
jar包清单文件内容:Mainfest-Version:版本号 Main-Class:程序入口
打包多个class文件和清单文件到一个jar包:
jar cvfm 指定生成的jar包 清单文件 -C classes目录 .
打包多个class文件到一个jar包(不包含清单文件)
jar cvf jar包名 A.class B.class
3.aar的minSDKVersion必须小于等于主App的minSDKVersion
4.aar里面如果自带混淆规则的话,尽量把规则写具体,因为这些规则会被带到主App,避免影响主App的混淆
5.通过AS打包的aar不会将依赖的三方库打包进去,不过在上传到maven时,会生成一个pom文件记录依赖,如果引入maven上aar包时不想引入它的依赖库,可以这样:
//正常依赖 implementation 'com.chemao.android:chemao-sdk:1.2.3' //关闭全部依赖传递-方法1 implementation 'com.chemao.android:chemao-sdk:1.2.3@aar'
6.aar中资源可能和主App内资源命名冲突,推荐在aar的build.gradle中加入命名前缀:
android { resourcePrefix "<前缀>" }
7.引入aar后,aar的清单文件会和App的清单文件合到一起,如果也有冲突,可以使用tools:replace解决
参考: