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 https://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 https://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的生成和使用,前邊説過,公司一般內部有自己的私服,正常都是上傳到自己的私服中,當然如果是自己開源,或者公司沒有要求,那麼我們上傳到哪都是可行的。