问题描述
我是 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。