AndroidStudio最新打包jar和aar的方法

DeMonnnnnn發表於2018-09-05

環境

文章的執行環境為:
AndroidStudio版本:3.1.4
Gradle版本:3.1.4

前言

在日常開發中我們常常需要引用其他專案的程式碼。有如下幾種方式:

  1. 通過gradle,maven等遠端匯入。
  2. 複製對應的Library到自己的Project下,直接匯入Library。
  3. 用AndroidStudio開啟程式碼,然後打包成jar或者arr,複製到專案的libs資料夾下,匯入即可。

方法1適合開源專案,否則需要通過購買GitHub私有專案或者搭建私服來使用。
方法2雖然簡單,但是如果多個Project多次使用則非常麻煩。
方法3則是打包一次,直接複製jar或arr就可多次使用。

今天就來簡單介紹一些方法2和方法3,和在最新的AndroidStudio和Gradle下如何打包jar和arr。

PS:最新的AndroidStudio和Gradle下雖然打包aar變的簡單,但是打包jar變得麻煩許多,生成的路徑也變了,這裡需要注意。

arr和jar的區別

  1. jar:僅打包了class檔案和配置清單檔案,其res等資原始檔並沒有打包。適合傳統的Java或者沒有資原始檔的Android專案。
  2. arr:打包了所有的class、res等資原始檔。適合Android專案。

匯入Library

新建一個Library,複製,編輯所需程式碼。也可以通過Import Module的方式匯入。
如果是直接複製的Library,則需要配置工程的settings.gradle,在include後新增對應的Library,如下:

include ':app', ':mylibrary'

如果沒有資料夾上沒有出現樹狀圖的小標誌,可以Build—>Rebuild Project。

匯入如下圖:
這裡寫圖片描述

打包aar

直接看圖簡單了事。如下:
這裡寫圖片描述

這裡寫圖片描述

最新的Gradle可以直接implementation files(‘xxxxxx.aar’)匯入aar,而非傳統的compile(name: ‘xxxxx’, ext: ‘aar’),無需額外配置程式碼,非常的方便。

打包jar

複製如下程式碼到Library下的build.gradle中:

//根據Library名稱生存jar包到build目錄下
//可根據自己需求更改
task againMakeJar(type: Copy) {
    def name = project.name //Library名稱
    delete 'libs/' + name + '.jar' //刪除之前的舊jar包
    from('build/intermediates/packaged-classes/release/') //從這個目錄下取出預設jar包
    into('libs/') //將jar包輸出到指定目錄下
    include('classes.jar')
    rename('classes.jar', name + '.jar') //自定義jar包的名字
}
againMakeJar.dependsOn(build)

注意:最新的jar預設生成路徑是:build/intermediates/packaged-classes/release/,而非build/intermediates/bundles/release/

匯入如下圖:

這裡寫圖片描述

複製生成的jar包到制定專案的libs目錄下,然後右鍵選擇Add as Lisbrary,即可成功匯入。

參考

Android studio 將 Module 打包成 Jar 包
android studio library生成jar包和aar的方法總結

相關文章