当前位置:   article > 正文

Android代码混淆总结_minifyenabled 等级

minifyenabled 等级

        最近研究了一下代码的混淆,总结如下:

       1.build文件中minifyEnabled设置为true,然后开始配置proguard-rules.pro文件中的内容,分为三部分吧

       1)可以直接复制粘贴的,不需要做任何修改的固定内容

  1. #压缩等级,一般选择中间级别5
  2. -optimizationpasses 5
  3. #包名不混合大小写
  4. -dontusemixedcaseclassnames
  5. #不去忽略非公共的库类
  6. -dontskipnonpubliclibraryclasses
  7. #优化 不优化输入的类文件
  8. -dontoptimize
  9. #预校验
  10. -dontpreverify
  11. #混淆时采用的算法
  12. -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
  13. #保护注解
  14. -keepattributes *Annotation*
  15. #保持下面的类不被混淆(没有用到的可以删除掉,比如没有用到service则可以把service行删除)
  16. -keep public class * extends android.app.Fragment
  17. -keep public class * extends android.app.Activity
  18. -keep public class * extends android.app.Application
  19. -keep public class * extends android.app.Service
  20. -keep public class * extends android.content.BroadcastReceiver
  21. -keep public class * extends android.content.ContentProvider
  22. -keep public class * extends android.preference.Preference
  23. -keep public class * extends android.support.v4.app.FragmentActivity
  24. -keep public class * extends android.support.** { *;}
  25. #如果引用了v4或者v7包
  26. -dontwarn android.support.*
  27. #忽略警告(开始应该注释掉,让他报错误解决,最后再打开,警告要尽量少)
  28. -ignorewarnings
  29. #####################记录生成的日志数据,gradle build时在本项目根目录输出################
  30. #混淆时是否记录日志
  31. -verbose
  32. #apk 包内所有class 的内部结构
  33. -dump class_files.txt
  34. #为混淆的类和成员
  35. -printseeds seeds.txt
  36. #列粗从 apk 中删除的代码
  37. -printusage unused.txt
  38. #混淆前后的映射
  39. -printmapping mapping.txt
  40. #####################记录生成的日志数据,gradle build时在本项目根目录输出结束################
  41. #本地的R类不要被混淆,不然就找不到相应的资源
  42. -keep class **.R$*{ public static final int *; }
  43. #保持内部类,异常类
  44. -keepattributes Exceptions, InnerClasses
  45. #保持泛型、注解、源代码之类的不被混淆
  46. -keepattributes Signature, Deprecated, SourceFile
  47. -keepattributes LineNumberTable, *Annotation*, EnclosingMethod
  48. #保持自定义控件不被混淆(没有就不需要)
  49. -keepclasseswithmembers class * extends android.app.Activity{
  50. public void *(android.view.View);
  51. }
  52. -keepclasseswithmembers class * extends android.supprot.v4.app.Fragment{
  53. public void *(android.view.View);
  54. }
  55. #保持 Parcelable 不被混淆(没有就不需要)
  56. -keep class * implements android.os.Parcelable {
  57. public static final android.os.Parcelable$Creator *;
  58. }
  59. #保持 Serializable 不被混淆(没有就不需要)
  60. -keepnames class * implements java.io.Serializable
  61. -keepclassmembers class * {
  62. public void *ButtonClicked(android.view.View);
  63. }
  1. -keepclassmembers enum * {
  2. public static **[] values();
  3. public static ** valueOf(java.lang.String);
  4. }


2)第三方的jar包,需要去相应的官网查询混淆规则,举几个例子如下

  1. # gson工具不需要混淆
  2. -dontwarn com.google.gson**
  3. -keep class com.google.gson.**{*;}
  4. # volley
  5. -dontwarn com.android.volley.jar.**
  6. -keep class com.android.volley.**{*;}
  7. #友盟混淆配置start
  8. -keepclassmembers class * {
  9. public <init> (org.json.JSONObject);
  10. }
  11. -keep public class com.hawk.android.hicamera.R$*{
  12. *;
  13. }
  14. #友盟混淆配置end
  15. #极光推送混淆配置
  16. -dontoptimize
  17. -dontpreverify
  18. -dontwarn cn.jpush.**
  19. -keep class cn.jpush.** { *; }

    3)混淆过程中肯定会有警告,有问题,根据提示解决问题,我遇到的问题就是有的jar包不能混淆,而我给混淆了,所以我加了如下代码:

  1. -dontwarn com.tencent.**
  2. -keep class com.tencent.**{*;}
  3. # apache
  4. -dontwarn org.apache.http.**
  5. -keep class org.apache.http.** { *;}

2.代码混淆成功了还有一个地方要配置一下,很有用的:

  1. buildTypes {
  2. release {
  3. // 如果没有提供混淆规则文件,则设置默认的混淆规则文件(SDK/tools/proguard/proguard-android.txt)
  4. pseudoLocalesEnabled true
  5. // 不显示Log
  6. buildConfigField "boolean", "LOG_DEBUG", "false"
  7. //混淆
  8. minifyEnabled true
  9. //Zipalign优化
  10. zipAlignEnabled true
  11. // 移除无用的resource文件
  12. shrinkResources true
  13. proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
  14. }
  15. }



声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/701472
推荐阅读
相关标签
  

闽ICP备14008679号