App stürzt bei Start ab

  • 29 Antworten
  • Neuester Beitrag
Diskutiere App stürzt bei Start ab im Android App Entwicklung im Bereich Betriebssysteme & Apps.
P

Peter200980

Ambitioniertes Mitglied
Hallo,

ich möchte eine App machen, die den aktuellen Standort auf einer Karte anzeigt. Nachdem ich mit dem schreiben fertig war hat alles prima geklappt. App ist gestartet und meine Position wurde angezeigt. Danach habe ich die App aus dem Menü meines Handys gelöscht (Menü in dem aktuell laufende Programme gezeigt werden) und wollte sie nochmal starten --> App hat nur den weißen Hintergrund gezeigt und ist nach ein paar Sekunden abgestürzt. Wenn ich die Berechtigung des Standortes wieder weg nehme, dann wird die App ganz normal gestartet, jedoch Ohne Position.
Anbei noch mein Activity Code:
Code:
package de.androidnewcomer.partypeople_map;

import android.*;
import android.content.pm.PackageManager;
import android.os.Build;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import android.support.v4.content.ContextCompat;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {


   public GoogleMap mMap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
        // Obtain the SupportMapFragment and get notified when the map is ready to be used.
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }
    private boolean runtime_permissions() {
        if (Build.VERSION.SDK_INT >= 23 && ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

            requestPermissions(new String[] {android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission
                    .ACCESS_COARSE_LOCATION},100);

            return true;
        }
        return false;
    }

    @SuppressWarnings("MissingPermission")
    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        if (requestCode == 100) {
            if (permissions.length == 1 &&
                    permissions[0] == android.Manifest.permission.ACCESS_FINE_LOCATION &&
                    grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                mMap.setMyLocationEnabled(true);
            } else {
                // Permission was denied. Display an error message.
            }
        }
    }
    public void onMapReady( GoogleMap googleMap ) {
        if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION)
                == PackageManager.PERMISSION_GRANTED) {
            mMap.setMyLocationEnabled(true);
        } else {
            // Show rationale and request permission.
        }
    }
}
Schöne Grüße
Peter
 
swa00

swa00

Moderator
Teammitglied
Hallo Peter,

was gibt denn Dein ErrorLog in Verbindung zu ADB/USB aus ?

Poste den mal bitte hier, dann kann man dir auch besser helfen sonst wäre es ein reines Orakeln

Dann wäre es von Vorteil zu wissen , welches Ziel-Betriebssystem du verwendest
 
Zuletzt bearbeitet:
Cynob

Cynob

Enthusiast
Ich würde sagen da fehlt einfach der "OnResume" Override.

Gruß Cynob
 
swa00

swa00

Moderator
Teammitglied
Ich würde sagen da fehlt einfach der "OnResume" Override.
Wie kommst du darauf ? - Das ist hier nicht notwendig ...
(Bitte nicht verwirren)
 
Cynob

Cynob

Enthusiast
Das war jetzt mehr so den Code überflogen beim Kaffee eingießen und den Eintrag hab ich irgendwie vermisst. So viel prog ich jetzt auch nicht rum das ich die ganze api auswendig kann ;)
 
P

Peter200980

Ambitioniertes Mitglied
Hallo Stefan und Cynob,

