Android 代碼混淆 防止反編譯
來源:程序員人生 發(fā)布時間:2014-12-15 08:55:00 閱讀次數(shù):3664次
為了避免代碼被反編譯,因此需要加入混淆。混淆也能夠通過第3方進行apk混淆,也能夠用android中的proguard進行混淆。
混淆步驟:
1、配置混淆文件,名字可以隨便,在這里使用proguard-android,格式為txt。
-optimizationpasses 5 # 指定代碼的緊縮級別
-dontusemixedcaseclassnames # 是不是使用大小寫混合
-dontskipnonpubliclibraryclasses # 是不是混淆第3方j(luò)ar
-dontpreverify # 混淆時是不是做預(yù)校驗
-verbose # 混淆時是不是記錄日志
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* # 混淆時所采取的算法
-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 # 保持哪些類不被混淆
-libraryjars libs/gson⑵.0.jar # 保持 第3方j(luò)ar不被混淆
-keepclasseswithmembernames class * { # 保持 native 方法不被混淆
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 * { # 保持枚舉 enum 類不被混淆
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable { # 保持 Parcelable 不被混淆
public static final android.os.Parcelable$Creator *;
}
-keepclassmembers class **.R$* { # 保持R文件不被混淆
public static <fields>;
}
-keep class com.alipay.android.app.IAliPay{*;} # 保持某個接口或類不被混淆
-keep class com.android.app.view**{*;} # 保持某個包下所有的類不被混淆
-keep class com.android.app.CommonCallback{ # 保持某個類或接口的公有和保護類型的成員和方法不被混淆
public protected <fields>;
public protected <methods>;
}
-keep class com.android.app.Platform$*{ # 保持內(nèi)部類不被混淆
*;
}
#-keep class com.android.app.** implements com.android.app.Platform$ICallback {*;} # 保持內(nèi)部接口不被混淆
-dontwarn android.support.**
2、引入
在項目的project.properties文件中加入proguard.config=proguard-android.txt,就是上面寫的混淆文件。
3、android默許運行環(huán)境是debug模式,是不履行代碼混淆的。因此,必須對項目進行簽名才可以,如果在打包時遇到毛病,多是混淆文件哪里寫的有問題。
參考
http://blog.csdn.net/lovexjyong/article/details/24652085
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機掃描二維碼進行捐贈