it-swarm.com.de

Diese App wird nur ausgeführt, wenn Sie einen Fehler bei den Google Play-Diensten aktualisieren

Ich bin jetzt irgendwie verloren ... Ich implementiere eine Android-Anwendung mit Google Maps.

Damit es funktioniert, folgte ich einigen Tutorials, die ziemlich effizient waren. Aber ich bleibe dabei ":

enter image description here

Zur Behebung dieses Problems habe ich einige Tricks gefunden here oder here , die besagen, dass zur Lösung dieses Problems eine spezielle Konfiguration für den Emulator erforderlich ist, hier meine:

enter image description here

und einige .apk auf dem Emulator zu installieren.

enter image description here

Und die Magie soll gemacht werden und die Karte soll erscheinen, was nicht mein Fall ist.

Ich habe überprüft, ob meine Extras gut installiert waren:

enter image description here

Hier ist mein AndroidManifest:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
          package="mypack"
          Android:versionCode="1"
          Android:versionName="1.0">

    <uses-sdk Android:minSdkVersion="16"/>

    <permission Android:name="mypack.permission.MAPS_RECEIVE"
                Android:protectionLevel="signature"/>
    <uses-permission Android:name="mypack.permission.MAPS_receive"/>

    <!-- Permission pour utiliser la connexion internet -->
    <uses-permission Android:name="Android.permission.INTERNET" />
    <!-- Permission permettant de vérifier l'état de la connexion -->
    <uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE" />
    <!-- Permission pour stocker des données en cache de la map -->
    <uses-permission Android:name="Android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission Android:name="com.google.Android.providers.gsf.permission.READ_GSERVICES" />
    <uses-permission Android:name="Android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission Android:name="Android.permission.ACCESS_FINE_LOCATION" />

    <uses-feature
            Android:glEsVersion="0x00020000"
            Android:required="true" />

    <application Android:label="@string/app_name" Android:icon="@drawable/ic_launcher">
        <meta-data
                Android:name="com.google.Android.maps.v2.API_KEY"
                Android:value="MYKEY" />

        <meta-data Android:name="com.google.Android.gms.version"
                   Android:value="@integer/google_play_services_version" />

        <activity Android:name="Home"
                  Android:label="@string/app_name">
            <intent-filter>
                <action Android:name="Android.intent.action.MAIN"/>
                <category Android:name="Android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>

</manifest>

Hier ist meine MainActivity

import Android.app.Activity;
import Android.os.Bundle;
import com.google.Android.gms.maps.GoogleMap;
import com.google.Android.gms.maps.MapFragment;

public class Home extends Activity {
    /**
     * Called when the activity is first created.
     */
    private GoogleMap map;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
    }
}

und das entsprechende Layout:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
              Android:orientation="vertical"
              Android:layout_width="fill_parent"
              Android:layout_height="fill_parent"
        >
    <fragment xmlns:Android="http://schemas.Android.com/apk/res/Android"
              Android:id="@+id/map"
              Android:name="com.google.Android.gms.maps.MapFragment"
              Android:layout_width="match_parent"
              Android:layout_height="match_parent" />
</LinearLayout>

Ich hoffe, ein paar Fehler zu finden oder was ich hier vermisst habe, vielen Dank im Voraus.

25
Florent Gz

Im Android SDK Manager müssen Sie "Google APIs (x86 System Image)" unter "Android 4.4.2 (API 19)" installieren. Beenden Sie Eclipse und starten Sie es erneut.

Erstellen Sie anschließend ein neues virtuelles Android-Gerät in AVD Manager und wählen Sie "Google APIs x86 (Google Inc.) - API Level 19" als Ziel aus. Aktivieren Sie "Host-GPU verwenden", um sicherzustellen, dass das Zeichnen der Karte beschleunigt wird.

Das heißt, der neue Emulator wird Play Services vorinstalliert haben und schneller laufen, da es sich um ein x86-Image handelt.

17
BladeCoder

bei der Verwendung von Android Studio hat es mir nur geholfen, die Version der Google Play-Dienste in der Gradle-Datei von der letzten Version auf folgendes zu reduzieren:

compile 'com.google.Android.gms:play-services:4.2.+'

(Natürlich ist dies eine temporäre "Umgehung", damit Sie weiter laufen können.)

15
dvrm

Ich hatte ein Problem, diese Fehlermeldung zu erhalten und auf die Schaltfläche "Aktualisieren" zu klicken, führte zu nichts, es blieb in einer Schleife hängen. Folgendes funktionierte (in Android Studio):

  • Gehen Sie zu Extras> Android> SDK-Manager
  • Aktivieren Sie die Option "Paketdetails anzeigen"
  • Aktivieren Sie unter der gewünschten Android-Version (7.1.1 für mich jetzt) ​​Google Play Intel x86-Atom-System-Image google play intel atom system image
  • Klicken Sie auf Anwenden/OK und lassen Sie das Image installieren
  • Gehen Sie jetzt zu Extras> Android> AVD Manager
  • Virtuelles Gerät erstellen
  • Wählen Sie eines der Geräte mit einem Google Play-Logo aus:  devices with a Google Play logo
  • Führen Sie Ihre App im neuen Emulator aus. Sie können jetzt auf "Aktualisieren" klicken, wenn Sie den Fehler erhalten, die Google Play-Dienste über den Play Store auf Ihrem Gerät aktualisieren und Ihre App in Ruhe testen.
8
james246

Obwohl die bereitgestellten Antworten für einen Emulator funktionieren, könnte dies auf einem echten Gerät ein echtes Problem sein, und diese Lösungen werden auf einem echten Gerät nicht funktionieren. Dies kann auf einem alten Gerät geschehen, auf dem eine veraltete Version von Google Play Services installiert ist.