anbei mein Logcat:
Code:
12-23 08:02:15.649 30977-30977/? I/art: Late-enabling -Xcheck:jni
12-23 08:02:15.867 30977-30977/de.peterapp.my_map W/System: ClassLoader referenced unknown path: /data/app/de.peterapp.my_map-1/lib/arm64
12-23 08:02:15.881 30977-30977/de.peterapp.my_map I/InstantRun: Instant Run Runtime started. Android package is de.peterapp.my_map, real application class is null.
12-23 08:02:20.253 30977-30977/de.peterapp.my_map W/System: ClassLoader referenced unknown path: /data/app/de.peterapp.my_map-1/lib/arm64
12-23 08:02:20.399 30977-30977/de.peterapp.my_map I/FirebaseInitProvider: FirebaseApp initialization unsuccessful
12-23 08:02:20.756 30977-30991/de.peterapp.my_map I/art: Background sticky concurrent mark sweep GC freed 19155(3MB) AllocSpace objects, 61(1852KB) LOS objects, 34% free, 8MB/12MB, paused 11.200ms total 36.582ms
12-23 08:02:21.015 30977-30977/de.peterapp.my_map I/zzai: Making Creator dynamically
12-23 08:02:21.461 30977-30987/de.peterapp.my_map W/art: Suspending all threads took: 14.364ms
12-23 08:02:21.598 30977-30977/de.peterapp.my_map W/System: ClassLoader referenced unknown path: /data/user/0/com.google.android.gms/app_chimera/m/0000001a/n/arm64-v8a
12-23 08:02:21.732 30977-30977/de.peterapp.my_map I/System.out: [/system/bin/getprop, debug.mapvie.w.logs]
12-23 08:02:21.732 30977-30977/de.peterapp.my_map I/System.out: null
12-23 08:02:21.732 30977-30977/de.peterapp.my_map I/System.out: null
12-23 08:02:21.749 30977-30977/de.peterapp.my_map I/System.out: Calling by::className:maps.y.D  MethodName:a
12-23 08:02:21.780 30977-30977/de.peterapp.my_map W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
12-23 08:02:21.936 30977-30977/de.peterapp.my_map I/Google Maps Android API: Google Play services client version: 10084000
12-23 08:02:21.955 30977-30987/de.peterapp.my_map W/art: Suspending all threads took: 8.442ms
12-23 08:02:21.968 30977-30977/de.peterapp.my_map I/Google Maps Android API: Google Play services package version: 10084446
12-23 08:02:22.005 30977-30977/de.peterapp.my_map W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
12-23 08:02:22.035 30977-30977/de.peterapp.my_map W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
12-23 08:02:22.112 30977-30977/de.peterapp.my_map W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
12-23 08:02:22.143 30977-30977/de.peterapp.my_map I/System.out: [/system/bin/getprop, debug.mapview.gmmserver]
12-23 08:02:22.143 30977-30977/de.peterapp.my_map I/System.out: null
12-23 08:02:22.143 30977-30977/de.peterapp.my_map I/System.out: null
12-23 08:02:22.144 30977-30977/de.peterapp.my_map I/System.out: Calling by::className:maps.y.D  MethodName:a
12-23 08:02:22.165 30977-30977/de.peterapp.my_map W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
12-23 08:02:22.177 30977-30977/de.peterapp.my_map W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
12-23 08:02:22.212 30977-30977/de.peterapp.my_map W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
12-23 08:02:22.230 30977-30977/de.peterapp.my_map W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
12-23 08:02:22.321 30977-30977/de.peterapp.my_map W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
12-23 08:02:22.322 30977-30977/de.peterapp.my_map W/f: Suppressed StrictMode policy violation: StrictModeDiskWriteViolation
12-23 08:02:22.349 30977-30977/de.peterapp.my_map I/System.out: [/system/bin/getprop, debug.mapview.renderer]
12-23 08:02:22.349 30977-30977/de.peterapp.my_map I/System.out: null
12-23 08:02:22.349 30977-30977/de.peterapp.my_map I/System.out: null
12-23 08:02:22.350 30977-30977/de.peterapp.my_map I/System.out: Calling by::className:maps.y.D  MethodName:a
12-23 08:02:22.374 30977-30977/de.peterapp.my_map W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
12-23 08:02:22.492 30977-30977/de.peterapp.my_map W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
12-23 08:02:22.496 30977-30977/de.peterapp.my_map I/c: Token loaded from file. Expires in: 372537358 ms.
12-23 08:02:22.496 30977-30977/de.peterapp.my_map I/c: Scheduling next attempt in 372237 seconds.
12-23 08:02:22.706 30977-30977/de.peterapp.my_map W/f: Suppressed StrictMode policy violation: StrictModeDiskWriteViolation
12-23 08:02:22.706 30977-30977/de.peterapp.my_map W/f: Suppressed StrictMode policy violation: StrictModeDiskWriteViolation
12-23 08:02:23.038 30977-31362/de.peterapp.my_map I/System: core_booster, getBoosterConfig = false
12-23 08:02:23.120 30977-31436/de.peterapp.my_map W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
12-23 08:02:23.120 30977-30977/de.peterapp.my_map W/f: Suppressed StrictMode policy violation: StrictModeDiskReadViolation
12-23 08:02:23.123 30977-30977/de.peterapp.my_map W/f: Suppressed StrictMode policy violation: StrictModeDiskWriteViolation
12-23 08:02:23.193 30977-30977/de.peterapp.my_map I/HwSecImmHelper: mSecurityInputMethodService is null
12-23 08:02:23.291 30977-30977/de.peterapp.my_map E/HAL: load: id=gralloc != hmi->id=gralloc
12-23 08:02:23.358 30977-31362/de.peterapp.my_map I/System: core_booster, getBoosterConfig = false
12-23 08:02:23.944 30977-30977/de.peterapp.my_map I/Process: Sending signal. PID: 30977 SIG: 9
Hierbei wird die Zeile
12-23 08:02:23.291 30977-30977/de.peterapp.my_map E/HAL: load: id=gralloc != hmi->id=gralloc
rot markiert. Ich habe jedoch keine Ahnung, was es damit auf sich hat.
Schöne Grüße
Peter
 
