• 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 <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$*{                                         # 保持内部类不被混淆
    	 *;
    }
    #-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模式,是不执行代码混淆的。因此,必须对项目进行签名才可以,如果在打包时遇到错误,可能是混淆文件哪里写的有问题。


    参考

    http://blog.csdn.net/lovexjyong/article/details/24652085


  • 相关阅读:
    将博客搬至CSDN
    【LeetCode & 剑指offer刷题】熟悉OJ平台3:OJ编程实例
    【LeetCode & 剑指offer刷题】熟悉OJ平台2:如何处理输入问题
    【LeetCode & 剑指offer刷题】熟悉OJ平台1:OJ术语
    【LeetCode & 剑指offer刷题】发散思维题9:Shuffle an Array
    【LeetCode & 剑指offer刷题】发散思维题8:Roman to Integer
    【LeetCode & 剑指offer刷题】发散思维题7:Fizz Buzz
    【LeetCode & 剑指offer刷题】发散思维题6:231. Power of Two(系列)
    【LeetCode & 剑指offer刷题】发散思维题5:65 不用加减乘除做加法
    【LeetCode & 剑指offer刷题】发散思维题4:64 求1+2+…+n
  • 原文地址:https://www.cnblogs.com/lbangel/p/4335870.html
Copyright © 2020-2023  润新知