1. #打开project.properties文件中的proguard.config。
  2.  
  3. -optimizationpasses 5 # 指定代码的压缩级别
  4. -dontusemixedcaseclassnames # 是否使用大小写混合
  5. -dontskipnonpubliclibraryclasses # 是否混淆第三方jar
  6. -dontpreverify # 混淆时是否做预校验
  7. -verbose # 混淆时是否记录日志
  8. -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* # 混淆时所采用的算法
  9.  
  10. #保持一些基本的不会混淆
  11. -keep public class * extends android.app.Activity
  12. -keep public class * extends android.app.Fragment
  13. -keep public class * extends android.app.Application
  14. -keep public class * extends android.app.Service
  15. -keep public class * extends android.content.BroadcastReceiver
  16. -keep public class * extends android.content.ContentProvider
  17. -keep public class * extends android.app.backup.BackupAgentHelper
  18. -keep public class * extends android.preference.Preference
  19. -keep public class com.android.vending.licensing.ILicensingService
  20.  
  21. -keepclasseswithmembernames class * { # 保持 native 方法不被混淆
  22. native <methods>;
  23. }
  24. -keepclasseswithmembers class * { # 保持自定义控件类不被混淆
  25. public <init>(android.content.Context, android.util.AttributeSet);
  26. }
  27. -keepclasseswithmembers class * { # 保持自定义控件类不被混淆
  28. public <init>(android.content.Context, android.util.AttributeSet, int);
  29. }
  30. -keepclassmembers class * extends android.app.Activity { # 保持自定义控件类不被混淆
  31. public void *(android.view.View);
  32. }
  33. -keepclassmembers enum * { # 保持枚举 enum 类不被混淆
  34. public static **[] values();
  35. public static ** valueOf(java.lang.String);
  36. }
  37. -keep class * implements android.os.Parcelable { # 保持 Parcelable 不被混淆
  38. public static final android.os.Parcelable$Creator *;
  39. }
  40.  
  41. #自己写的自定义控件不要混淆
  42. -keep public class * extends android.view.View { *; }
  43. #adapter也不能混淆
  44. -keep public class * extends android.widget.BaseAdapter { *; }
  45. #如果你使用了CusorAdapter,添加下面这行
  46. #-keep public class * extends android.widget.CusorAdapter{ *; }
  47. #数据模型不要混淆
  48. -keepnames class * implements java.io.Serializable
  49. #如果项目中用到了反射,则涉及到反射的类不能混淆(比如,transforms包下的所有类不混淆)
  50. -keep class com.example.newsdemo.app.banner.transforms.**{ *; }
  51.  
  52. #第三方类库(有多少加多少)
  53. -libraryjars libs/alipaySDK-20150602.jar
  54. -libraryjars libs/android-viewbadger.jar
  55. -libraryjars libs/xUtils-2.6.14.jar
  56. #保持第三方库,有的需要-dontwarn,Android Private Librarys里面的全部keep,keep的时候需要注意class,有的还需要dontwarn。
  57. -keep class android.** { *; }
  58. -keep class com.umeng.** { *; }
  59. -keep class com.tencent.** { *; }
  60. -dontwarn com.tencent.**
  61. -keep class com.baidu.** { *; }
  62. -dontwarn com.baidu.**
  63.  
  64. ##---------------Begin: Gson 的配置 ----------
  65. -keepattributes Signature
  66. -keepattributes *Annotation*
  67. # Gson specific classes
  68. -keep class sun.misc.Unsafe { *; }
  69. #-keep class com.google.gson.stream.** { *; }
  70. # Application classes that will be serialized/deserialized over Gson
  71. -keep class com.google.gson.examples.android.model.** { *; }
  72. #注意:::所有gson涉及的数据bean与model,serialized/deserialized
  73.  
  74. -keep class cn.shangyu.gdxzPatient.bean.** { *; }
  75.  
  76. ##---------------End: Gson 的配置 ----------
  77.  
  78. ##xutils包下所有类不要混淆,包括类里面的方法-----begin-----
  79. -keep class com.lidroid.** { *; }
  80. -keep class * extends java.lang.annotation.Annotation { *; }
  81. -keepclasseswithmembers class *{
  82. public *;
  83. }
  84. ##xutils包下所有类不要混淆,包括类里面的方法-----end-----
  85.  
  86. ##删除log代码-----begin-----
  87. -assumenosideeffects class android.util.Log {
  88. public static boolean isLoggable(java.lang.String, int);
  89. public static int v(...);
  90. public static int i(...);
  91. public static int w(...);
  92. public static int d(...);
  93. public static int e(...);
  94. }
  95. ##删除log代码-----end-----