Um dieses Problem zu lösen, verfügt die Google Play Services-Bibliothek über eine Reihe von APIs, um die Verfügbarkeit von Google Play Services zu überprüfen. Die Klasse GoogleApiAvailability bietet hauptsächlich einige Methoden zur Behandlung von Verfügbarkeitsproblemen, z.

Um zu ermitteln, ob auf einem Gerät Google Play-Dienste verfügbar sind oder nicht, muss ich normalerweise eine Hilfsmethode erstellen, um die Prüfung auszuführen

private boolean checkPlayServices(){
    GoogleApiAvailability gaa = GoogleApiAvailability.getInstance();
    int result = gaa.isGooglePlayServicesAvailable(getApplicationContext());

    if(result != ConnectionResult.SUCCESS){
        if(gaa.isUserResolvableError(result)){
            gaa.getErrorDialog(this,result, REQUEST_PLAY_SERVICES_RESOLUTION).show();
        }

        return false;
    }

    return true;
}

Diese Hilfsmethode überprüft, ob Google Play-Dienste verfügbar sind oder nicht, indem der von isGooglePlayServicesAvailable zurückgegebene Fehlercode überprüft wird. Dann ruft er isUserResolvableError auf, um festzustellen, ob der Fehler vom Benutzer behoben werden kann (z. B. durch Aktualisieren der Google Play-Dienste). Wenn das Problem behoben werden kann, wird ein Dialogfeld angezeigt, in dem der Benutzer bestätigen kann, dass das System den Fehler beheben soll. Rufen Sie es dann für die onCreate-Methode der Aktivität auf. Ich führe die Prüfung wie folgt aus

//I normally assume Google Play services is available
private boolean playServicesAvailable = true;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_map_selector);

    //check for rare case where Google Play Services is not available
    playServicesAvailable = checkPlayServices();

    if(!playServicesAvailable){
        //hide UI elements and turn off features that rely on Google Play Services
    }
}

Hoffe, es hilft einigen da draußen

2
Leo

Verwenden Sie immer einen Emulator mit dem playicon, um sich die Konfiguration eines Emulators zu ersparen, der keine Unterstützung für Google Play bietet. enter image description here

wie im Bild dargestellt: Das Symbol play befindet sich unter der Playstore-Zeile.

 enter image description here

Nach der Installation des mit Google Play kompatiblen Emulators ... führen Sie Ihre App erneut im Emulator aus ... und wenn Sie die Benachrichtigung erhalten, dass "App wird nicht ausgeführt, es sei denn ...", klicken Sie auf die Benachrichtigung und folgen Sie den Anweisungen auf dem Bildschirm: "Signieren Bei der Verwendung eines Google Mail-Kontos ... E-Mail und Passwort usw. "erhalten Sie, sobald Sie der Google-Lizenz zustimmen, den Google Play-Bildschirm" Update ":  enter image description here

aktualisieren Sie Ihr Google Play-Programm und starten Sie Ihre App erneut .. Stellen Sie außerdem sicher, dass Sie die Google-Abhängigkeiten in Grad und Grad Ihrer App-Ebene haben:

Grad der App-Ebene build.gradle (Modul: app)

dependencies {

}

    apply plugin: 'com.google.gms.google-services'

Projektebene Gradle "build, gradle (Projekt: AppName)"

abhängigkeiten

    classpath 'com.google.gms:google-services:3.2.1'
}
2
RileyManda

Ich habe dieses Problem nur erhalten, wenn ich den Android-Emulator von Android Studio verwende ... __ Ich habe das Problem gelöst, indem ich Google-Services-Plugin zu gradle: app hinzugefügt habe

apply plugin: 'com.google.gms.google-services'

dann auf die Abhängigkeiten add

compile 'com.google.Android.gms:play-services:9.0.0'

zuvor habe ich benutzt 

compile 'com.google.Android.gms:play-services:9.4.0'

es wird jedoch ein Fehler angezeigt, dass ein Versionskonflikt vorliegt, und es wird empfohlen, com.Android.gms Version 9.0.0 zu verwenden

1
josua josh

Gehen Sie in Android Studio 3 zu Tools -> SDK Manager und installieren Sie die Google Play-Dienste  enter image description here

1
onmyway133

Ich hatte den gleichen Fehler. Behebung des Problems durch Aktualisierung von Android Studio zusammen mit den zugehörigen Android SDK-Tools. 

1
george mano

Beim Versuch, auf Android 7.0 zu bauen, ist dieser Fehler aufgetreten. Ich wurde unter 6.0 neu aufgebaut und hatte keine Probleme. Das Zurücksetzen der API-Stufe 1 kann Ihnen ebenfalls helfen.

0
Mr_Dave

Ich habe dieses Problem gelöst durch:

1- Stellen Sie sicher, dass "Google Play Services" in SDK-Tools installiert ist.

enter image description here

2- Stellen Sie sicher, dass AndroidManifest.xml folgende Zeilen enthält:

<uses-permission Android:name="Android.permission.INTERNET" />
<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE" />

3- In Abhängigkeiten von build.gradle fügen Sie diese Zeile hinzu:

classpath 'com.google.Android.gms:play-services-maps:17.0.0'

Hinweis: Möglicherweise müssen Sie die Version von Play-Services-Maps von 17 auf die neueste Version ändern, aber 17 ist spätestens im August 2019 ...

Wie dieses Bild:

enter image description here

Vergessen Sie nicht, das Projekt neu zu erstellen (wenn Sie flattern, führen Sie diesen Befehl im Terminal aus flattern sauber)

Dann siehst du, dass die Karte am Emulator arbeitet:

enter image description here

0
AnasSafi