Android如何生成本地或者遠端aar

語言: CN / TW / HK

highlight: a11y-dark

在一些特殊的場合,比如原始碼的保密,sdk的提供和使用,都會把一定的功能邏輯抽取成一個aar,提供至需要的人,在Android的開發中,這種方式司空見慣,只聞使用方式,不知內部實現,加深了原始碼的保護措施,又使得功能可以正常開發,相對於一些公司有著外包人員的協同開發,一些主要的功能,不想洩露,那麼就可以採取這種方式。

aar的方式,每次更新後,只需要動態的改變版本號,就可以實現新增的功能和邏輯,和主線的功能保持分離而又牽扯聯絡,這種方式的使用,整合簡單,在乎的是結果,而非實現的過程,最重要的是對於原始碼的一個保護機制;Android中的aar主要是針對於Android Library而言的,可以簡單的理解為是對Android Library的打包,這個包的格式既為.aar,是一個二進位制歸檔檔案,包含所有資源,class以及res資原始檔。

本地aar生成以及使用

第一步:建立一個Library(因為aar的生成是以Library的形式打包),並建立.gralde檔案,儲存路徑自己定義,檔名字也自己定義,如下圖:

image.png

第二步,在已建立的.gradle檔案裡書寫對應生成aar的程式碼,需要注意,每次更新程式碼,版本號需要對應的升級,打出aar的路徑也需要自己來定義,這裡我生成到了E盤下:

```gradle apply plugin: 'maven' ext { PUBLISH_GROUP_ID = 'com.abner'//組id PUBLISH_ARTIFACT_ID = 'maven'//具體的專案id PUBLISH_VERSION = '1.0.1'//版本號 } //maven-路徑 uploadArchives { repositories.mavenDeployer { repository(url: "file:///E:\github\mavenaddress") pom.project { groupId project.PUBLISH_GROUP_ID artifactId project.PUBLISH_ARTIFACT_ID version project.PUBLISH_VERSION } } }

//以下程式碼會生成 jar 包原始檔,如果是不開原始碼,請不要輸入這段 //aar包內包含註釋 task androidSourcesJar(type: Jar) { classifier = 'sources' from android.sourceSets.main.java.sourceFiles }

artifacts { archives androidSourcesJar } ```

第三步,在Library裡的build.gradle,進行引入:

image.png

以上三步完成之後,點選Android studio右側的Gradle,找到對應的Library下的Tasks下的upload,雙擊uploadArchives 就會在第二步中自己定義的路徑下打出自己的aar。

image.png

生成的aar檔案:

image.png

複製生成的aar,就可以傳送給別人進行依賴使用了,這樣別人就可以呼叫你Library下所提供的業務邏輯了,具體使用,複製aar到libs下,然後需要使用的module下加上如下圖的引入即可:

image.png

以上的本地aar就生成了,需要注意的是,對於Android studio的版本的升級,可能遇到右側的uploadArchives沒有顯示的問題,大家可以按照以下方式,解決一下:

image.png

比如我們本地生成了aar,不想每次更改程式碼後,就要替換aar,我們就可以採取以下的方式,進行本地引入,以後,只需要改版本號即可:

第一步,在根目錄的build.gradle檔案下進行依賴我們本地的路徑,也就是上邊我們生成aar檔案的地方。

image.png

第二步,在需要的module裡進行引入,這樣以後aar有更改,我們只需更改版本號即可:

image.png

遠端aar生成以及使用

以上,我們只能自己本地使用,或者把aar複製給別人使用,一旦更改頻率很高,每次的更換是很麻煩了,能不能讓他人使用的時候,如果更改了,也只需更改版本號就可以了呢,答案必須可以,大家可以選擇任何一個程式碼託管平臺進行實現,這裡我用gitee也就是碼雲來作為例子演示,說到這裡,為了保證原始碼的絕對安全,其實一般在公司都有自己的私服,上傳至私服即可。

通過本地的方式,我們已經在本地生成了對應的aar檔案,改為遠端,無非就是把對應的aar檔案上傳至對應的倉庫地址即可。

1、無倉庫地址:

需要在giee上建立自己的倉庫,得到倉庫地址:

image.png

進入本地的maven目錄也就是aar目錄,依次執行下邊git命令,需要注意,關聯自己的遠端地址:

js git init git add . git commit -m "first commit" git remote add origin http://gitee.com/AbnerAndroid/android-maven.git git push -u origin master

相關命令註釋:

```js git init //初始化倉庫

git add . //新增到本地暫存區 或用 git add (檔案name)

git commit -m “first commit” //提交到本地倉庫

git remote add origin 遠端倉庫地址 //新增遠端倉庫

git pull origin master //把遠端倉庫master分支拉取到本地倉庫master分支

git push -u origin master //把本地倉庫的master分支推送到遠端倉庫master分支 ```

2、已有倉庫地址,需要注意,關聯自己的遠端地址:

js git remote add origin http://gitee.com/AbnerAndroid/android-maven.git git push -u origin master

把本地生成的aar推到遠端之後,如下圖:

image.png

點開之後

image.png

具體呼叫就和本地的其他專案呼叫類似了,如下

第一步,在根目錄的build.gradle檔案下進行依賴我們上傳的倉庫路徑,以raw/master結尾:

image.png

第二步,在需要的module裡進行引入,這樣以後aar有更改,我們只需更改版本號即可:

image.png

以上就是簡單的本地和遠端aar的生成和使用,前邊說過,公司一般內部有自己的私服,正常都是上傳到自己的私服中,當然如果是自己開源,或者公司沒有要求,那麼我們上傳到哪都是可行的。