Android混淆配置文件规范的更多相关文章

  1. 【安全开发】Android安全编码规范

    申明:本文非笔者原创,原文转载自:https://github.com/SecurityPaper/SecurityPaper-web/blob/master/_posts/2.SDL%E8%A7%8 ...

  2. Android混淆打包

    一.理论知识   ProGuard是一款免费的Java类文件压缩器.优化器和混淆器.它能发现并删除无用类.字段(field).方法和属性值(attribute).它也能优化字节码并删除无用的指令.最后 ...

  3. android混淆那些事

    写给Android开发者的混淆使用手册 综述 毫无疑问,混淆是打包过程中最重要的流程之一,在没有特殊原因的情况下,所有 app 都应该开启混淆. 首先,这里说的的混淆其实是包括了代码压缩.代码混淆以及 ...

  4. Android混淆问题

    最近做了2个项目,全部要混淆,刚接触,自己在网上找了还多资料,感觉各有千秋,自己总结了一下,第一次发帖,不喜勿喷.求各种指导!!! android应用程序的混淆打包规范 1.在工程文件project. ...

  5. Android开发编码规范(自用)

    转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持!   Android开发编码规范 目的及指导原则 目的 统一规范 Eclipse编辑环境 ...

  6. ym——Android开发编码规范(自用)

    转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持! Android开发编码规范 目的及指导原则 目的 统一规范 Eclipse编辑环境下J ...

  7. Android混淆

    一.为什么要混淆 为了避免apk在发布后被用户通过反编译拿到源代码和资源文件,然后修改资源和代码之后就变成一个新的apk.而经过混淆后的APK,即使被反编译,也难以阅读,注意混淆不是让apk不能阅读, ...

  8. Android 混淆签名打包

    1.混淆文件 proguard-rules.pro # Add project specific ProGuard rules here. # By default, the flags in thi ...

  9. 【我的Android进阶之旅】Android 混淆文件资源分类整理

    之前将所有的混淆都配置在一个 proguard-rules.pro 这个Android Studio新建项目时自动生成的文件里面,而随着项目功能迭代越来越多,代码量越来越多,引用的第二方库.第三方库都 ...

随机推荐

  1. SQL Server 模式和名称解析

    模式实际上是名称空间,因此在SQL Serve中调用数据库对象时,一定要设置对象引用的环境.每个用户都被赋予了一个默认模式,在用户登录SQL Server并凋用数据库对象时,这个默认模式就是对象引用方 ...

  2. Visual Studio .NET、.NET Framework和C#之间的联系

    Visual Studio .NET是一种集成开发环境(IDE),它包含3种高级程序设计语言,C#就是其中的一种:Visual Studio .NET之所以能把这三种语言有机结合起来并具有与平台无关的 ...

  3. JavaScript禁止用户多次提交方法

    [当服务器超载时,会出现提交卡顿的现象,但是用户在操作时,会不停重复点击提交,会造成服务器压力更大.所以我们需要进行限制] [1]将提交按钮禁止 <html> <head> & ...

  4. struts2 404处理

    目前在做一个网络应用程序,struts2 + spring + hibernate,服务器是tomcat.希望用户在IE地址栏乱敲的时候,所敲入的所有未定义的URL都能被程序捕捉到,然后转到一个自制的 ...

  5. OS X EI Capitan 10.11.4中sudo无法起作用的解决方法

    mac升级到OSX EI Capitan 10.11.4后sudo命令无法起作用,执行任何操作总是显示Operation denied.这是因为在10.11.4中引入了Rootless机制,即就算是R ...

  6. Qt之等待提示框三(QLabel进行多图片切换)

    之前分享过的等待提示框有用QMovie播放gif图片实现的,也有纯代码实现的,今天再次分享另一种实现方式,如题目所示:QLabel进行图片的切换!     进行用户登录的时候,往往都需要后台线程进行用 ...

  7. HTML5简单入门系列(九)

    前言 上篇本来应该就是最后一篇了,但是楼主总觉得没有写上一个简单应用,不算是完整的学习系列.所以增加一篇关于动画的应用,对一个开源动画的介绍(很基础,非楼主原创). 本篇介绍一个基于Canvas的发光 ...

  8. setInterval()-----------js 函数总结

    setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式. setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭.由 s ...

  9. 更有效率的使用 Visual Studio - 快捷键

    工欲善其事,必先利其器.虽然说Vim和Emacs是神器,但是对于使用Visual Studio的程序员来说,我们也可以通过一些快捷键和潜在的一些功能实现脱离鼠标写代码,提高工作效率,像使用Vim一样使 ...

  10. 转:SVN Eclipse插件Subclipse安装和配置

    一.安装Subclipse subclipse项目地址:http://subclipse.tigris.org/. 安装Subclipse的最好方法是使用Eclipse Update Manager. ...