1. 程式人生 > >Android 二次打包(封裝)AAR實用指南

Android 二次打包(封裝)AAR實用指南

前言

上次文章Android SDK開發與使用的那些事兒說到如何在aar裡整合匯入的aar,也就是二次封裝aar的問題,一帶而過,難免不過癮。在封裝這條路上也遇到了不少坑,現在將此方法詳細記錄下來。
說到二次打包aar這個需求應該算小眾了,谷歌一圈下來也找不到答案,Android Studio到目前也還不支援這個操作,一開始遇到這個問題的時候可以說非常蛋疼了...

原理

aar作為一個“特殊字尾”的壓縮包,在匯入專案中編譯的時候無非就是合併,而Android Studio專案有個module的說法,他們兩者都可以看做是project的library,既然Android Studio不能自動處理這個合併,那我們何不嘗試一下手動解決?

Android Library形式匯入AAR解壓包

  1. 解壓AAR檔案:

      aar解壓圖.png

    可以看到,aar裡包括了各種各樣的資原始檔(解壓包大致一樣,略有差異),但是有的是空資料夾,現在res,jni這些資料夾我們就熟悉了吧!如果你的aar解壓出來僅有so庫與jar包,那就不用往下看了,直接提取出來複製到專案對應目錄下編譯即可!

  2. 新建一個Module


     
    Android Library.png

    一路next下去,包名任選(反正也是要拋棄的...)

  3. 複製classes.jar包到新建的module(示例library名為:mylibrary)的libs目錄下,如圖


      複製classes.jar檔案到libs目錄下.png
  4. 展開mylibrary下的src資料夾,首先刪掉資料夾內的所有東西,接著將aar解壓資料夾中的assets、res、AndroidManifest.xml等檔案(夾)複製進去,複製jni資料夾下的相關檔案到新建的jniLibs資料夾。總之,套路就是按正常的專案結構對應來放置資源。當然,以上幾個複製步驟是aar中包含該資源的情況下才需要。


      src_main.png
  5. 在app—build.gradle檔案下將該module compile進去


      引入module project.png

    至此,aar匯入完畢,可以直接使用原arr中的方法,加入自己的業務邏輯再次打包成aar的需求也就迎刃而解了

總結

以module形式手動匯入aar的方式,曲線解決了目前Android Studio不支援在aar基礎上二次封裝成aar這個需求。總結起來就是大膽假設小心求證,瞭解一些專案合併/打包的原理是很有幫助的,在這探索過程中也得到了好友的指點,在這感謝。最後希望這篇文章分享出來能有所幫助吧!