1弃鸦、反射中使用的元素绞吁;
2幢痘、GSON的序列化與反序列化(本質(zhì)還是用到了反射)
3唬格、枚舉也不要混淆(用到反射)
4、四大組件不要混淆(會(huì)導(dǎo)致Manifest名稱與混淆后名稱不一致)
5颜说、其他:
①jni調(diào)用的java方法
②java的native方法
③js調(diào)用的java方法
④第三方庫不建議混淆
⑤其他和反射相關(guān)的一些情況
⑥類之間有調(diào)用 static final常量
個(gè)人理解:不可混淆項(xiàng)目主要分兩類:一類是反射购岗;第二類是常量(final和Manifest等,都可以理解為常量)
參考文章:http://droidyue.com/blog/2016/07/10/understanding-android-obfuscated-code-by-proguard/
二门粪、混淆進(jìn)階
-repackageclasses xxx.xxx.xxx(可以任意命名喊积,比如包名)
https://medium.com/androiddevelopers/practical-proguard-rules-examples-5640a3907dc9
https://www.android-doc.com/m/view.php?aid=1160
添加該配置后,通過反編譯打出來的APK玄妈,能看到乾吻,被混淆的代碼(沒keep的),會(huì)統(tǒng)一放到上面配置的xxx.xxx.xxx下拟蜻,進(jìn)一步降低代碼的可讀性绎签。但是,同時(shí)會(huì)引入bug(google搜索’repackageclasses bug‘酝锅,即可搜到其他人遇到的bug情況)诡必。經(jīng)過權(quán)衡,目前我所開發(fā)的APP目前混淆的效果可以滿足需要搔扁,且爸舒,參考了某寶、某信稿蹲、某東APP扭勉,發(fā)現(xiàn)他們目前也沒有使用上述配置的痕跡。所以苛聘,暫不配置剖效。