·在软件工程中,分支是最基本的设计原理,就如同现实中的砖、瓦、钢筋、水泥一样,模块化、组件化的分工,让我们整个软件世界变得井井有序,丰富多彩
Java Jar
在java开发中,添加组件简单的以添加jar文件依赖为途径,jar有两个含义:
- jar文件格式: java Archive 就是zip文件格式,文件后缀是jar,包含了java class metadata 资源(文本、图片等)
- java archive tool:JDK中的工具,用来生成jar包文件
jar在Android开发中的不足
在Android应用资源中,java sourse Resouse以及苏旭的so文件和jar包,用jar格式可以很好的处理 java Source但对于目录比较复杂的Android Res目录,二进制so文件 jar显得乏力,当你收到一个第三方SDK zip包,要添加到自己的项目中,解压后是一个jar包和一堆文件,不停的复制粘贴甚至解决冲突的时候,心里肯定不满意这种组件发布方式
aar
什么是aar
为了解决Android开发中组件引用的问题,引入aar格式。也是简单的zip格式。
定义:The ‘aar’ bundle is the binary distribution of an Android Library Project.
Zip包中的内容有:
- /AndroidManifest.xml (mandatory)
- /classes.jar (mandatory)
- /res/ (mandatory)
- /R.txt (mandatory)
- /assets/ (optional)
- /libs/*.jar (optional)
- /jni//*.so (optional)
- /proguard.txt (optional)
/lint.jar (optional)
其中,R.txt是aapt –output-text-symbols命令的输出。
生成aar
1.建立一个module
在其build中配置
引入
apply plugin: 'maven'
脚本如下
uploadArchives{
repositories {
mavenDeployer {
repository(url: "file://localhost/" + "D:/testAAR"+ "/extras/")//生产地址
//repository(url: "file://localhost/" + System.getenv("PATH_HOME") + "/extras/")//建议PATH_HOME环境变量配置 有利于协同开发
pom.version = '1.0'
pom.groupId = 'com.muheda'
pom.artifactId = 'testaar' //生成目录为com.muheda.testaar.1.0
}
}
}
然后在Terminal输入命令gradlew uploadArchives 成功则在对应地址生成文件
在另一个项目引用
配置根本目build
allprojects {
repositories {
google()
jcenter()
maven {
url "file:///" + "D:/testAAR" + "/extras/"//为文件所在地址
}
}
}
项目build添加依赖
api('com.muheda:testaar:1.0')
注意:两个module相互依赖 大依赖的module加不进去被依赖module的功能 需要先把被依赖的打成aar在依赖的module引用 然后打依赖的aar则功能全有
给aar包的时候全给com.muheda.testaar(若aar里面有三方的引用 咋不能只发.aar)