ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 低调看直播体育app软件下载 >> Android开发 >> android代码混淆 读懂 Android 中的代码混淆

android代码混淆 读懂 Android 中的代码混淆(1/5)

来源:网络整理     时间:2016-07-25     关键词:android代码混淆

本篇文章主要介绍了"android代码混淆 读懂 Android 中的代码混淆",主要涉及到android代码混淆方面的内容,对于Android开发感兴趣的同学可以参考一下: 在Android开发工作中,我们都或多或少接触过代码混淆。比如我们想要集成某个SDK,往往需要做一些排除混淆的操作。本文为本人的一些实践总结,介绍一些混淆的知识...

在Android开发工作中,我们都或多或少接触过代码混淆。比如我们想要集成某个SDK,往往需要做一些排除混淆的操作。

本文为本人的一些实践总结,介绍一些混淆的知识和注意事项。希望可以帮助大家更好的学习和使用代码混淆。

什么是混淆

关于混淆维基百科上该词条的解释为

代码混淆(Obfuscated code)亦称花指令,是将计算机程序的代码,转换成一种功能上等价,但是难于阅读和理解的形式的行为。

代码混淆影响到的元素有

  • 类名
  • 变量名
  • 方法名
  • 包名
  • 其他元素

混淆的目的

混淆的目的是为了加大反编译的成本,但是并不能彻底防止反编译.

如何开启混淆

  • 通常我们需要找到项目路径下app目录下的build.gradle文件
  • 找到minifyEnabled这个配置,然后设置为true即可.

一个简单的示例如下

buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

proguard是什么

Java官网对Proguard的定义

ProGuard is a free Java Class file shrinker, optimizer, obfuscator, and preverifier. It detects and removes unused classes, fields, methods, and attributes. It optimizes bytecode and removes unused instructions. It renames the remaining classes, fields, and methods using short meaningless names. Finally, it preverifies the processed code for Java 6 or higher, or for Java Micro Edition.

  • Proguard是一个集文件压缩,优化,混淆和校验等功能的工具
  • 它检测并删除无用的类,变量,方法和属性
  • 它优化字节码并删除无用的指令.
  • 它通过将类名,变量名和方法名重命名为无意义的名称实现混淆效果.
  • 最后它还校验处理后的代码

混淆的常见配置

-keep

Keep用来保留Java的元素不进行混淆. keep有很多变种,他们一般都是

  • -keep
  • -keepclassmembers
  • -keepclasseswithmembers

一些例子

保留某个包下面的类以及子包

-keep public class com.droidyue.com.widget.**

保留所有类中使用otto的public方法

# Otto
-keepclassmembers class ** {
    @com.squareup.otto.Subscribe public *;
    @com.squareup.otto.Produce public *;
}

保留Contants类的BOOK_NAME属性

-keepclassmembers class com.example.admin.proguardsample.Constants {
     public static java.lang.String BOOK_NAME;
}

更多关于Proguard keep使用,可以参考官方文档

-dontwarn

dontwarn是一个和keep可以说是形影不离,尤其是处理引入的library时.

android代码混淆相关图片

android代码混淆相关文章