Instanziierung von android.gms.maps.MapFragment nicht möglich


82

Ich versuche, eine Demo mit Google Maps Android v2 mit sehr einfacher Aktivität zu erstellen. Kopieren Sie einfach den Code von der Google-Seite: https://developers.google.com/maps/documentation/android/start#adding_the_api_key_to_your_application

für die Aktivität:

package com.example.mapdemo;

import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends Activity {

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

für das Layout:

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

Ich hatte einen API-Schlüssel gemäß Seite beantragt und meine androidmanifest.xml-Datei wie folgt geändert:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.wenhai.driverschool"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />

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

    <!-- add for map2 -->
    <permission
        android:name="com.example.mapdemo.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.example.mapdemo.permission.MAPS_RECEIVE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
    <!-- External storage for caching. -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <!-- Maps API needs OpenGL ES 2.0. -->
    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="AIzaSyDVAF4WaVSVRDKJx87It8OSFP5txQcPabc" />

        <activity
            android:name=".MainActivity"
            android:label="@string/title_activity_main" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Ich verweise meine App auch auf Google-Play-Services_Lib in Eclipse.

Aber jedes Mal, Fehlerbericht in Logcat wie folgt:

2-05 16:22:53.609: E/AndroidRuntime(21623): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.wenhai.driverschool/com.wenhai.driverschool.MainActivity}: android.view.InflateException: Binary XML file line #2: Error inflating class fragment
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1967)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.ActivityThread.access$600(ActivityThread.java:127)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.os.Handler.dispatchMessage(Handler.java:99)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.os.Looper.loop(Looper.java:137)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.ActivityThread.main(ActivityThread.java:4441)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at java.lang.reflect.Method.invokeNative(Native Method)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at java.lang.reflect.Method.invoke(Method.java:511)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:823)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at dalvik.system.NativeStart.main(Native Method)
12-05 16:22:53.609: E/AndroidRuntime(21623): Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class fragment
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:697)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.view.LayoutInflater.inflate(LayoutInflater.java:466)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:255)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.Activity.setContentView(Activity.java:1835)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at com.wenhai.driverschool.MainActivity.onCreate(MainActivity.java:11)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.Activity.performCreate(Activity.java:4465)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1931)
12-05 16:22:53.609: E/AndroidRuntime(21623):    ... 11 more
12-05 16:22:53.609: E/AndroidRuntime(21623): Caused by: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.google.android.gms.maps.MapFragment: make sure class name exists, is public, and has an empty constructor that is public
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.Fragment.instantiate(Fragment.java:581)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.Fragment.instantiate(Fragment.java:549)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.Activity.onCreateView(Activity.java:4235)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:673)
12-05 16:22:53.609: E/AndroidRuntime(21623):    ... 20 more
12-05 16:22:53.609: E/AndroidRuntime(21623): Caused by: java.lang.ClassNotFoundException: com.google.android.gms.maps.MapFragment
12-05 16:22:53.609: E/AndroidRuntime(21623):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
12-05 16:22:53.609: E/AndroidRuntime(21623):    at android.app.Fragment.instantiate(Fragment.java:571)
12-05 16:22:53.609: E/AndroidRuntime(21623):    ... 23 more

Ich kenne den Grund dafür nicht.

Wenn ich google-play-services.jar zu meinem Projekt hinzufüge, wird ein weiterer Fehler gemeldet:

12-05 16:34:23.269: E/AndroidRuntime(22638): FATAL EXCEPTION: main
12-05 16:34:23.269: E/AndroidRuntime(22638): java.lang.NoClassDefFoundError: com.google.android.gms.R$styleable
12-05 16:34:23.269: E/AndroidRuntime(22638):    at com.google.android.gms.maps.GoogleMapOptions.createFromAttributes(Unknown Source)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at com.google.android.gms.maps.MapFragment.onInflate(Unknown Source)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.Activity.onCreateView(Activity.java:4242)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:673)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.view.LayoutInflater.inflate(LayoutInflater.java:466)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:255)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.Activity.setContentView(Activity.java:1835)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at com.wenhai.driverschool.MainActivity.onCreate(MainActivity.java:11)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.Activity.performCreate(Activity.java:4465)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1931)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.ActivityThread.access$600(ActivityThread.java:127)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.os.Handler.dispatchMessage(Handler.java:99)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.os.Looper.loop(Looper.java:137)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at android.app.ActivityThread.main(ActivityThread.java:4441)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at java.lang.reflect.Method.invokeNative(Native Method)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at java.lang.reflect.Method.invoke(Method.java:511)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:823)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590)
12-05 16:34:23.269: E/AndroidRuntime(22638):    at dalvik.system.NativeStart.main(Native Method)

