天天看點

aar打包、釋出到maven、帶第三方依賴的打包、帶本地module依賴的打包一、普通的aar打包二、帶有第三方依賴的aar打包三、帶有本地module依賴的aar打包

打包Maven(裡面有第三方依賴和本地module依賴)

  • 一、普通的aar打包
  • 二、帶有第三方依賴的aar打包
  • 三、帶有本地module依賴的aar打包

PS: aar 和 jar 包的差別是,arr支援将layout、照片等資源檔案一起打包,而jar不可以。

aar打包、釋出到maven、帶第三方依賴的打包、帶本地module依賴的打包一、普通的aar打包二、帶有第三方依賴的aar打包三、帶有本地module依賴的aar打包

背景簡單介紹:

app依賴lib 1,lib1依賴 lib2,lib1 裡面還有第三方的gihub依賴,lib2裡面也什麼都沒有依賴,就是一個單純的封裝的工具module,現在的任務是:

1、lib2做成aar。(配合講解普通的aar如何打包)

2、lib1做成aar。(配合講解帶第三方依賴的lib怎麼打包成aar,帶本地lib module的怎麼打包成aar)

一、普通的aar打包

如果将lib2 打包成aar,那麼就屬于最基礎的打包方式了。

但是這種打包也有好幾種:

1、可以用gradlew 指令打包;

2、手動點選gradle task打包;

3、手動點選build 打包。

我這裡隻示範 3 、手動點選build 打包。

aar打包、釋出到maven、帶第三方依賴的打包、帶本地module依賴的打包一、普通的aar打包二、帶有第三方依賴的aar打包三、帶有本地module依賴的aar打包

先選中你要打aar的 module,再點選Build,然後點選 Make Module “***”

就會生成一個aar,生成的aar在該module的 build/outputs/aar下

aar打包、釋出到maven、帶第三方依賴的打包、帶本地module依賴的打包一、普通的aar打包二、帶有第三方依賴的aar打包三、帶有本地module依賴的aar打包

上可能會有人有疑問,為啥是debug.aar,這個是可以改的,如下圖:

aar打包、釋出到maven、帶第三方依賴的打包、帶本地module依賴的打包一、普通的aar打包二、帶有第三方依賴的aar打包三、帶有本地module依賴的aar打包

把這個debug改成release,那麼build 出來的aar就是release的了。

你可以将你的aar提供給别人使用。

可能有人覺得這樣答出來的aar需要拷貝來拷貝去,不怎麼好,那麼下面我介紹maven方式的時候剛好也解決了這個問題。

二、帶有第三方依賴的aar打包

aar打包、釋出到maven、帶第三方依賴的打包、帶本地module依賴的打包一、普通的aar打包二、帶有第三方依賴的aar打包三、帶有本地module依賴的aar打包

為了跟我最後要講的第三方依賴和module并存的情況,我這裡先暫時将module依賴注釋掉。

1、首先聲明,這種帶依賴的有兩種方式打aar:

(1)第一種:跟我上面介紹的一樣,你直接打aar即可,但是别人用你的aar的時候,隻要通路的類裡面包含了第三方依賴的東西,就會提示NoClassFoundException哦,解決辦法是你把你依賴的所有第三方依賴拷貝給他,他将這些依賴再在他的項目裡面依賴一下就可以正常通路你的aar了。

(2)第二種:使用maven或github形式生成的aar。我這裡暫時隻介紹送出到maven。

2、分為線上和離線生成兩種:

如果你有maven 位址或者是公司的maven位址,你可以直接傳上去。當然最好肯定是現在本地測試完上傳(上傳上去的也可以删除)。

離線測試;

線上測試送出(也會生成本地aar);

離線和線上都會生成aar,并且離線和線上的差別其實就是配置的maven位址不一樣。如下圖:

aar打包、釋出到maven、帶第三方依賴的打包、帶本地module依賴的打包一、普通的aar打包二、帶有第三方依賴的aar打包三、帶有本地module依賴的aar打包

上圖是應用maven插件。

aar打包、釋出到maven、帶第三方依賴的打包、帶本地module依賴的打包一、普通的aar打包二、帶有第三方依賴的aar打包三、帶有本地module依賴的aar打包

