gpt4 book ai didi

android - Gson 不会反序列化从未使用过的字段

转载 作者:行者123 更新时间:2023-12-04 23:50:13 26 4
gpt4 key购买 nike

现状
我有一个模型,其中 UserSettingModel 类有两个字段:long UserId 并具有一个名为 Settings 的类 UserSettings 示例(具有许多字段)。

警告:我的代码中没有直接使用这些字段(在 Android Studio 中,此字段的颜色为灰色),但我需要将其重新发送到服务器。

public class UserSettingsModel
{
@SerializedName("UserId")
public long UserId = -1L;

@SerializedName("Settings")
public UserSettings Settings;

}//end of class/ UserSettingsModel

class UserSettings
{
@SerializedName("showRegion")
public String showRegion = "";

@SerializedName("showAddress")
public String showAddress = "";
}

问题
如果在 Debug模式下使用 apk:GSON 反序列化 UserSettingModel 类的所有字段,包括设置

如果在 RELEASE 模式下使用 apk:字段设置 - 不反序列化

我的前卫:
-keepattributes Signature
-keepattributes *Annotation*
-keep class sun.misc.Unsafe { *; }
-keep class com.google.gson.stream.** { *; }
-keep class com.google.gson.examples.android.model.** { *; }
-keep class com.google.gson.** { *; }
-keepclassmembers enum * { *; }
-keep class * implements com.google.gson.TypeAdapterFactory
-keep class * implements com.google.gson.JsonSerializer
-keep class * implements com.google.gson.JsonDeserializer

我需要什么
如何在 Release模式下使用 GSON 序列化/反序列化所有类的字段,同时警告“字段从未使用”?

最佳答案

这是因为混淆,正如 DQuade 在评论中所说的那样。
要防止 gradle 删除它们,您可以在 proguard-rules.pro 文件中添加特定类:

-keepclassmembers class [yourPackageName].UserSettingsModel
-keepclassmembers class [yourPackageName].UserSettings
或阻止 gradle 删除所有带有 SerializedName 注释的成员注解:
-keepclassmembers class * {
@com.google.gson.annotations.SerializedName <fields>;
}

关于android - Gson 不会反序列化从未使用过的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45983696/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com