swa00

swa00

Moderator
Teammitglied
Keine Ursache, (mit milch und Zucker) :)

ein On Resume / resp OnPause wird verwendet um eine neu-Initalisierung durchzuführen , wenn die App bereits im Cache ist ...
Das ist aber bei ihm noch gar nicht der Fall.

Er hat irgendwo einen nullpointer auf ein Permission Request - die Frage ist nur , wo genau , deshalb benötige ich von ihm den Log ..
Ich vermute mal , dass er grösser Jelly einsetzt...
-- Dieser Beitrag wurde automatisch mit dem folgenden Beitrag zusammengeführt --
Hallo Peter ,

schalte mal bitte Firebase aus - setze das auf "Only Selected appliction" und dann bitte von verbose auf Error .. (ohne Filter)

Dann den Log nochmal bitte , das da oben ist der system out , ich würde gerne wissen , in welcher zeile es abstürtzt

Danke
 
Cynob

Cynob

Enthusiast
@swa00 Macht Sinn :D
 
P

Peter200980

Ambitioniertes Mitglied
Hallo Stefan,

ok hab ich alles gemacht, hier der Error Log
Code:
12-23 08:02:23.291 30977-30977/de.peterapp.my_map E/HAL: load: id=gralloc != hmi->id=gralloc
 
swa00

swa00

Moderator
Teammitglied
Hallo Peter - sehr dubios :)
Dein Log oben gibt nämlich Firebase an und im gesamten verlauf nichteinmal eine einzige Init Zeile :-(

Nun , dann suchen wir jetzt :)

was passiert , wenn du die App nur einmal (mit Absturz) startest, dann manuell in die Permission gehst und dort mal alles zulässt.
Dann GPS ein und dann die App manuell nochmal startest ( ohne AS)
 
P

Peter200980

Ambitioniertes Mitglied
Hallo Stefan,

folgendes passiert.
1. Ich installiere die App (keine Berechtigungen) --> App funktioniert

2. Ich gehe unter den App Einstellungen und gebe alle Berechtigungen frei --> App stürzt ab
 
swa00

swa00

Moderator
Teammitglied
Öhm , das ist jetzt ein echtes Weihnachts-Ei :)

Ich vermute eben , dass es ggf an der Last FixedPosition liegt , bin mir aber noch nicht ganz sicher.
ODER dein Permission code hat noch was drin , was ich jetzt noch nicht entdeckt habe



