【Android 安全】DEX 加密 ( Proguard 简介 | Proguard 相关网址 | Proguard 混淆配置 )(一)

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 【Android 安全】DEX 加密 ( Proguard 简介 | Proguard 相关网址 | Proguard 混淆配置 )(一)

文章目录

一、Proguard 简介

二、Proguard 相关网址

三、Proguard 混淆配置





一、Proguard 简介


Android 开发中 Proguard 主要作用是对 Java 代码进行如下操作 :


压缩 Shrink : 检测并 删除 没有使用的类 , 字段 , 方法 , 属性 ;

优化 Optimize : 优化字节码 , 移除无用指令 ;

混淆 Obfuscate : 使用 a , b , c 无意义名称 , 对开发者定义的 类 , 字段 , 方法 进行 重命名 , 增加阅读难度 ;

预检 Preveirfy : Java 平台对 处理后的代码 进行预检 ;

最常用的是混淆操作 ;



上述执行顺序 : 压缩 Shrink -> 优化 Optimize -> 混淆 Obfuscate -> 预检 Preveirfy ;






二、Proguard 相关网址


Proguard 官网 : https://www.guardsquare.com/en/products/proguard


Proguard 官方指导手册 : https://www.guardsquare.com/en/products/proguard/manual


Proguard 用法 : https://www.guardsquare.com/en/products/proguard/manual/usage


Proguard 混淆相关文档 : https://www.guardsquare.com/en/products/proguard/manual/usage#keepoptions



image.png





三、Proguard 混淆配置


Proguard 混淆相关文档 : https://www.guardsquare.com/en/products/proguard/manual/usage#keepoptions



Proguard 混淆配置 :


-keep 指定 类 , 类成员 , 不被混淆 ; ( 类成员指的是类的成员方法 和 成员属性 )


-keepclassmembers 指定 类成员 不被混淆 , 类 和 类 方法 可以混淆 ;


-keepclasseswithmembers 指定 类 和 类成员 , 不被混淆 , 前提是 指定的类成员存在 ;



开启 Proguard : 在 Module 下的 build.gradle 中进行如下配置 , 其中 release 标签是进行发布版本的混淆设置 , debug 标签是测试版本的混淆设置 ;


android {
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
        debug {
            minifyEnabled true
            // 打印 proguard-android-optimize.txt 路径
            print("proguardPath = ${getDefaultProguardFile('proguard-android-optimize.txt')}")
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}


上述 proguard-rules.pro 是开发者自己手动配置的 ,


上述 proguard-android-optimize.txt 混淆配置文件是系统自动生成的 ,


该 proguard-android-optimize.txt 文件生成的依据是根据开发者的 proguard-rules.pro 混淆配置生成的 ;


目录
相关文章
|
20天前
|
缓存 前端开发 Android开发
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
55 12
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
|
24天前
|
Dart 前端开发 Android开发
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
28 1
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
2月前
|
存储 安全 Android开发
探索Android系统的最新安全特性
在数字时代,智能手机已成为我们生活中不可或缺的一部分。随着技术的不断进步,手机操作系统的安全性也越来越受到重视。本文将深入探讨Android系统最新的安全特性,包括其设计理念、实施方式以及对用户的影响。通过分析这些安全措施如何保护用户免受恶意软件和网络攻击的威胁,我们希望为读者提供对Android安全性的全面了解。
|
4月前
|
编译器 Android开发
配置环境变量,使CMakeLists.txt可直接使用Android NDK工具链编译项目
配置环境变量,使CMakeLists.txt可直接使用Android NDK工具链编译项目
|
4月前
|
Java Android开发 Windows
玩转安卓之配置gradle-8.2.1
为安卓开发配置Gradle 8.2.1,包括下载和解压Gradle、配置环境变量、修改配置文件以增加国内镜像,以及在Android Studio中配置Gradle和JDK的过程。
191 0
玩转安卓之配置gradle-8.2.1
|
5月前
|
算法 Java 数据安全/隐私保护
国密加密算法简介
国密指国家密码局认定的国产密码算法,主要包括SM1、SM2、SM3、SM4等,并持续完善。SM1是对称加密算法,加密强度与AES相当,需加密芯片支持;SM2是非对称加密,基于ECC算法,签名和密钥生成速度优于RSA;SM3为杂凑算法,安全性高于MD5;SM4为对称加密算法,用于无线局域网标准。本文提供使用Java和SpringBoot实现SM2和SM4加密的示例代码及依赖配置。更多国密算法标准可参考国家密码局官网。
517 1
|
4月前
|
安全 网络安全 Android开发
深度解析:利用Universal Links与Android App Links实现无缝网页至应用跳转的安全考量
【10月更文挑战第2天】在移动互联网时代,用户经常需要从网页无缝跳转到移动应用中。这种跳转不仅需要提供流畅的用户体验,还要确保安全性。本文将深入探讨如何利用Universal Links(仅限于iOS)和Android App Links技术实现这一目标,并分析其安全性。
552 0
|
6月前
|
Android开发
Android 配置蓝牙遥控器键值
本文详细介绍了Android系统中配置蓝牙遥控器键值的步骤,包括查看设备号、配置键位映射文件(kl文件)、部署kl文件以及调试过程,确保蓝牙遥控器的按键能正确映射到Android系统对应的按键功能。
557 1
|
算法 Java Android开发
Android中常用的加密方式
Android面试的时候,尤其是面试一些金融公司的时候经常性的问道:“你会不会加密?”,“加密方式是什么?”,“大概什么样的加密原理呢?”。其实,大多数人都是一脸懵逼,我也懵逼过。
1152 0
|
7天前
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
65 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex

热门文章

最新文章