#interface #proguard #abstractmethoderror
Вопрос:
Мои коды реализуют onComplete
метод интерфейса com.google.android.gms.tasks.OnCompleteListener
. И используется com.google.firebase.messaging.FirebaseMessaging.getInstance().getToken().addOnCompleteListener()
. Но после Proguard этот onComplete
метод был полностью удален и получил java.lang.AbstractMethodError
сбой во время выполнения. Я перепробовал много комбинаций «-сохранить класс», но безуспешно! Пожалуйста, помогите, спасибо!
Оригинальные коды перед прогардом:
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.**
После того, как прогард:
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