【盜墓筆記】圖解使用fat-aar方式在AndroidStudio中打包嵌套第三方aar的aar

       將一些項目中的一些獨立功能打包成aar,不只能於項目解耦,還可以提供給其它項目使用相同的功能,可謂是爲項目開發帶來了很大的便利。最近第一次作sdk,碰到一些問題,花了很多時間才解決,因此這裏作一下簡單的記錄,方便之後參考,也但願可以給碰到一樣問題的朋友提供一些便利。android

       本篇包含以下兩種打包場景:git

    (1)Module中不含有其它aargithub

    (2)Module中嵌套第三方aarapp

一、Module中不含有也不依賴其它第三方aargradle

    (1)在Project中新建Module,這裏以默認名爲app的Module來舉例,在app中實現須要封裝的功能。ui

    (2)進入到app的build.gradle文件xml

       在①處,將 apply plugin: 'com.android.application' 修改成 apply plugin: 'com.android.library',該Module會變成了一個library。blog

       在②處,註釋掉applicationId這一行。因爲打包後該Module再也不是一個獨立的應用,而是一個其它項目的附屬,因此它不配擁有獨立的applicationId!(開個玩笑,但願這個aar不要生氣罷工哈-_-)。開發

    (3)進入到AnroidManifest.xml中部署

 

        在③處,若是有自定義的Application類,把這行刪掉。由於打包成aar並被其它項目引用後,該AnroidManifest.xml會和所在項目的AnroidManifest.xml合併,所謂「一山不容二虎」,因此這裏必須刪除掉。

       在④處,icon這一行也要去掉。道理和上面同樣,否者aar被引入到項目中並安裝後,桌面上會出現兩個圖標,其中一個還不能運行。

    (4)進入到Gradle界面

        點擊⑤處,等上幾秒鐘,就可以生成aar了,aar路徑以下圖:

 

二、該Module中包含有其它aar

       Module依賴其它aar的場景,多是該aar在Module的libs目錄中,也可能在某個獨立的Module中,只是主Module依賴了該aar所在的Module。這裏我碰到的是第一中狀況,也就是該aar在Module的libs目錄中的狀況,這裏我們要用到fataar方案。

    (1)先看看總體Project的部署狀況,A處是嵌套的aar

 

     (2)進入到B處的build.gradle文件

        文件中要加上D處這一行,應用fat-aar。因爲是libs中的aar是嵌套的,因此在E處須要用embed。

     (3)進入到C處的build.gradle,也就是整個Project的build.gradle文件

       按照上圖中的,添加F、G、H處的代碼。

       結合場景1的操做,再根據上述的3個步驟,這個嵌套了第三方aar的目標aar就生成了。

三、答疑

       問:若是咱們只採用(1)中的步驟,而不是使用fataar的方式來打包嵌套第三方aar包的aar,那會出現什麼問題呢?

       答:若是隻採用(1)中的方式,也能生成aar。可是咱們的項目在使用時就須要依賴咱們生成的aar,還要在項目中依賴這個第三方aar,可見這並非咱們想要看到的。固然,還有其它的打包方式來解決aar嵌套aar問題的方案,fataar方式只是其中一種,至於其它方式筆者沒有研究過,讀者能夠本身嘗試一下。

四、推薦閱讀

       以下連接中包含了更多使用fataar打包複雜aar的場景,碰到相同場景的朋友能夠參考該連接:https://github.com/kezong/fat-aar-android 。

相關文章
相關標籤/搜索