注:本文大量参考http://blog.csdn.net/getchance/article/details/47257389,并在其基础上作了少数修改,在这里感谢原文做者!java
.aar包很是相似eclipse的.jar包,是android studio下打包android工程中src、res在lib后生成的.aar文件,.aar包导入其余android studio 工程后,其余工程能够方便引用源码和资源文件。android
可是与.jar包不一样的是,.aar包里默认带有res资源文件。AndroidStudio也能够生成.jar包,可是AS自动生成的.jar只能包含java的基础类,而且不带有res资源文件,这点与eclipse-ADT生成的.jar不一样!若是想让AS生成带有android类库和res资源文件的.jar包,也能够作到,可是却比较麻烦,因此我倾向作安卓,就用aar包吧!windows
①.用android studio打开一个工程,而后新建一个Module,新建Module时候选择Android Library,后面按新建普通工程操做app
②.新建Module 类型为android Library 后以下图所示eclipse
③.在新建的Module中编写完代码后,接下来编译整个工程后就会自动生成aar包,包的路径在新建的Module ==》 build ===》outputs ==>aar目录下。 如图gradle
①.将.aar包复制到lib目录下 ui
②.配置app-module下的build.gradle文件:spa
加入.net
repositories {
flatDir {
dirs 'libs'
}code
}
compile(name:'aar包名称', ext:'aar')
完整的配置文件:
apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { applicationId "com.william.jtplistonandroiddemo" minSdkVersion 15 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } repositories { flatDir { dirs 'libs' } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.4.0' compile(name:'JTPlistOnAndroid', ext:'aar') }
③.编译一次工程
图复制到lib下后,点击下图按钮让aar包能够在在代码中引用,或者编译一次工程
以上操做成功后能够在扩展包下看到被引用的aar包文件
4、aar内部结构
我尝试在windows电脑上解压缩了aar包,发现其内部最核心的实际上是一个jar包,jar包中全是变异后的.class文件,除此以外aar中还包含有资源文件及manifests。
我尝试解压jar,并对其中的.class文件反编译,反编译产生的.java文件的内容与在AS中直接打开该文件获取的内容是一致的!也就是说在as上直接查看aar包中的类,看到的其实就是反编译后产生的文件,这就印证了其实AS是自带反编译功能的。
另外就是在打包arr时,要对源码备份,一旦误删了源码就很麻烦了!