• android studio 代码混淆


    1.配置build.gradle脚本中buildTypes节点

    buildTypes {

    debug {
    debuggable true
    signingConfig signingConfigs.config
    }

    release {
    minifyEnabled true
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    signingConfig signingConfigs.config
    }
    }

    2.编辑moudle中proguard-rules.pro文件:

    -optimizationpasses 5          # 指定代码的压缩级别
    -dontusemixedcaseclassnames   # 是否使用大小写混合
    -dontpreverify           # 混淆时是否做预校验
    -verbose                # 混淆时是否记录日志
    
    -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*  # 混淆时所采用的算法
    
    -keep public class * extends android.app.Activity      # 保持哪些类不被混淆
    -keep public class * extends android.app.Application   # 保持哪些类不被混淆
    -keep public class * extends android.app.Service       # 保持哪些类不被混淆
    -keep public class * extends android.content.BroadcastReceiver  # 保持哪些类不被混淆
    -keep public class * extends android.content.ContentProvider    # 保持哪些类不被混淆
    -keep public class * extends android.app.backup.BackupAgentHelper # 保持哪些类不被混淆
    -keep public class * extends android.preference.Preference        # 保持哪些类不被混淆
    -keep public class com.android.vending.licensing.ILicensingService    # 保持哪些类不被混淆
    
    -keepclasseswithmembernames class * {  # 保持 native 方法不被混淆
        native <methods>;
    }
    -keepclasseswithmembers class * {   # 保持自定义控件类不被混淆
        public <init>(android.content.Context, android.util.AttributeSet);
    }
    -keepclasseswithmembers class * {# 保持自定义控件类不被混淆
        public <init>(android.content.Context, android.util.AttributeSet, int);
    }
    -keepclassmembers class * extends android.app.Activity { # 保持自定义控件类不被混淆   
        public void *(android.view.View);
    }
    -keepclassmembers enum * {     # 保持枚举 enum 类不被混淆    
        public static **[] values();    
        public static ** valueOf(java.lang.String);
    }
    -keep class * implements android.os.Parcelable { # 保持 Parcelable 不被混淆  
        public static final android.os.Parcelable$Creator *;
    }


  • 相关阅读:
    net.core.somaxconn的作用
    Python Mysql unsupported format character 'Y' (0x59) at index xx
    Oracle Compile Object
    Python 读取股市行情信息
    Microsoft Dynamics CRM 高级查找不能搜索实体的解决方案(浏览器插件)
    生成宝塔面板的命令
    项目路由设置了 history路由方式后,页面刷新404
    vue3 vite 在嵌套多层路由后部署服务器刷新空白
    js计算耗时,可多次调用获取耗时
    Element中Tree树结构组件中实现Ctrl和Shift多选
  • 原文地址:https://www.cnblogs.com/x-bing/p/5464824.html
Copyright © 2020-2023  润新知