
logo
![fpg][fpgsvg] ![License][licensesvg]
About
FreeProGuard 為方便廣大 Android 開發(fā)者們今后防混淆配置卵史,很久之前便有打算做這個免混淆庫了战转,只是拖到最近才有空來實現(xiàn)該庫,該庫利用了 consumerProguardFiles
來傳遞 aar 中的防混淆配置到主工程中以躯,所以依賴了該庫后常用的主流三方庫便不再需要開發(fā)者們手動配置了槐秧,當然啄踊,有些友善的庫已采用了該方式,我也希望更多的開源庫使用該方式從而省去開發(fā)者配置防混淆刁标,本庫已配置了如下防混淆文件(包括庫的不同版本):
- 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
- 開啟混淆會將代碼中的所有變量疑苫、函數(shù)浪默、類的名稱變?yōu)楹喍痰挠⑽淖帜复枺ㄒ部勺远x),在缺乏相應的函數(shù)名和程序注釋的情況下缀匕,即使被反編譯纳决,也將難以閱讀,提升應用的安全性乡小;
- 混淆通過分析字節(jié)碼阔加,去掉冗余代碼,再加上縮短了變量满钟、函數(shù)胜榔、類的名稱,可以進一步縮減應用大小湃番,如果想混淆資源文件夭织,可以使用微信的 AndResGuard。
Last but not least
如果該庫能為你節(jié)省 10 分鐘甚至更多的時間吠撮,請把它分享給他人來幫助更多的開發(fā)者們節(jié)省時間尊惰,這些時間可以多陪伴家人、多運動泥兰、多做自己喜歡的事情弄屡,希望開源可以幫助到更多的人,也希望更多的人加入到開源中來鞋诗。
ChangeLog
由于庫剛發(fā)初版膀捷,后續(xù)還會加入更多的防混淆規(guī)則,所以版本號會不斷迭代削彬,穩(wěn)定后會選擇使用 1.0.0 版本全庸。
由于庫剛發(fā)初版秀仲,后續(xù)還會加入更多的防混淆規(guī)則,所以版本號會不斷迭代壶笼,穩(wěn)定后會選擇使用 1.0.0 版本啄育。
由于庫剛發(fā)初版,后續(xù)還會加入更多的防混淆規(guī)則拌消,所以版本號會不斷迭代挑豌,穩(wěn)定后會選擇使用 1.0.0 版本。