Как исправить падение приложения Android, которое использует Firebase? - PullRequest
1 голос
/ 31 марта 2019

Моя проблема довольно хлопотная, я создал приложение для Android Studio, которое имеет TextView, которое отображает маркер регистрации Firebase при запуске (я все еще новичок в Firebase и Android Studio, я экспериментирую), яМы собирали APK-файлы моего приложения, чтобы протестировать его на моем телефоне, так как Android Studio не обнаруживает мой телефон, когда он по какой-то причине подключен к моему ноутбуку, и я не могу использовать эмуляцию, потому что мой ноутбук старый (я думаю, что это не так)не поддерживает виртуализацию), поэтому всякий раз, когда я пытаюсь запустить свое приложение на своем телефоне, я получаю, что MyApp перестает работать на французском языке, и я не знаю, как просмотреть файлы журнала сбоев.

tl; dr iхочу знать, что приводит к сбою моего приложения

MainActivity.java

package com.gci.gestioncapteursincendie;

import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.TextView;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.iid.FirebaseInstanceId;
import com.google.firebase.iid.InstanceIdResult;

public class MainActivity extends AppCompatActivity {

    private TextView textView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView= findViewById(R.id.textViewToken);
        FirebaseInstanceId.getInstance().getInstanceId()
                .addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
                    @Override
                    public void onComplete(@NonNull Task<InstanceIdResult> task) {
                      if(task.isSuccessful()){
                          String token = task.getResult().getToken();
                          textView.setText("Token : " + token);
                        }
                        else
                      {
                          textView.setText("Token Not Generated");
                      }
                    }
                });
    }

}

Редактировать: мне удалось запустить приложение на моем телефоне через Android Studio, загрузив нужную версию.Драйверы, я проверил logcat, когда я запустил его, и я получил это:

03-31 18:55:45.069 8855-8855/? E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.gci.gestioncapteursincendie, PID: 8855
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gci.gestioncapteursincendie/com.gci.gestioncapteursincendie.MainActivity}: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.gci.gestioncapteursincendie. Make sure to call FirebaseApp.initializeApp(Context) first.
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3319)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3415)
        at android.app.ActivityThread.access$1100(ActivityThread.java:229)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1821)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:7406)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
     Caused by: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.gci.gestioncapteursincendie. Make sure to call FirebaseApp.initializeApp(Context) first.
        at com.google.firebase.FirebaseApp.getInstance(com.google.firebase:firebase-common@@16.0.1:219)
        at com.google.firebase.iid.FirebaseInstanceId.getInstance(Unknown Source)
        at com.gci.gestioncapteursincendie.MainActivity.onCreate(MainActivity.java:38)
        at android.app.Activity.performCreate(Activity.java:6904)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1136)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3266)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3415) 
        at android.app.ActivityThread.access$1100(ActivityThread.java:229) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1821) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:148) 
        at android.app.ActivityThread.main(ActivityThread.java:7406) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 

Редактировать 2: я добавил следующую строку кода, указанную пользователем Riley Manda :

FirebaseApp.initializeApp(this);

в методе onCreate(), и я получаю эту ошибку сейчас:

трассировка журнала:

03-31 19:10:19.203 11562-11562/com.gci.gestioncapteursincendie E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.gci.gestioncapteursincendie, PID: 11562
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gci.gestioncapteursincendie/com.gci.gestioncapteursincendie.MainActivity}: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.gci.gestioncapteursincendie. Make sure to call FirebaseApp.initializeApp(Context) first.
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3319)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3415)
        at android.app.ActivityThread.access$1100(ActivityThread.java:229)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1821)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:7406)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
     Caused by: java.lang.IllegalStateException: Default FirebaseApp is not initialized in this process com.gci.gestioncapteursincendie. Make sure to call FirebaseApp.initializeApp(Context) first.
        at com.google.firebase.FirebaseApp.getInstance(com.google.firebase:firebase-common@@16.0.1:219)
        at com.google.firebase.iid.FirebaseInstanceId.getInstance(Unknown Source)
        at com.gci.gestioncapteursincendie.MainActivity.onCreate(MainActivity.java:41)
        at android.app.Activity.performCreate(Activity.java:6904)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1136)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3266)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3415) 
        at android.app.ActivityThread.access$1100(ActivityThread.java:229) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1821) 
        at android.os.Handler.dispatchMessage(Handler.java:102) 
        at android.os.Looper.loop(Looper.java:148) 
        at android.app.ActivityThread.main(ActivityThread.java:7406) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 

Редактировать 3: I 'Создаю новую тему об этой проблеме, поскольку кажется, что тема отошла от своей первоначальной цели, спасибо всем за ответы.

Ответы [ 2 ]

1 голос
/ 31 марта 2019

Подключите ваше приложение к Crashlytics, таким образом, вы будете получать электронные письма о сбоях, которые приведут вас к точной проблеме, которая вызывает сбой вашего приложения.

enter image description here

Следуйте инструкциям на firebase для настройки аварийных приложений для вашего приложения в Android Studio. И каждый раз, когда ваше приложение аварийно завершает свою работу, вы получаете электронное письмо от Crashlytics:

enter image description here

Таким образом, каждый раз, когда ваше приложение аварийно завершает работу с вашего физического устройства, электронное письмо с уведомлением от Crashlytics автоматически отправляется на ваш адрес электронной почты с указанием точной строки кода / проблемы, которая вызывает сбой вашего приложения.

На основе вашего crashLog:

Вы должны инициализировать базу огня в своей деятельности: Добавьте это к своей деятельности:

 FirebaseApp.initializeApp(this);

В вашем onCreate:

   @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.yourlayout);
        FirebaseApp.initializeApp(this);
0 голосов
/ 31 марта 2019

Добавьте это FirebaseApp.initializeApp(this); сразу после setContentView(R.layout.yourlayout); или перед выполнением каких-либо подключений к firebase

Также для вашего устройства, которое не отображается в Android Studio.

  • сначала включите разработчиков. Опции Вкл.Ваш телефон https://www.digitaltrends.com/mobile/how-to-get-developer-options-on-android/
  • Включить отладку USB в разработчике Параметры настроек вашего телефона
  • Во-вторых, установить драйвер adb в вашей системе и попытаться повторно подключить ваше устройство
  • Принять приглашениена вашем телефоне, который спрашивает, хотите ли вы доверять вашей системе, и она должна работать
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...