我紅色框出來的上面是線上的位址和賬号密碼,下面框出來注釋的是離線的位址,意思就是生成的aar會送出到本地倉庫。

如何生成aar?

aar打包、釋出到maven、帶第三方依賴的打包、帶本地module依賴的打包一、普通的aar打包二、帶有第三方依賴的aar打包三、帶有本地module依賴的aar打包

找到Gradle 任務裡面去找到你剛剛在build.gradle 裡面配置的uploadArchvies 任務,輕按兩下啟動即可。

運作完畢之後,如果你選擇的是離線的送出到了本地.m2庫,自己可以去翻翻看,如果選擇的是直接送出到了maven線上倉庫,就需要去通路那個位址去看了。并且别人用的時候需要配置你放的那個maven庫的位址、賬号、密碼,在project的 build.gradle 裡面配置一下,配置完的效果如下:

aar打包、釋出到maven、帶第三方依賴的打包、帶本地module依賴的打包一、普通的aar打包二、帶有第三方依賴的aar打包三、帶有本地module依賴的aar打包

本地倉庫位址:我用的是mac,mac的位址一般在.m2目錄下,這回目錄是隐藏的,你可一直接通過“前往檔案夾”或者是解除隐藏既可以看到這個檔案夾了。

aar打包、釋出到maven、帶第三方依賴的打包、帶本地module依賴的打包一、普通的aar打包二、帶有第三方依賴的aar打包三、帶有本地module依賴的aar打包

你一層一層點進去就能找到你送出到本地倉庫的aar了。

使用的時候直接在project 的 build.gradle配置一下,新增可以通路本地maven庫就可以了:

aar打包、釋出到maven、帶第三方依賴的打包、帶本地module依賴的打包一、普通的aar打包二、帶有第三方依賴的aar打包三、帶有本地module依賴的aar打包

配置好可以通路本地maven庫之外,記得将你的生成的aar依賴位址放到app的module 的build.gradle裡面 implemention哦,比如:

aar打包、釋出到maven、帶第三方依賴的打包、帶本地module依賴的打包一、普通的aar打包二、帶有第三方依賴的aar打包三、帶有本地module依賴的aar打包

這個位址是你在前面配置的groupId那張照片裡面配置的送出到maven庫的依賴位址。

三、帶有本地module依賴的aar打包

重點來了,之是以寫這篇blog,是為了記錄這個。如果要打包的lib裡面有本地module依賴,如何打包。

當然您可以直接把您的module給别人,别人添加也行,但是我要介紹的和記錄的是送出到maven裡面,這樣用起來更友善。

如下圖:

aar打包、釋出到maven、帶第三方依賴的打包、帶本地module依賴的打包一、普通的aar打包二、帶有第三方依賴的aar打包三、帶有本地module依賴的aar打包

Lib1 不光有 api 第三方依賴,還有 project 依賴。

我這裡采用的是github的一個工具fat-aar工具。首先需要将插件引入,然後應用:

aar打包、釋出到maven、帶第三方依賴的打包、帶本地module依賴的打包一、普通的aar打包二、帶有第三方依賴的aar打包三、帶有本地module依賴的aar打包
aar打包、釋出到maven、帶第三方依賴的打包、帶本地module依賴的打包一、普通的aar打包二、帶有第三方依賴的aar打包三、帶有本地module依賴的aar打包
apply plugin: 'com.android.library'
apply plugin: 'maven'
apply plugin: 'com.kezong.fat-aar'
           
aar打包、釋出到maven、帶第三方依賴的打包、帶本地module依賴的打包一、普通的aar打包二、帶有第三方依賴的aar打包三、帶有本地module依賴的aar打包

在要打包(比如我介紹的lib 1)的 build.gradle 的android 節點裡面加上上圖的配置。

最後需要對第三方依賴、本地的module依賴進行改造:

aar打包、釋出到maven、帶第三方依賴的打包、帶本地module依賴的打包一、普通的aar打包二、帶有第三方依賴的aar打包三、帶有本地module依賴的aar打包

這樣就改造完了。

然後打包的方式跟我上面介紹的一樣,還是去執行uploadArchives task就可以生成了。