android studio生成aar包並在其餘工程引用aar包

注:本文大量參考http://blog.csdn.net/getchance/article/details/47257389,並在其基礎上作了少數修改,在這裏感謝原文做者!java

1、什麼是.aar包文件

.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

2、生成.aar包步驟:

①.用android studio打開一個工程,而後新建一個Module,新建Module時候選擇Android Library,後面按新建普通工程操做app

②.新建Module 類型爲android Library 後以下圖所示eclipse

 

③.在新建的Module中編寫完代碼後,接下來編譯整個工程後就會自動生成aar包,包的路徑在新建的Module ==》 build ===》outputs ==>aar目錄下。 如圖gradle

 

3、在其餘AndroidStudio工程引用.aar包

①.將.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時,要對源碼備份,一旦誤刪了源碼就很麻煩了!

相關文章
相關標籤/搜索