Nächster Versuch :
Die app ist ja schon auf dem device - klammer mal alle permission-checks im Quellcode aus
setzte manuel wieder die permission auf ein (so dass nur die Map operiert)

In dem falle hat die app ja schon die permissions müsste also klappen

P.S in der Manifest sind ja alle permissions gesetzt - gehe ich mal von aus
 
Zuletzt bearbeitet:
P

Peter200980

Ambitioniertes Mitglied
Hallo Stefan

Die app ist ja schon auf dem device - klammer mal alle permission-checks im Quellcode aus
setzte manuel wieder die permission auf ein (so dass nur die Map operiert)
was genau meinst du damit?
Ich habe jetzt einfach alle checks als Kommentar dargestellt. Jetzt stürzt sie mit Standortberechtigung und Ohne Standortberechtigung ab.
 
swa00

swa00

Moderator
Teammitglied
Hallo Peter...

in deinem Code gehst du ja hin und forderst den User auf, die Permissions zuzulassen.
Diesen Teil sollst du komplett weglassen - sprich ausklammern.

Das ist ja unabhängig von dem , was du mit der Map machen willst .

Da du aus meiner SIcht ein recht merkwürdiges Verhalten deiner App hast , kann ich ja hie aus der Ferne nur Orakeln
ob deine Map was verursacht, oder deine Permissions irgend etwas drin haben , die dein Device nicht möchte .

Ich gehe - auch bei meinem Code hin - und verwende das Ausschlussverfahren.

Erst dann , wenn ich weis , vor der Pferdefuss ist , kann ich auch die Richtung erahnen.

Eines ist jetzt wichtig : Die App muss auf deinem Device schon sein und muss von dir die manuellen Berechtigungen erhalten haben.

Wenn dann nach der obigen Änderung die Map geht , dann müssen wir bei dir bei den Permissions suchen .
Du hast das auch quasi zweimal drin , macht mich auch ein wenig stutzig.
Und dann ist mir noch aufgefallen , dass du nirgendwo ein try / catch drin hast .. das erschwert die sache natürlich
ungemein ..

Aber ich denke wir werden dass schon finden :)
 
Zuletzt bearbeitet:
P

Peter200980

Ambitioniertes Mitglied
Hallo Stefan,

ich habe nun folgendes Ausgeklammert:
Code:
package de.androidnewcomer.partypeople_map;import android.*;import android.content.pm.PackageManager;import android.os.Build;import android.support.v4.app.FragmentActivity;import android.os.Bundle;import android.support.v4.content.ContextCompat;import com.google.android.gms.maps.CameraUpdateFactory;import com.google.android.gms.maps.GoogleMap;import com.google.android.gms.maps.OnMapReadyCallback;import com.google.android.gms.maps.SupportMapFragment;import com.google.android.gms.maps.model.LatLng;import com.google.android.gms.maps.model.MarkerOptions;public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {   public GoogleMap mMap;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_maps);        // Obtain the SupportMapFragment and get notified when the map is ready to be used.        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()                .findFragmentById(R.id.map);        mapFragment.getMapAsync(this);    }    /*private boolean runtime_permissions() {        if (Build.VERSION.SDK_INT >= 23 && ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {            requestPermissions(new String[] {android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission                    .ACCESS_COARSE_LOCATION},100);            return true;        }        return false;    }    @SuppressWarnings("MissingPermission")    @Override    /*public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {        if (requestCode == 100) {            if (permissions.length == 1 &&                    permissions[0] == android.Manifest.permission.ACCESS_FINE_LOCATION &&                    grantResults[0] == PackageManager.PERMISSION_GRANTED) {                mMap.setMyLocationEnabled(true);            } else {                // Permission was denied. Display an error message.            }        }    }*/    public void onMapReady( GoogleMap googleMap ) {       /* if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION)                == PackageManager.PERMISSION_GRANTED) {*/            mMap.setMyLocationEnabled(true);    /*} else {*/            // Show rationale and request permission.        }    }
App Stürzt trotzdem ab :(
 
swa00

swa00

Moderator
Teammitglied
Also ich kann den Code oben so nicht sehen :)
Scrollen ohne ende ...

