相关疑难解决方法(0)

适当的Proguard配置,以保持静态内部类

我有以下内容:

public class A extends B {
    static class C {
        Object field1;
        int field2;
        boolean field3;
    }
}
Run Code Online (Sandbox Code Playgroud)

无法通过反射拿到C级!

我尝试过以下方法:

-keep class com.path.to._class.A$** {*;}

-keep class com.path.to._class.A$* {*;}

-keep class com.path.to._class.A$C {*;}

-keep class com.path.to._class.A$C {
    <fields>;
}

-keep class com.path.to._class.A$C {
    Object field1;
    int field2;
    boolean field3;
}
Run Code Online (Sandbox Code Playgroud)

以上都没有奏效.我在这里做错了吗?

也许值得一提的是B扩展了View ......

java android proguard inner-classes

7
推荐指数
1
解决办法
5172
查看次数

Gson.toJson 返回 null [ProGuard 问题]

用户错误报告显示Gson().toJson(obj)偶尔返回,{}但对于大多数用户来说它工作正常。

我访问了一个用户,他在手机上遇到了错误并调试了应用程序,我制作Toast了显示发送到服务器的内容,我看到了 Toast 显示{},并且记录ID也没有显示null

这是我所做的。

private class ClassA{
        String ID;
        ArrayList<ClassB> Records;

        ClassA(String ID, ArrayList<ClassB> Records) {
            this.ID= ID;
            this.Records= Records;
        }
 }

 private class ClassB {
        int T;
        int F;
        String D;

        ClassB (int T, int F, String D) {
            this.T= T;
            this.F = F;
            this.D= D;
        }

}
Run Code Online (Sandbox Code Playgroud)

在这里我做序列化对象

ClassA obj = new ClassA(ID,Records); 
String json = new Gson().toJson(obj);
Run Code Online (Sandbox Code Playgroud)

但是new Gson().toJson(obj)对于某些用户来说是正确的,但对于某些回报{} …

java android json gson

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

Android proguard,保留内部类的内部类

家长问题:Android proguard,保留内部类

我的问题是内部类的内部类

我的android项目中的一个SDK有一个类A,它有两个静态内部类。应用proguard后发现它们被剥离了。

public class A{
  ....

  static class B{
    ...
    static class D {
        ....
    }

  }

  static class C{
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

我的 proguard 看起来像这样

-keepattributes Exceptions, InnerClasses
-keep class com.xxx.A
-keep class com.xxx.A$*
Run Code Online (Sandbox Code Playgroud)

这可以防止 B、C 类受到 proguard 的影响。但D级没有运气。我-keep class com.xxx.A$**也尝试过。

java android android-proguard

5
推荐指数
1
解决办法
3811
查看次数

Firebase-UI库的Proguard配置

在创建启用了proguard的APK时,使用Firebase-UI库(com.firebaseui:firebase-ui:0.3.0)中的FirebaseRecyclerAdapter时会引发以下异常:

java.lang.RuntimeException: java.lang.NoSuchMethodException: <init> [class android.view.View]
                                                                              at com.firebase.ui.FirebaseRecyclerAdapter.onCreateViewHolder(FirebaseRecyclerAdapter.java:168)
Run Code Online (Sandbox Code Playgroud)

调试版本(没有proguard)工作正常.谁有Firebase-UI的工作程序配置?

我当前的proguard配置看起来像这样(只有Firebase相关部分):

-optimizationpasses 5
-keepattributes SourceFile,LineNumberTable,Exceptions, Signature, InnerClasses,*Annotation*

-keepnames class ** { *; }

-keep class com.firebase.** { *; }
-keepnames class com.fasterxml.jackson.** { *; }
-keepnames class javax.servlet.** { *; }
-keepnames class org.ietf.jgss.** { *; }
Run Code Online (Sandbox Code Playgroud)

android firebase firebase-realtime-database android-proguard firebaseui

3
推荐指数
1
解决办法
1822
查看次数