zoukankan      html  css  js  c++  java
  • as 开启代码混淆和自定义混淆规则

    app的builde.gradle的文件下,buildTypes节点添加release节点,minifyEnabled属性表示是否开启混淆,proguardFiles表示混淆依赖的文件,具体开启方法如下:

    buildTypes {
            release {
                minifyEnabled true //开启混淆
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'//指定混淆配置文件为 proguard-rules.pro
    } }

      

    混淆配置:

    #官方的一些配置就不在这里说明了,这里只说下自定义混淆的简单配置方法,通过自定义注解类,保持所有被注解的类名、方法、变量不被混淆掉
    -keep class proguard.conf.MyKeep#自定义注解类不能混淆
    通过注解控制混淆,需要注意以下几点:
    1.如果整个类都需要保留,则在类上面增加注解,混淆配置为
    -keep @proguard.conf.MyKeep class *{*;}#包含类名
    -keepclassmembers @proguard.conf.MyKeep class *{*;}#不包含类名
    2.如果是类的全部成员变量都需要保留,在类上面增加注解,混淆配置为
    -keepclasseswithmembers @proguard.conf.MyKeep class *{<fields>;}#包含类名
    -keepclassmembers @proguard.conf.MyKeep class *{<fields>;}#不包含类名
    3.如果是类的全部方法都需要保留,在类上面增加注解,混淆配置为
    -keepclasseswithmembers @proguard.conf.MyKeep class *{<methods>;}#包含类名
    -keepclassmembers @proguard.conf.MyKeep class *{<methods>;}#不包含类名
    4.如果是类中的某个变量需要保留,在需要保留的变量上面增加注解,混淆配置为
    -keepclasseswithmembers class *{
    @proguard.conf.MyKeep <fields>;
    }#包含类名
    -keepclassmembers class *{
    @proguard.conf.MyKeep <fields>;
    }#不包含类名
    5.如果是勒种的某个方法需要保留,在需要保留的方法上面增加注解,混淆配置为
    -keepclasseswithmembers class *{
    @proguard.conf.MyKeep <methods>;
    }#包含类名
    -keepclassmembers class *{
    @proguard.conf.MyKeep <methods>;
    }#不包含类名

     关于其他的一些混淆,网上有很多参考资料,基本上都是基于保留  继承于某个类  或者实现了某个接口  的方式进行的保留,这边就不记载了,有需要网上再找吧

  • 相关阅读:
    就打排序算法总结
    php 垃圾回收机制写时复制和引用计数
    zend studio 使用断点调试
    SiteServer 迁移至 Windows 2008 R2 问题汇总
    [项目改造中的点滴]C#中IDataReader和DataSet的区别与使用场景
    顺序分支知识总结
    我的第一篇博客
    [原创]删除GRUB引导恢复Windows引导,不用下载任何工具
    在C++builder中使用正则表达式,非boost库,简单!~
    SQL 存储过程优化经验
  • 原文地址:https://www.cnblogs.com/fengchuxiaodai/p/6888203.html
Copyright © 2011-2022 走看看