Es macht mich SEHR stutzig , dass du kein ErrorLog bekommst ...
Eigentlich ist das Grundausstattung - ohne den kann man im Prinzip keinen Fehler finden

Dann möchte ich dich bitten NUR den Map-Teil zu nehmen , den in ein try / catch zu setzen
Danach bitte dann hier den Exeption print

Nix ausklammern , alles weg damit .. wir brauchen übersicht
 
P

Peter200980

Ambitioniertes Mitglied
Hallo Stefan,

wie soll ich das in Try und catch setzen, verstehe gerade nicht wie du das meinst
-- Dieser Beitrag wurde automatisch mit dem folgenden Beitrag zusammengeführt --
Code:
package de.androidnewcomer.partypeople_map;import android.*;import android.content.pm.PackageManager;import android.os.Build;import android.support.v4.app.FragmentActivity;import android.os.Bundle;import android.support.v4.content.ContextCompat;import android.support.v4.content.PermissionChecker;import com.google.android.gms.maps.CameraUpdateFactory;import com.google.android.gms.maps.GoogleMap;import com.google.android.gms.maps.OnMapReadyCallback;import com.google.android.gms.maps.SupportMapFragment;import com.google.android.gms.maps.model.LatLng;import com.google.android.gms.maps.model.MarkerOptions;import java.security.Permission;public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {   public GoogleMap mMap;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_maps);        // Obtain the SupportMapFragment and get notified when the map is ready to be used.        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()                .findFragmentById(R.id.map);        mapFragment.getMapAsync(this);    }    private boolean runtime_permissions() {        if (Build.VERSION.SDK_INT >= 23 && ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {            requestPermissions(new String[] {android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission                    .ACCESS_COARSE_LOCATION},100);            return true;        }        return false;    }    @SuppressWarnings("MissingPermission")    @Override    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {        if (requestCode == 100) {            if (permissions.length == 1 &&                    permissions[0] == android.Manifest.permission.ACCESS_FINE_LOCATION &&                    grantResults[0] == PackageManager.PERMISSION_GRANTED) {                mMap.setMyLocationEnabled(true);            } else {                // Permission was denied. Display an error message.            }        }    }    public void onMapReady( GoogleMap googleMap ) {        try {            mMap.setMyLocationEnabled(true);        }        // Show rationale and request permission.        catch () {            if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION)                    == PackageManager.PERMISSION_GRANTED) {            } else {                // Show rationale and request permission.            }        }    }            }
so bestimmt nich oder?
 
swa00

swa00

Moderator
Teammitglied
im onCreate

try
{
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
catch (Exeption e)
{
Log.d("PETER",e.toString();
}
und dann

public void onMapReady( GoogleMap googleMap )
{
try
{

mMap.setMyLocationEnabled(true);
catch (Exeption e)
{
Log.d("PETER",e.toString();
}
}

und dann schaust du , was du im Log angezeigt bekommst

P.S. ich bin aber jetzt mal bis ca 12:00 in einem Meeting ...
 
P

Peter200980

Ambitioniertes Mitglied
ok mache ich ja du kein Stress bin dir eh voll dankbar für deine Zeit.
-- Dieser Beitrag wurde automatisch mit dem folgenden Beitrag zusammengeführt --
im Log wird mir wieder diese Meldung gezeigt:
Code:
12-23 08:02:23.291 30977-30977/de.peterapp.my_map E/HAL: load: id=gralloc != hmi->id=gralloc
:(
 
swa00

swa00

Moderator
Teammitglied
Hallo Peter, - weiter geht es :)

der Log interessiert uns jetzt nicht :)
Wenn du jetzt die App startest, hast du Einträge im Debug Fenster , die mit "PETER" beginnen

Schau mal bitte in deine PN - da habe ich dir noch was geschickt
 
Ähnliche Themen - App stürzt bei Start ab Antworten Datum
3
3
6