Kann mir jemand dabei helfen?


2
Ich erhalte den gleichen Fehler mit MapView. Ich habe die Bibliothek hinzugefügt und alles wie auf dieser Seite beschrieben durchgeführt. Developers.google.com/maps/documentation/android/start, aber all dies war für mich nutzlos.
Jumper0k

1
Gleicher Fehler .. jede Lösung ...
Nilkash

1
Ich habe den gleichen Fehler und konnte noch keine gute Lösung finden :(
Ricardo Otero

Um diese Schritte zu sehen, wie ich denke, ist es noch ungelöst techhomeblog.wordpress.com/2013/02/23/…
Tofeeq Ahmad

Versuchen Sie, mit der rechten Maustaste auf Ihr Projekt in Eclipse zu klicken, und wählen Sie Android Tools> Support Library hinzufügen. In meinem Fall war es eine veraltete Version von ActionBarSherlock.
IgorGanapolsky

Antworten:


86

In IntelliJ IDEA (aktualisiert für IntelliJ 12):

  1. Erstellen Sie eine Datei ~/android-sdk/extras/google/google_play_services/libproject/google-play-services_lib/src/dummy.javamitclass dummy {} .
  2. Datei-> Modul importieren-> ~/android-sdk/extras/google/google_play_services/libproject/google-play-services_lib
  3. Modul aus vorhandenen Quellen erstellen
  4. Weiter-> Weiter-> Weiter-> Weiter-> Fertig stellen
  5. Datei-> Projektstruktur-> Module-> YourApp
  6. +-> Modulabhängigkeit-> Google-play-services_lib (Die +Schaltfläche befindet sich in der oberen rechten Ecke des Dialogfelds.)
  7. +-> Gläser oder Verzeichnisse->~/android-sdk/extras/google/google_play_services/libproject/google-play-services_lib/libs/google-play-services.jar
  8. Verwenden Sie die Pfeile up/ down, um <Module source>zum Ende der Liste zu gelangen.

Sie können löschen, dummy.javawenn Sie möchten.

Bearbeiten: Nachdem ich dies für eine Weile verwendet habe, habe ich festgestellt, dass es einen kleinen Fehler gibt. IDEA beschwert sich manchmal darüber , dass eine .imlProjektdatei im google-play-services_libVerzeichnis nicht geöffnet werden kann , obwohl Sie nie gesagt haben, dass dort ein Projekt vorhanden ist. In diesem Fall wird das Problem durch erneutes Erstellen des Projekts behoben, zumindest bis es wieder auftritt.


Funktioniert bei mir. Vielen Dank!
Kingtim

3
Hallo, ich kann die File > Import ModuleOption in meinem nicht finden Eclipse IDE. Bitte helfen Sie mir ...
Rahmathullah M

Dies ist für die überlegene IDE "IntelliJ IDEA".
Timmmm

2
Danke für deine Antwort! Aber es hat mir gereicht, Modul- und JAR-Abhängigkeit in das Projekt aufzunehmen, und alles hat funktioniert!
Lomza

3
Sie müssen die Dummy-Datei nicht mehr hinzufügen, da die Google Play Services-Bibliothek mit einer "offiziellen Dummy-Datei" aktualisiert wurde, um "einige IDEs" zu unterstützen (dh sie haben eine Korrektur für IntelliJ und Android Studio vorgenommen).
Guardius

33

Aktualisieren

Bitte folgen Sie den Commonsware MapV2-Codefragmenten, um ein besseres Verständnis zu erhalten.

(Es ist in der Omnibus-Ausgabe vorhanden)

https://github.com/commonsguy/cw-omnibus/tree/master/MapsV2

Das folgende Snippet funktioniert an meinem Ende einwandfrei SupportMapFragment. Ich entscheide mich für die Verwendung .

Vergessen Sie nicht, Ihrem Projekt etwas hinzuzufügen google-play-services.jar .

MainActivity.java

package com.example.newmapview;

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import com.google.android.gms.maps.SupportMapFragment;

public class MainActivity extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        SupportMapFragment fragment = new SupportMapFragment();
        getSupportFragmentManager().beginTransaction()
                .add(android.R.id.content, fragment).commit();
    }
}

