随着项目越来越多,代码的复用就变得异常重要,这时候就要进行模块化编程,就是把一些通用的组件或者类库做成单独的模块,其他项目直接进行引用就好。针对Android开发最常见的就是Android Library,在Gradle出现之前引用Android Library的方式也很繁琐,但是有了Gradle一切变得非常简单方便。
aar
何为aar?大家都知道jar文件把,如果你有一个Android Library项目,可以很容易的导出jar文件,然后在其他项目中很方便的引用,aar和jar类似,区别就是一个Android Library项目导出的jar文件不能包含资源文件,比如一些drawable文件、xml资源文件之类的,所以这就有很大的限制,在gradle之前我们要引用带资源文件的Android Library必须要把整个library导入进来进行引用,但是有了gradle之后,Android Library项目可以直接导出成aar,然后其他项目像引用jar的方式直接方便的引用。
以上基本知识部分参考 http://www.stormzhang.com/android/2015/03/01/android-reference-local-aar/
获取aar包
在android studio中获取aar包很简单,我们只需要把我们Android Library项目运行一下就可以在该library项目下的build/output/aar文件下找到,aar包了(如果你还不知道如何创建library项目,请左转去找百度,这里就不说创建library项目了),有时这里有两个aar包,一个是发布版本,一个是debug版本,用哪一个都可以。(library项目发布运行和debug运行都有过,会出现这种情况,一般只有一个)。
在项目中如何引用aar包
假如这里我们有一个test.aar包,首先我们把该包拷贝到libs文件加下,(当然你也可以拷贝到其他地方,不过没试过)在我们的project工程的build.gradle文件中做如下配置(红色背景)
buildscript { repositories { jcenter() flatDir { dirs 'libs' //this way we can find the .aar file in libs folder } } dependencies { classpath 'com.android.tools.build:gradle:1.2.3' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { jcenter() flatDir { dirs 'libs' //this way we can find the .aar file in libs folder } } }
在我们的项目module的build.gradle文件中做如下配置(红色背景)
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:22.2.1' compile 'com.android.support:recyclerview-v7:22.+' compile 'com.android.support:cardview-v7:22.+' /*引入andbase_library库*/ compile project (':andbase_library') compile(name:'test', ext:'aar') }这样就可以啦,亲测有效。