相关疑难解决方法(0)

Android上的ProGuard和Gson(ClassCastException)

我和Gson和ProGuard度过了一段难忘的时光.我有一个简单的对象,当我解析tojson时,保存到sqllite并从数据库读回以便将json加载回我的对象​​,我得到一个java.lang.classcastexception.如果我不使用ProGuard,everthing工作正常.

我已经验证了发送到数据库并从数据库获取的json字符串是相同的.从json转换时不会抛出异常,而是在我尝试访问对象时抛出异常.

这是我的简单对象:

public class ScanLog extends ArrayList<SingleFrame>
{
     private static final long serialVersionUID = 1L;

     public ScanLog()
     {

     }
}

public final class SingleFrame 
{
    public int Position;
    public int Time;
    public Map<Integer,String> MainDataMap;
    public Map<Integer,String> DataMap;

    public SingleFrame(int position, int time, 
                    Map<Integer,String> mainDataMap, Map<Integer,String> dataMap)
    {
        this.Position = position;
        this.Time = time;
        this.MainDataMap = mainDataMap;
        this.DataMap = dataMap;
    }

}
Run Code Online (Sandbox Code Playgroud)

我的应用程序的所有其他方面都很好,但使用proguard导致这种情况发生....我已经在proguard.cfg中尝试了各种-keep命令,但我不确定我做的是对的.

编辑 - 添加PROGUARD.CFG

-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontpreverify
-verbose
-dontshrink
-dontoptimize

-keep public class * extends android.app.Activity
-keep public …
Run Code Online (Sandbox Code Playgroud)

android proguard gson

31
推荐指数
5
解决办法
2万
查看次数

启用 ProGuard 规则时,Gson 解析不起作用

[![Proguard规则][gson解析版本2.8.0]][android官方volley版本1.0.0]

启用 ProGuard 规则时,Gson 解析不起作用。我使用的是Volley 1.0.0正式版和Gson 2.8.0版。因此,每当我启用 ProGuard 规则时,Gson 解析都不起作用。我还在proguard-rules.pro文件中添加了必需的规则,但它仍然不起作用。

依赖性

compile 'com.google.code.gson:gson:2.8.0'
compile 'com.android.volley:volley:1.0.0'
Run Code Online (Sandbox Code Playgroud)

混淆规则:

-ignorewarnings
-keep class org.joda.** { *; }
-dontwarn org.joda.convert.FromString
-dontwarn org.joda.convert.ToString
-dontwarn org.joda.convert.**
-dontwarn org.joda.time.**
-keep class org.joda.time.** { *; }
-keep interface org.joda.time.** { *; }
-dontwarn org.mockito.**
-dontwarn sun.reflect.**
-dontwarn android.test.**
-dontwarn java.lang.management.**
-keepattributes Signature
-keep class com.google.gson.examples.android.model.** { *; }
-keep class com.google.gson.**{ *; }
-dontwarn com.fasterxml.jackson.**
-keep class com.fasterxml.jackson.** { *; }
Run Code Online (Sandbox Code Playgroud)

解析方法

 private static void verifyResponse(final String …
Run Code Online (Sandbox Code Playgroud)

android gson android-volley android-proguard

6
推荐指数
1
解决办法
2449
查看次数