Android - Proguard - 数据保护

问题描述

我是 Android 中 Proguard 的新手,想向社区提问。如果我在应用程序 gradle(模块)中将 minify 和shrink 设置为true,是否会保护我可能在Java 类中定义的任何常量?

例如:

public class References
{
    public static final long RESEND_TIME_LIMIT = 60L;
    public static final int MAX_RESEND = 3;
}

现在,如果我在我的模块级 gradle 文件中设置以下内容

buildTypes 
{
    release {
        minifyEnabled true   // Obfuscate and minify codes
        shrinkResources true // Remove unused resources
        useProguard true     // Remove unused codes
        debuggable false
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),'proguard-rules.pro'
    }
}

现在,这会保护我定义的常量吗?我的意思是,对设备具有根级别访问权限的人是否可以以某种方式更改这些值?

请帮我理解。谢谢。

解决方法

Proguard 不是 100% 安全的代码。它是改变类和变量名。它不是改变你定义的常量的值。

为了保护您的常量,您必须使用本机 C++ 库。有关详细信息,请参阅此 doc