打aar混淆包和集成aar的方法

ejhg7221 9年前發布 | 88K 次閱讀 aar Android開發 移動開發 Android

最近項目中有用到發布混淆aar的需求,網上有很多方法,但都不夠全面,這里把自己整理的結果做個匯總,避免重復收集浪費時間

環境要求

android studio(該方法是針對AS的)

初始需求

把你項目中的某一個模塊,打包成一個混淆的aar,集成到其他的項目中,同事暴露的接口不混淆,你這個aar的依賴庫跟其他項目的依賴庫不能沖突

需求詳情

假設目前的項目有三個module,A, B, C,A是application類型,B, C是library,關系是A依賴B,B依賴C,現在要把B模塊打包成一個混淆的aar發布給其他的項目使用,其他項目拿到B的aar以后,集成要OK,并且依賴沒問題

好,背景情況介紹完了,下面是解決方法

1 依賴關系剝離

把B模塊中的一些依賴的庫全部移到C中,比如網絡庫,圖片庫和其他第三方的庫,統統剝離,放到C中,B只是一個純粹的實現某個需求一個模塊庫,不包含其他任何第三方依賴庫,這種剝離是為了方便后期其他項目的接入

2 配置B的混淆

  • 把B的入口方法統一到一個類中,在混淆文件中加上keep的方法,讓這個類不被混淆,同事R文件也能混淆,配置方式如下:
    -keep class *.R -keepclasseswithmembers class **.R$* { public static <fields>;}
    其他的混淆配置看項目具體的情況了,一般實力類不混淆,不屬于這個主題,不多介紹了
  • build.gradle配置
    要配置對應生成aar的那個模塊的build.gradle,其他的模塊的不要改動,配置方式如下:
    buildTypes {
      release {
          minifyEnabled true
          proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
      }
      }
    沒看錯,只要配置release就可以了,把minifyEnabled設置成ture就可以了

3 生成aar

生成aar非常簡單,只要運行項目,在對應的build路徑下會自動生成aar,比如我這個demo項目的aar路徑是:

E:\practise\AarDemo\mylibrary\build\outputs\aar
里面有兩個aar,一個是debug,一個是release,拿release那個,debug那個是沒有混淆的

4 發布aar

  • 把你要發布的aar,和該aar說依賴第三方的庫整理好,一起給要新的項目,新的項目如果已經有依賴那些第三方的庫,則無需重新依賴,對于沒有依賴的,就要配置依賴關系,這個就是第一步剝離依賴的好處,避免多余的依賴
  • 在新的項目的application模塊的libs文件夾下面放上該aar文件,同事在該模塊對應的build.gralde中加上下面的配置
    dependencies {
          compile(name:'mylibrary-release', ext:'aar')
         }
    repositories{
          flatDir{
      dirs 'libs'
          }
        }

結束語

aar的依賴其實網上很多了,我這里只是針對我目前的這個需求,做了一個整理,避免以后有同樣的需求,還盲目的查找資料

我傳了一個demo到github上面,可以參考下。

文/韋東锏

 本文由用戶 ejhg7221 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!