Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android 代碼混淆 防止反編譯

Android 代碼混淆 防止反編譯

編輯:關於Android編程

為了防止代碼被反編譯,因此需要加入混淆。混淆也可以通過第三方進行apk混淆,也可以用android中的proguard進行混淆。

混淆步驟:

1、配置混淆文件,名字可以隨意,在這裡使用proguard-android,格式為txt。

 

-optimizationpasses 5                                                           # 指定代碼的壓縮級別
-dontusemixedcaseclassnames                                                     # 是否使用大小寫混合
-dontskipnonpubliclibraryclasses                                                # 是否混淆第三方jar
-dontpreverify                                                                  # 混淆時是否做預校驗
-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-2.0.jar                                                  # 保持 第三方jar不被混淆

-keepclasseswithmembernames class * {                                           # 保持 native 方法不被混淆
    native ;
}

-keepclasseswithmembers class * {                                               # 保持自定義控件類不被混淆
    public (android.content.Context, android.util.AttributeSet);
}

-keepclasseswithmembers class * {
    public (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 ;
}
-keep class com.alipay.android.app.IAliPay{*;}                                  # 保持某個接口或類不被混淆

-keep class com.android.app.view**{*;}                                          # 保持某個包下所有的類不被混淆


-keep class com.android.app.CommonCallback{                                     # 保持某個類或接口的公有和保護類型的成員和方法不被混淆
	public protected ;
    public protected ;
}

-keep class com.android.app.Platform$*{                                         # 保持內部類不被混淆
	 *;
}
#-keep class  com.android.app.** implements  com.android.app.Platform$ICallback {*;}   # 保持內部接口不被混淆

-dontwarn android.support.**
2、引入

 

在項目的project.properties文件中加入proguard.config=proguard-android.txt,就是上面寫的混淆文件。

3、android默認運行環境是debug模式,是不執行代碼混淆的。因此,必須對項目進行簽名才可以,如果在打包時遇到錯誤,可能是混淆文件哪裡寫的有問題。

 


 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved