У меня есть эта ошибка, сохраненная в 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.