android混淆

Android代碼混淆:

混淆就是將類中的變量名,方法名,類名修改爲ABC之類無意義的名稱,增加反編譯時的閱讀難度。
首先在project.properties中將
# proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

前面的#取消,然後在在proguard-project.txt中編寫混淆方式。

-optimizationpasses 5

-dontusemixedcaseclassnames 【混淆時不會產生形形色色的類名 】
-dontskipnonpubliclibraryclasses 【指定不去忽略非公共的庫類。 】

-dontpreverify【不預校驗】

-verbose

-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*【優化】

#保留行號,這樣顯示錯誤時就不會顯示Unknown Source
-keepattributes SourceFile,LineNumberTable

 

-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.content.ContentProvider

-keep public class * extends android.app.backup.BackupAgentHelper

-keep public class * extends android.preference.Preference

-keep public class com.android.vending.licensing.ILicensingService

 

-keepclasseswithmembernames class * {

native <methods>;

}

-keepclasseswithmembers class * {

public <init>(android.content.Context, android.util.AttributeSet);

}

-keepclasseswithmembers class * {

public <init>(android.content.Context, android.util.AttributeSet, int);

}

-keepclassmembers class * extends android.app.Activity {

public void *(android.view.View);

}

-keepclassmembers enum * {

public static **[] values();

public static ** valueOf(java.lang.String);

}

-keep class * implements android.os.Parcelable {

public static final android.os.Parcelable$Creator *;

}
這些是基本的混淆,對android四大組件不進行混淆,枚舉不進行混淆。

如果項目中有其他第三方JAR包,必須進行特殊處理。

首先第三方包大部分都有進行混淆,如果進行二次混淆調用時就會出錯。

 

第三方JAR包不混淆的操作如下:

首先#所有的jar

-libraryjars libs/alipay_msp.jar 保持不混淆的JAR

-dontwarn com.alipay.android.app.** 忽略所有的jar包錯誤

-keep class com.alipay.android.app.**{*; } 不混淆jar包類

默認的操作就是上面的三步,但是對於某些項目的包,還要具體問題具體分析

#Android-support-v4jar類庫,

-keep public class * extends android.support.v4.*

-keep public class * extends android.app.Fragment

 

#gson有關的代碼不能進行混淆不然會報錯:比如實體類等等

-keep class com.test.**{*;}

-keepattributes Signature 

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