manifest.xml

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

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="16" />

    <permission
        android:name="com.example.newmapview.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.example.newmapview.permission.MAPS_RECEIVE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.newmapview.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="XXXXX" />
    </application>

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

</manifest>

Hier ist das Ergebnis

Geben Sie hier die Bildbeschreibung ein Hoffe das wird helfen.


Hallo, Vipul Shah, danke. Ich mag die Nachricht von concole: [2012-12-06 10:20:26 - google-play-services_lib] google-play-services_lib.apk konnte nicht gefunden werden! Ich weiß nicht, ob diese fehlende Apk zu meinem Fehler geführt hat. Können Sie mir sagen, wie ich auf google-play-services.jar verweisen soll? Fügen Sie es einfach wie folgt hinzu: developer.android.com/intl/zh-CN/tools/projects/… . oder fügen Sie es in Eclipse wie folgt hinzu: Eigenschaften-> Java-Erstellungspfad-> Projekte, fügen Sie das Projekt google-play-services_lib hinzu. welches in deiner Seite? Vielen Dank.
mmm2006

@ mmm2006 Ich fürchte, Sie führen diese Anwendung möglicherweise auf dem Android-Emulator aus. Ich bin mir nicht sicher, aber möglicherweise tritt dieser Fehler auf, da auf dem Emulator keine Play Store-App vorhanden ist. Versuchen Sie es auf dem tatsächlichen Gerät.
Vipul

Tatsächlich starte ich es in meinem Telefon. ein Sony-Telefon.
mmm2006

Hallo Vipul, kannst du mir sagen, wie ich meine Markierungen mit MapFragment auf der Karte anzeigen kann? Ich habe eine Liste mit Breiten- und Längengraden. Ich möchte sie auf der Karte anzeigen. Ich habe MapView ausprobiert, aber für mich nicht funktioniert. Daher kann ich ItemizedOverlay nicht verwenden. MapFragment hat funktioniert. So zeigen Sie mehrere Markierungen auf MapFragment an. Wenn möglich, geben Sie mir einen Link mit Arbeitscode.
Shrikant

@VipulShah: Du bist rock. Kannst du mir sagen, warum dieser Fehler auftritt, weil ich vor einiger Zeit ein Tutotial entwickelt habe? ---> dj-android.blogspot.in/2013/02/… jetzt funktioniert der gleiche Code nicht.
Dhaval Parmar

23

Versuchen Sie einfach, Ihr Layout durch Folgendes zu ersetzen:

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
      android:id="@+id/map"
       android:name="com.google.android.gms.maps.SupportMapFragment"
       android:layout_width="wrap_content"
       android:layout_height="match_parent" />

Sie müssen das SupportMapFragment für API unter 11 verwenden!

Aurel


3
Entschuldigung, aber an meiner Stelle kann es auch nicht funktionieren. Fehlermeldung dieses Mal: ​​Auslöser: android.app.Fragment $ InstantiationException: Fragment com.google.android.gms.maps.SupportMapFragment kann nicht instanziiert werden: Stellen Sie sicher, dass der Klassenname vorhanden ist, öffentlich ist und einen leeren Konstruktor hat, der öffentlich ist. Ich kann SupportMapFragment in jar finden, aber es kann nicht funktionieren. Ich kenne den Grund nicht.
mmm2006

