Android Gson 进行混淆打包导致无法进行解析 Json

所谓本地开发,测试稳得一批,一到线上就抽风就是这样

在 Android 打包成 App release 的时候,配置了混淆功能,导致无法正常解析

主要原因是:客户端中的 JavaBean 与 服务端返回的 JavaBean 的字段 key 需保持一致,才可正常的解析。

而如有使用混淆编译功能的话,它会全部给你改成了 a/b/c/d 类似的字符串,这就与服务端返回的 key 不一致,导致无法进行拆包获取

举例

以下是一个正常的 JSON 格式

{
    "msg": "操作成功!t",
    "code": 0,
    "Data": {
        "user": {
            "JSESSIONID": "66672c22-fc3c-4f05-a427-675aaafc9d2b",
            "id": 1,
            "status": 1,
            "userName": "payne.zhuang"
        }
    }
}

被混淆后,获取到的数据变成了如下

{
    "c": "cGF5bmUwMC4u"
}

这就懵逼了,混淆成功,导致获取数据取不到。

解决方法

在混淆配置 proguard.cfg 中,Gson 进行过滤本身的 JavaBean class

##---------------Begin: proguard configuration for Gson  ----------
# Gson uses generic type information stored in a class file when working with fields. Proguard
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature

# For using GSON @Expose annotation
-keepattributes *Annotation*

# Gson specific classes
-dontwarn sun.misc.**
#-keep class com.google.gson.stream.** { *; }

# Application classes that will be serialized/deserialized over Gson
-keep class com.google.gson.examples.android.model.** { ; }

# 这一句很重要,需要配置成自己的 entity 包路径
-keep class com.izpan.app.entity.** { *; }

# Prevent proguard from stripping interface information from TypeAdapter, TypeAdapterFactory,
# JsonSerializer, JsonDeserializer instances (so they can be used in @JsonAdapter)
-keep class * extends com.google.gson.TypeAdapter
-keep class * implements com.google.gson.TypeAdapterFactory
-keep class * implements com.google.gson.JsonSerializer
-keep class * implements com.google.gson.JsonDeserializer

# Prevent R8 from leaving Data object members always null
-keepclassmembers,allowobfuscation class * {
  @com.google.gson.annotations.SerializedName ;
}

##---------------End: proguard configuration for Gson  ----------

如有多个包路径,需要配置多个

附上 GSON 官方混淆地址

再去打包就妥了。

后端开发

JAVA中各个模型对象的理解

2020-8-22 16:59:06

后端开发

Android Preference 设置项简单使用详解

2020-9-8 12:35:40

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索