打aar混淆包和集成aar的方法
最近項目中有用到發布混淆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,其他的模塊的不要改動,配置方式如下:
沒看錯,只要配置release就可以了,把minifyEnabled設置成ture就可以了buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }
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的依賴其實網上很多了,我這里只是針對我目前的這個需求,做了一個整理,避免以后有同樣的需求,還盲目的查找資料
本文由用戶 ejhg7221 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!