Es scheint, dass Sie so etwas tun müssen: 1. Laden Sie das Google Play Services SDK auf den Android SDK Mananger herunter. 2. Importieren Sie die Projektbibliothek in Eclipse. 3. Fügen Sie die Bibliothek Ihrem Projekt hinzu. 4. Stellen Sie sicher, dass Ihr Projekt die Datei android-support-v4.jar enthält (auch im Android SDK-Manager verfügbar). 5. Erstellen Sie ein Fragment und fügen Sie den Namen ('class = "com.google.android.gms.maps.MapFragment" />' für SDK> = 11 und 'class = "com.google.android.gms.maps.MapFragment hinzu "/> 'für SDK <11). 6. Vergessen Sie nicht, den Beispielcode auf einem Gerät auszuprobieren (Ihre App benötigt Google Play!)
Aurel

Ich habe festgestellt, dass ich dieser Anleitung folgen muss, um auf den Google Play-Dienst zu verweisen. developer.android.com/intl/zh-CN/tools/projects/… . Aber das von Google bereitgestellte Beispiel kann jetzt noch funktionieren. :(
mmm2006

Gibt es eine Idee, wie die Ansicht dem Framgament entspricht, um sie in die Fragment-XML-Datei einzufügen?
Harsha MV

1
@ mmm2006: Sie müssen "FragmentActivity" & nicht "Activity" erweitern, dann sollte es funktionieren und wird keine Ausnahme auslösen.
Veer

17

Ich hatte das gleiche Problem und brauchte zwei Tage, um eine Lösung zu finden, die für mich funktionierte:

  1. Löschen Sie das Projekt google-play-services_lib (Rechtsklick auf das Projekt löschen)
  2. Löschen Sie das Projekt mit der Google Maps-Demo ( MainActivity in meinem Fall), falls Sie eines haben
  3. Kopieren Sie das Projekt google-play-services_lib (Extras \ google \ google_play_services \ libproject \ google-play-services_lib) in Ihren Arbeitsbereich und importieren Sie es als allgemeines Projekt (Datei-> Import-> vorhandene Projekte in Workspase).
  4. Klicken Sie mit der rechten Maustaste auf Ihr Projekt (in das Sie die Karte laden möchten) -> Android -> fügen Sie (unter Bibliothek) google-play-services_lib hinzu

Sie sollten so etwas sehen:

Beachten Sie die

Hinweis: Sie sollten so etwas nicht haben (das Projekt sollte von Ihrem Arbeitsbereich aus verwiesen werden):

Geben Sie hier die Bildbeschreibung ein

Ich denke, das Problem ist, dass zwei Projekte auf dieselbe Bibliothek verweisen


Ich habe die Google Play-Dienste als Java-Build-Path-Bibliothek hinzugefügt, aber sie mussten unter Android / Library
Marimaf

10

Versuche dies

http://developer.android.com/tools/projects/projects-eclipse.html#ReferencingLibraryProject

Ich habe gerade das Projekt von Google Services hinzugefügt und eine Referenz in meiner Projekteigenschaft-> Android hinzugefügt


2
Dies war die kritische Lösung für mich, keine der anderen Antworten oben hat geholfen. Der Unterschied hier ist eigentlich ziemlich subtil - ich habe es als abhängiges Projekt über "Java Build Path" hinzugefügt, obwohl ich es eigentlich über das Menü "Android" hätte tun sollen. Ich habe diese Informationen zu einer meiner anderen Antworten hinzugefügt
Dan J

8
  1. Inzwischen kann die Demo über diesen Link funktionieren :
  2. Zum Beispiel Demo, es kann auch funktionieren:

Fügen Sie in Ihrem Projekt zwei JARs im libs-Verzeichnis hinzu. Folgen Sie den nachstehenden Informationen. Insbesondere denke ich, dass Sie:

  • Importieren Sie die eigentliche Quelle für das Projekt "google-play-services_lib" und verknüpfen Sie sie als Android-Bibliothek.
    • Tun Sie dies über Projekt -> Eigenschaften -> Android -> Bibliothek, Hinzufügen -> google-play-services_lib (Sie können mit der rechten Maustaste auf Ihr Projekt klicken und Eigenschaften auswählen und dann Android auswählen).
    • Fügen Sie es nicht als abhängiges Projekt über den "Java Build Path" für Ihr Projekt hinzu, das bei mir nicht funktioniert hat.
  • Fügen Sie die Dateien google-play-services.jar und android-support-v4.jar in einen Ordner "libs" im Beispielprojekt ein und fügen Sie sie als "Externe externe JARs" unter "Erstellungspfad -> Erstellungspfad konfigurieren -> Bibliotheken" hinzu. .

Ich fand diesen zweiten Schritt notwendig, da ich beim Versuch, den Beispielcode zu verwenden, genau den gleichen Fehler wie Sie traf. Der erste Schritt war notwendig, um einen NoClassDefFoundError in com.google.android.gms.R $ zu vermeiden, der in meinem realen Projekt stilisiert werden kann.

Ich musste auch einen Clean Build durchführen und die App vom Gerät deinstallieren (von einem früheren Testversuch), bevor der Beispielcode funktionierte.

Vielen Dank für Ihre Hilfe.


3

Vielleicht müssen Sie dies hervorheben:

Hinweis: Google Play-Dienste werden vom Android-Emulator nicht unterstützt. Um mithilfe der APIs zu entwickeln, müssen Sie ein Entwicklungsgerät wie ein Android-Telefon oder -Tablet bereitstellen.

http://developer.android.com/google/play-services/setup.html

Sie müssen ein physisches Entwicklungsgerät bereitstellen, auf dem Sie Ihre App ausführen und debuggen können. Verwenden Sie keinen Emulator. Funktioniert nicht.


3
OH MEIN GOTT! Warum ist diese Notiz auf der Hauptseite so klein und nicht auf jeder Seite groß rot? Ich habe gerade fast den ganzen Tag versucht, das zum Laufen zu bringen !!!!
Shmoula

Play Services sind jetzt auf Emulatoren verfügbar, auf denen Android v4.2.2 oder höher ausgeführt wird.
Brian White

2

In Ihrer MainActivity(oder in jeder Aktivität, in der Sie die v2-Karte platzieren möchten) müssen Sie erweitern FragmentActivityoder Activityentweder Sie möchten SupportMapFragmentoder nur MapFragment. Verwenden Sie die MapFragmentKlasse nur, wenn Sie auf API 12 und höher abzielen. Andernfalls verwenden Sie SupportMapFragment. Es ist ein subtiler Unterschied, aber es macht den Fehler.


2

Da Google Map jetzt unter Fragmente eingeschlossen ist, erweitern Sie Ihre Aktivität von FragmetActivity und nicht nur von Activity. Stellen Sie sicher, dass Sie Fragment nur aus dem Support Package importieren , wenn Sie " supporrtMapFragment " verwenden .


Google sollte wirklich das grundlegende Beispiel korrigieren, um das zu verwenden SupportMapFragment. Funktioniert nicht ohne ...
Muzikant

1

In meinem Intellij Idea-Projekt musste ich dem Projekt beide hinzufügen: google-play-services_lib und google-play-services.jar. Fügen Sie im Projekt google-play-services_lib auch google-play-services.jar hinzu. Wenn Sie danach alle hier beschriebenen Schritte ausgeführt haben , sollte Ihre Anwendung funktionieren.


Welche Kategorie verwenden Sie für das Verzeichnis (Klassen, JAR-Verzeichnis, Quellen usw.)?
Timmmm

1
In Intellij Idea füge ich google-play-services_lib wie ein Modul hinzu. Darüber hinaus erkennt Intellij Idea es nicht wie ein Modul, da der Ordner src leer ist. Sie sollten eine Java-Datei mit einem beliebigen Code in den Ordner src einfügen, anschließend ein Modul aus vorhandenen Quellen erstellen und es dem Projekt in der Projektstruktur hinzufügen. Löschen Sie dann die Java-Datei.
Jumper0k

1

Es war ein wenig schwierig, weil es in der vorherigen API anders war, aber ich habe eine Lösung gefunden. Google sagt, was hier zu tun ist . Entsprechend der Frage benötigen wir com.google.android.gmsKlassen, daher ist es notwendig, die einzurichten google play services, die nur eine Bibliothek ist, die wir wie diesen Link zu unserem Projekt hinzufügen müssen . Es ist sehr wichtig, die Kopie der Projektbibliothek zu importieren, google-play-services_libnicht die, die sich im SDK-Ordner befindet. Sobald dies erledigt ist, läuft das Tutorial von Google perfekt.


Es ist auch wichtig, welche API Sie verwenden. API 10 oder weniger benötigen Unterstützung für die Bibliothek developer.android.com/tools/extras/support-library.html. Was genau ist Ihr Fehler?
Joseph.dev89

1

Abgesehen von vielen der zuvor genannten Dinge war es mir wichtig, die .jar auch in Order and Export zu markieren. Soweit ich das beurteilen kann, wird es normalerweise nicht erwähnt und für mich war es entscheidend.

Markieren Sie die Bibliothek in Order and Export


1

Beziehen Sie sich auf diesen Vorschlag: https://stackoverflow.com/a/20215481/3080835

Außerdem musste ich dies zum ApplicationElement im Manifest hinzufügen :

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

und es hat perfekt funktioniert.


1

Fügen Sie diese Abhängigkeit in build.gradle hinzu

compile 'com.google.android.gms:play-services:6.5.87'

Nun funktioniert das

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <fragment
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.MapFragment"
        android:layout_width="match_parent"
        android:layout_height="388dp"
        android:layout_weight="0.40" />
</LinearLayout>

0

Um die Drive-bezogenen Importe zu erledigen, benötigen Sie einige Gläser aus dem Google Drive SDK . Es gibt einige große, daher können Sie sie individuell hinzufügen, um sie an Ihre App anzupassen.

Wenn das das nicht löst com.google.android.gms.* imports,the Google Play Services add-on needs to be installed (from Extras -> Google Play Services in the SDK Manager) and google-play-services.jar needs to be added to your build path.

BEARBEITEN:

In diesem Fall wurden die folgenden Gläser benötigt:

google-api-services-drive-v2-rev1-1.7.2-beta.jar

google-http-client-1.10.3-beta.jar

google-http-client-android2-1.10.3-beta.jar

google-oauth-client-1.10.1-beta.jar

google-api-client-android2-1.10.3-beta.jar

google-api-client-1.10.3-beta.jar


0

Ich hatte das gleiche Problem auf meinem LG-E730 mit 2.3.4 Android. Der Fehler wird angezeigt, bevor ich den Google Play-Dienst auf meinem Telefon aktualisiert habe.


0

Vergessen Sie nicht, die google-play-services_lib zu erstellen! Aus diesem Grund wird "Google-Play konnte nicht gefunden werden ... apk" angezeigt. Für mich waren unter Eclipse keine weiteren Hacks erforderlich, sondern um das Projekt über das Android-Untermenü zu referenzieren, nicht über den Java-Erstellungspfad oder über Projektreferenzen oder was auch immer. Keine manuell platzierten Gläser, für mich wurde eigentlich nichts benötigt.


0

In Eclipse ist es erforderlich, ein separates Projekt für Google Play-Dienste zu erstellen und es als Bibliothek aus Ihrem Android-Projekt zu referenzieren, anstatt einfach das JAR hinzuzufügen. Auf meinem Computer habe ich das Eclipse-Projekt von Google Play Services direkt aus D: \ adt-bundle-windows-x86-20130219 \ sdk \ extras \ google \ google_play_services \ libproject \ google-play-services_lib importiert und auf Lib-Projekt gesetzt, damit ich könnte es aus meinem Android-Projekt referenzieren.


0

Es wird im selben Tutorial angegeben, dass

Bitte beachten Sie, dass der folgende Code nur zum Testen Ihrer Einstellungen in einer Anwendung für Android API 12 oder höher nützlich ist

Ändern Sie einfach Ihre min SDK-Version auf 12 und es wird funktionieren

<uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="15" />

Haven hat Aurels Problemumgehung für ältere Versionen der API noch nicht ausprobiert.


0

Ich denke, es ist erwähnenswert (nachdem ich über eine Stunde damit verbracht habe, mir die Haare auszureißen), dass Sie FragmentActivity nicht verwenden können, wenn Sie MapFragment verwenden (SupportMapFragment funktioniert in dieser Umgebung einwandfrei). Ich war gerade bereit, es aufzugeben.


0

Erster Schritt http://developer.android.com/tools/projects/projects-eclipse.html#ReferencingLibraryProject Zweiter Schritt http://developer.android.com/google/play-services/setup.html Auf dieser Seite befindet sich eine HINWEIS, aber wir haben nicht aufgepasst

Hinweis: Sie sollten auf eine Kopie der Bibliothek verweisen, die Sie in Ihren Quellbaum kopiert haben. Sie sollten nicht auf die Bibliothek aus dem Android SDK-Verzeichnis verweisen.

Aber ich denke, es ist keine gute Art der Dokumentation :)


