Firebase возвращает нулевое значение в данных, которые поступают из документа FireStore в версии Google Play Store - PullRequest
0 голосов
/ 25 января 2020

У меня есть эта ошибка, сохраненная в Firebase Crashlytics. Сценарий прост, в продуктивной среде (путем загрузки приложения из Google Play), когда я пытаюсь получить документ в коллекции в Firestore, значения документа сохраняются в объекте, но они недействительны. Эта проблема не возникает, если я компилирую приложение из Android Studio на свой Samsung s8, но если я загружаю версию в Google Play Store, я загружаю ее, то у меня возникает эта проблема.

Вот ошибка трассировки стека от сбоев:

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
   at com.syntepro.appbeneficiosbolivia.SplashActivity.lambda$null$1(SplashActivity.java:25)
   at com.syntepro.appbeneficiosbolivia.-$$Lambda$SplashActivity$yoUq7EYShrgir_wINryItOzyIMs.onSuccess(-.java:4)
   at com.google.android.gms.tasks.zzn.run(zzn.java:6)
   at android.os.Handler.handleCallback(Handler.java:873)
   at android.os.Handler.dispatchMessage(Handler.java:99)
   at android.os.Looper.loop(Looper.java:214)
   at android.app.ActivityThread.main(ActivityThread.java:7045)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)

А это мой код от Java:

public void updateUI(FirebaseUser user) {
    int DURACION_SPLASH = 2000;
    if (user != null) {
        new Handler().postDelayed(() -> {
            FirebaseUser user1 = mAuth.getCurrentUser();
            DocumentReference ref = db.collection("Usuarios").document(Objects.requireNonNull(user1).getUid());
            ref.get().addOnCompleteListener(task -> {
                if (task.isSuccessful()) {
                    DocumentSnapshot documentSnapshot = task.getResult();
                    if (Objects.requireNonNull(documentSnapshot).exists()) {
                        try {
                        Usuario readUser = documentSnapshot.toObject(Usuario.class);
                        if (readUser != null) {
                            Toast.makeText(getApplicationContext(), getString(R.string.welcome) + " " + Objects.requireNonNull(readUser).getNombre(), Toast.LENGTH_LONG).show();

                            String pais = Objects.requireNonNull(readUser).getPais();
                            String cod = readUser.getCodigoArea();
                            String abr = readUser.getAbreviacion();
                            String moneda = readUser.getMoneda();

                            loadData(pais, cod, abr, moneda);

                            if (readUser.getTyc() != null && Objects.requireNonNull(readUser).getTyc().equals("1")) {
                                FirebaseUser currentUser = mAuth.getCurrentUser();
                                readAccessUser(Objects.requireNonNull(currentUser));
                            } else if (readUser.getTyc() != null && readUser.getTyc().equals("0")) {
                                startActivity(TyCActivity.getIntent(SplashActivity.this, "0"));
                                finish();
                            } else {
                                FirebaseUser currentUser = mAuth.getCurrentUser();
                                readAccessUser(Objects.requireNonNull(currentUser));
                            }
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    }
                } else {
                    Crashlytics.log(Log.DEBUG, TAG, "Get User -> Error getting data");
                }
            });
        }, DURACION_SPLASH);
    } else {
        new Handler().postDelayed(() -> {
            Intent intent = new Intent(SplashActivity.this, MainActivity.class);
            startActivity(intent);
            finish();
        }, DURACION_SPLASH);
    }
}

Я не знаю, что еще это может быть, я надеюсь, вы мне поможете, потому что я не могу воспроизвести эту проблему в среде разработчика, среде UAT или при компиляции приложения из Android Studio на свой телефон с производственной средой de Firebase JSON.

Спасибо

РЕДАКТИРОВАТЬ: Это происходит только тогда, когда я подписываю приложение, чтобы сделать его в виде apk-релиза для загрузки в Play Store.

...