
logo
![fpg][fpgsvg] ![License][licensesvg]
About
FreeProGuard 為方便廣大 Android 開發者們今后防混淆配置,很久之前便有打算做這個免混淆庫了,只是拖到最近才有空來實現該庫,該庫利用了 consumerProguardFiles
來傳遞 aar 中的防混淆配置到主工程中,所以依賴了該庫后常用的主流三方庫便不再需要開發者們手動配置了,當然,有些友善的庫已采用了該方式,我也希望更多的開源庫使用該方式從而省去開發者配置防混淆,本庫已配置了如下防混淆文件(包括庫的不同版本):
- AndroidCommon
- AliPay(需防混 jar(-libraryjars libs/alipaySDK-20150602.jar))
- AndFix
- AndroidEventBus
- AndroidUniversalImageLoader
- ARouter
- BaiduMap(需防混 jar(-libraryjars libs/baidumapapi_v2_1_2.jar))
- BaseRecyclerViewAdapterHelper
- Bugly
- ButterKnife
- Dagger
- EventBus
- Fastjson
- Fresco
- GaoDeMap
- Getui
- Glide
- GreenDAO
- Gson
- Ijkplayer
- Guava
- Jackson
- JPush
- LitePal
- Mars
- MiPush
- Nuwa
- OkHttp
- PingPlusPlus
- Realm
- Retrofit
- Retrolambda
- RongCloud
- RxJava
- ShareSDK
- SinaWeiboSDK
- Stetho
- Tencent
- UMeng
- UnionPay
- Volley
- XinGe
- XunFei
- ZXing
How to use
- 首先開啟混淆,設置
minifyEnabled true
; - 添加依賴:
implementation "com.blankj:free-proguard:0.0.7"
- 把項目中的實體類加入到
proguard-rules.pro
文件中,一般為-keep class urpackage.xx.bean/entity/model.** { *; }
,或者使用@Keep
注解這些實體類; - 把項目中需要防混淆的 jar 加入到
proguard-rules.pro
文件中,比如支付寶 SDK 的-libraryjars libs/alipaySDK-20150602.jar
,如果要對所有 jar 都防混,那么使用-libraryjars libs
即可; - 把項目中用到的一些不包括在如上列表中的三方庫配置到
proguard-rules.pro
文件中,或者提 issue 使其加入到本庫中來(小眾或者冷門的不予合入哦)。
Profit
- 開啟混淆會將代碼中的所有變量、函數、類的名稱變為簡短的英文字母代號(也可自定義),在缺乏相應的函數名和程序注釋的情況下,即使被反編譯,也將難以閱讀,提升應用的安全性;
- 混淆通過分析字節碼,去掉冗余代碼,再加上縮短了變量、函數、類的名稱,可以進一步縮減應用大小,如果想混淆資源文件,可以使用微信的 AndResGuard。
Last but not least
如果該庫能為你節省 10 分鐘甚至更多的時間,請把它分享給他人來幫助更多的開發者們節省時間,這些時間可以多陪伴家人、多運動、多做自己喜歡的事情,希望開源可以幫助到更多的人,也希望更多的人加入到開源中來。
ChangeLog
由于庫剛發初版,后續還會加入更多的防混淆規則,所以版本號會不斷迭代,穩定后會選擇使用 1.0.0 版本。
由于庫剛發初版,后續還會加入更多的防混淆規則,所以版本號會不斷迭代,穩定后會選擇使用 1.0.0 版本。
由于庫剛發初版,后續還會加入更多的防混淆規則,所以版本號會不斷迭代,穩定后會選擇使用 1.0.0 版本。