0

Dies könnte einigen helfen. Ich hatte zwei Projekte, eines davon war eine Kopie der Demo von Google und das hat gut funktioniert. Ein anderes habe ich in ein bestehendes Projekt kopiert und konnte es überhaupt nicht zum Laufen bringen. Und in der zweiten fehlgeschlagenen bekam ich die oben beschriebene Fehlermeldung.

Mein Problem war darauf zurückzuführen, dass eine Bibliothek nicht aktiviert wurde, obwohl ich sie neu erstellt, mehrmals importiert usw. habe. Klicken Sie mit der rechten Maustaste auf das Projekt -> Eigenschaften -> Java-Erstellungspfad -> Registerkarte Bestellen und Exportieren. Bei dem fehlgeschlagenen Projekt wurde die Registerkarte "Private Bibliotheken für Android" deaktiviert.

Sobald ich es aktiviert habe, hat das Projekt gut funktioniert.


0

Ich hatte alles, was alle oben sagten, und löste den Fehler, indem ich einfach die super.onCreate(savedInstanceState);erste Anweisung in der oncreate-Methode aufrief. bevor es letzte Zeile in der Methode war. : | den ganzen Tag verschwendet.


0

Ich habe dieses Problem. Ich aktualisiere nur die Google Play-Dienste und stelle sicher, dass Sie das Google-Play-Service-Lib-Projekt als Abhängigkeit hinzufügen. Es funktioniert jetzt ohne Codeänderung, aber ich erhalte immer noch "Die Ressourcen der Google Play-Dienste wurden nicht gefunden." Überprüfen Sie Ihre Projektkonfiguration, um sicherzustellen, dass die Ressourcen enthalten sind. " Dies geschieht jedoch nur, wenn Sie setMyLocationEnabled (true) festgelegt haben. Weiß jemand warum?


