1. 程式人生 > >Android Studio打包apk,aar,jar包

Android Studio打包apk,aar,jar包

1jar vs aar   

文字我們將講解android studio打包apk,aar,jar包的相關知識。apk包就是android系統的安裝包,這裡沒什麼好說的,aar包是android中獨有的類庫包,而jar包是java中特有的類庫包,在具體的介紹打包之前,我們先來aar包和jar包的區別。

jar包與aar包的區別

  • jar是java位元組碼檔案(class檔案)的歸檔檔案,其不包含android中的資原始檔等資訊;

  • aar是android中特有的歸檔檔案,既包含位元組碼檔案也包含android的資原始檔等;

區別:大家都知道jar檔案把,如果你有一個Android Library專案,可以很容易的匯出jar檔案,然後在其他專案中很方便的引用。

aar和jar類似,區別就是一個Android Library專案匯出的jar檔案不能包含資原始檔,比如一些drawable檔案、xml資原始檔之類的,所以這就有很大的限制,在gradle之前我們要引用帶資原始檔的Android Library必須要把整個library匯入進來進行引用,但是有了gradle之後,Android Library專案可以直接匯出成aar,然後其他專案像引用jar的方式直接方便的引用。

具體可參看下圖:

  • aar包解壓之後的結構: 


  • jar包解壓之後的目錄結構: 

怎麼樣?jar包和aar包的區別很明顯吧。

2打包apk檔案   

在android studio中打包apk檔案有兩種方式:


  • 通過gradle配置輸出apk檔案

  • 執行Generate singed apk操作獲得apk檔案

下面我們將分別介紹一下這兩種方式的具體步驟,首先我們先看一下如何通過gradle配置的方式,輸出apk檔案。

2.1 gradle配置打包指令碼
  • 配置打包型別


可以發現這裡的buildType中配置了release包和debug包,以及各自的簽名信息:

singingConfig singingConfigs.release

更加具體的簽名信息配置在singingCongis中,下面我們來看一下其實如何設定的

  • 配置簽名信息


這樣我們就配置好了apk打包的簽名信息,然後我們可以開啟Build Variants操作框了…

  • 配置Build Variants

這裡可以看到我們在mobile module中定義了兩個buildType,其中debug和release Type,並且其打包時預設使用的簽名信息就是我們剛剛配置的各自的簽名信息。

這裡需要說明的是android studio中module預設都會有debug和release兩個buildType,就算你什麼都不配置的話,這裡也會存在這兩個buildType,而且,除了這兩個之外你還可以配置額外的定製化的buildType,比如你想打一個資訊的debug01包,使用另外的一套簽名信息:

  • 在buildType節點下新增


  • 新增新的簽名信息

debug01 {
    storeFile file("bbb.keystore")
    storePassword "222222222"
    keyAlias "bbb.keystore"
    keyPassword "222222222"
}
  • 配置Build Variants

可以發現這時候Build Variant中mobile module多了一個buildType:debug01,其就是我們剛剛配置的debug01 buildType,並且使用的是另外的一套簽名信息,若我們選中debug01,則android studio預設run或者是build apk的時候就會編譯debug01版本的apk了。

  • 執行run app或者是Build apk操作

這樣我們最終就能夠輸出一個apk格式的安裝包了。

2.2 執行Generate singned apk操作

除了上面的通過gradle配置的方式生成apk檔案,我們還可以執行Generate singned apk操作,通過這樣的操作,我們也可以獲得一個apk的輸出檔案,具體步驟如下:

  • 執行Build –> Generate singed apk操作

  • 填寫相應的簽名信息 


  • 選擇打包的型別 

好吧,上面就是我們所要介紹的打包apk的兩種方式。下面我們在講解一下如何通過android studio打包aar和jar。

3打Jar包   

目前通過android studio打包jar,基本有兩種方式:

1.建立module,然後編譯完成之後 module中自動的建立了相關的jar檔案

這裡的classes.jar就是module相關的jar包,我們可以將其更改名稱之後拷貝到app下的lib目錄中;

2.另一種方式其實跟第一種方式是一樣的,只不過其是通過gradle指令碼實現的

app為我們的主工程,librarydemo是我們要將其生成jar包的model. 
在librarydemo中加入如下程式碼:

task makeJar(type: Copy) {
    delete 'build/libs/mysdk.jar'
    from('build/intermediates/bundles/release/')
    into('build/libs/')
    include('classes.jar')
    rename ('classes.jar', 'mysdk.jar')
}

makeJar.dependsOn(build)
//在終端執行生成JAR包
// gradlew makeJar

在Terminal中鍵入 gradlew makeJar 回車看到如下所示就OK了: 

4打aar包   

其實打aar包和jar包類似,只不過是其目錄變化了而已:

可以看到同樣需要其作為library,而且其生成的目錄為:/build/output/aar/

好了,以上就是如何通過androd studio打包apk,aar和jar的相關內容了。