0

我的代码实现了onCompleteinterface 的方法com.google.android.gms.tasks.OnCompleteListener。并被com.google.firebase.messaging.FirebaseMessaging.getInstance().getToken().addOnCompleteListener(). 但是在 Proguard 之后,这个onComplete方法已经被完全删除了,并且运行时java.lang.AbstractMethodError崩溃了。我已经尝试了许多“-keep class”的组合,但没有运气!请帮忙,谢谢!

proguard之前的原始代码:

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.messaging.FirebaseMessaging;

public class MyClass {

    static public void testToken() {
        FirebaseMessaging.getInstance().getToken().addOnCompleteListener(new OnCompleteListener<String>() {
            @Override
            public void onComplete(@NonNull Task<String> task) {
                String token = task.isSuccessful() ? task.getResult() : null;
                System.out.println("Token received:" + token);
            }
        });
    }
}

在 proguard-project.txt 中:

-keep public class com.google.android.gms.tasks.* { *; }
-keep public class com.google.firebase.messaging.* { *; }

-dontwarn com.google.android.gms.tasks.**
-dontwarn com.google.firebase.messaging.**

在proguard之后:

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.firebase.messaging.FirebaseMessaging;

public class MyClass {

    public static void testToken() {
        FirebaseMessaging.getInstance().getToken().addOnCompleteListener(new OnCompleteListener<String>() {
        });
    }
}

它已被删除,而不是重命名。它得到了运行时异常!

16942 E AndroidRuntime: FATAL EXCEPTION: main
16942 E AndroidRuntime: Process: com.example.sample, PID: 16942
16942 E AndroidRuntime: java.lang.AbstractMethodError: abstract method "void com.google.android.gms.tasks.OnCompleteListener.onComplete(com.google.android.gms.tasks.Task)"
16942 E AndroidRuntime:     at com.google.android.gms.tasks.zzj.run(Unknown Source)
16942 E AndroidRuntime:     at android.os.Handler.handleCallback(Handler.java:739)
16942 E AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:95)
16942 E AndroidRuntime:     at android.os.Looper.loop(Looper.java:148)
16942 E AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5417)
16942 E AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method)
16942 E AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
16942 E AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
  788 W ActivityManager:   Force finishing activity com.example.sample/.MainActivity
4

0 回答 0