0

Ich erhalte nicht die richtige Lösung, aber ich löse sie, nachdem ich folgende Schritte ausgeführt habe: - Aktivieren Sie
beim Importieren von google-play-services_lib
die Option "Projekte in Arbeitsbereich kopieren". - Stellen
Sie die minSdkVersion nicht unter 13 ein. - Wenn Sie einen Fehler mit dem Thema erhalten, versuchen Sie es Ändern Ihres Layout-Themas in ein beliebiges System-Design
- Erstellen Sie Ihr Projekt von Grund auf neu oder setzen Sie alles zurück, wenn Sie es von irgendwoher erhalten


0

Ich habe das gleiche Problem und habe gerade Play Services vom SDK installiert und alle Probleme fliegen weg.


0

Ich habe in der Aktivität geschrieben
import com.google.android.gms.maps.SupportMapFragment;

und Eclipse gab mir das rote Symbol> Klicken> Projekt-Setup korrigieren ..> Archiv hinzufügen google-play-services.jar

Und schließlich hat es funktioniert !!



0

Ich habe dieses Problem bei der Verwendung von Android SDK für x86 auf einem 64-Bit-Computer von Windows 7 festgestellt. Ich habe die 64-Bit-Version des Android SDK heruntergeladen und Eclipse unter Fenster> Einstellungen> Android> SDK-Speicherort angezeigt, und das Problem trat nicht mehr auf.


0

Bitte aufmerksam lesen

Wenn alles wie bei Google Code funktioniert, überprüfen Sie bitte die Manifestdatei in meinem Fall. Ich habe Geo-Schlüssel und Kartenschlüssel hinzugefügt. Deshalb tritt eine Ausnahme auf.

Hinweis - Fügen Sie nicht zwei Schlüssel zur Manifestdatei hinzu, und entfernen Sie den Kartenschlüssel

meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="@string/google_maps_key"/>

Fügen Sie diesen Code hinzu.

 <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="@string/auto_location"/>

 <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version"/>
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.