android混淆

一、背景

       最近我負責的項目要添加混淆,有點小棘手,之前只是知道有這麼東西,但是沒有真正做過代碼的混淆,於是各種google,在此記錄一下

二、混淆

       工具:as+4.4

       1.首先在項目的gradle中開啓混淆

          在android->buildTypes->debug or release節點中設置 minifyEnabled 爲true

       2.修改proguard-rules.pro文件

         修改這個文件首先要知道混淆的一些基本的原則

        ①混淆只是混淆我們自己的代碼

        ②過濾掉第三方的jar包和依賴

        ③項目中的實體不能混淆,否則json解析不出來

        ④android中自己的組件不能混淆

        只要把握住這幾個規則一般都不會有問題

        貼一下我們項目的混淆

             

#基本混淆代碼 貼到項目中就能用
-dontshrink
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-ignorewarnings#忽略警告 也可以用
-dontwarn
-allowaccessmodification
-dontskipnonpubliclibraryclassmembers
-keepattributes *Annotation*

#android中不加混淆的類
-keep public class com.huimin.shop.huiminshop.base.F{*;}
-keep public class * extends android.app.Fragment
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.support.v4.**
-keep public class * extends android.support.v7.**
#===================================================================================================
#Picasso混淆
-keep class com.squareup.picasso.* {*;}
#fastjson混淆
-keep class com.alibaba.fastjson.** { *; }
#Gson混淆
-keep class com.goole.gson.**{*;}
#bean實體屏蔽混淆
-keep class com.huimin.shop.huiminshop.classify.entity.**{ *; }
-keep class com.huimin.shop.huiminshop.homepage.entity.**{ *; }
-keep class com.huimin.shop.huiminshop.mycenter.entity.**{ *; }
-keep class com.huimin.shop.huiminshop.shopcar.entity.**{ *; }
#cobub
-keep class com.wbtech.ums.**{*;}
#xutils混淆
-keep class org.xutils.** { *; }
#百度地圖
-keep class com.baidu.** {*;}
-keep class vi.com.** {*;}

           基本配置沒太多研究,看字面意思可以大概能明白每個配置都是幹嘛的

       所謂不加混淆的類就是android自身的組件,環境及goole提供的support包

       第三方包格式都固定,可以自己手動找到用到的類然後逐個屏蔽,也可以把整個包都屏蔽,這裏都是把整個包都屏蔽了;一般來說第三方關於混淆的內容在第三方的官網都會有說明也可以自己逐個進入官網看看

三、小結

        在混淆時遇到了兩個問題

      1.重複混淆,對於libs下的jar混淆自己寫了兩遍,導致簽名打包時編譯通不過

      2.最開始一直沒有對bean實體進行混淆,導致每次打完包安裝到手機上都沒有數據,反覆搞了好幾次,改了n多次配置都不行,然後看了看安裝後項目運行打出的日誌,發現網絡請求成功,但是就是顯示不出來,於是定位到bean,把所有bean屏蔽混淆後,問題解決


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章