• 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>;
    }#不包含类名

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

  • 相关阅读:
    unity的#pragma strict,#pragma downcast等指令分享
    Unity3d 添加多相机后编译警告
    Invoke计时器
    unity3d UI自动适合屏幕分辨率
    实现卷轴效果的脚本
    .unity3d格式的导出与加载
    Linux 网络编程
    姿态解算基本完成,程序编写笔记
    验证网络上四元数的正确性
    2440 模拟IIC 可以读取 L3G4200D ,ADXL345
  • 原文地址:https://www.cnblogs.com/fengchuxiaodai/p/6888203.html
Copyright © 2020-2023  润新知