我有一个类被序列化以获得:
class test{
string test1;
string test2;
string test3;
string test4;
}
输出:
{
"a": "...",
"b": "...",
"c": "...",
"d": "..."
}
我只需要将这些数据存储在本地。
我需要在 proguard 中配置“-keep”选项吗?
我一直在研究,但仍然不清楚 proguard 是如何工作的,这些变量名称是随机的吗?
如果这确实是你的模型类的定义,那么 proguard 会 100% 混淆它,你确实会在反序列化方面遇到麻烦。
尽管如此,深入了解 proguard
-keep
并不是你唯一的选择。
我建议你简单地创建你的模型类
public
,并且 proguard 应该一开始就不要管它:
public class test{
string test1;
string test2;
string test3;
string test4;
}
我认为公开你的课程应该足以帮助你度过最初的难关。但是,如果这不起作用,那么我建议您在类的顶部添加一个
@Keep
注释,以便让 proguard 知道 not 来混淆此类:
@Keep
class test{
string test1;
string test2;
string test3;
string test4;
}
请注意,有了
@Keep
注释,您就不再需要 public
修饰符了。不过,我坚持认为,仅使用 public
修饰符就可以解决问题!
否则,如果您更喜欢深入了解
-keep
,那么我建议您首先阅读此页和此页,以便更好地熟悉 progaurd 及其规则系统。
然后,考虑将如下规则添加到您的
proguard-rules.pro
中,或者任何实际文件的名称:
# In proguard-rules.pro
#
# add either
-keep class path.to.models.** { *; }
# or
-keep class path.to.your.particular.class.test { *; }