Kein Klassenfehler bei Google-Play-Diensten / Karten
-
20-12-2019 - |
Frage
Bekommen NoClassDefFoundError
innerhalb des Projekts und in Google Maps für Android Beispiel im Ordner Google-play-services.
Ich habe es bisher versucht:
- Importieren Sie Google-play-services_lib über den Assistenten in den Arbeitsbereich und stellen Sie sicher, dass der Code in das Verzeichnis kopiert wird
- Google-play-services_lib manuell in ein Verzeichnis mit Beispiel kopieren und dann in den Arbeitsbereich importieren
- Jar in den Arbeitsbereich kopieren
- Google Play-Dienste sind auf Testgeräten installiert (Nexus 5, Galaxy S4)
- Neben der Bibliothek unter meinem Projekt befindet sich ein grünes Häkchen, wenn Sie zu Eigenschaften> Android gehen
- Ich kann die Klassen zur Kompilierungszeit im Quellcode sehen, kompiliert ohne Fehler
- Installierte die Bibliothek vom Android SDK Manager neu und stellte sicher, dass der Schlüssel in der Google API-Konsole korrekt ist;außerdem wurde sichergestellt, dass Version 2 von Maps für diesen Schlüssel aktiviert ist
- Proguard-Ausnahmen gemäß Integrationsanweisungen hinzugefügt
Irgendwelche Ideen?
Manifestieren:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.package.projectname"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="18"
android:targetSdkVersion="21" />
<permission
android:name="com.package.projectname.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-permission android:name="com.package.projectname.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.package.projectname.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:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".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>
<activity
android:name="com.package.projectname.MapActivity"
android:label="@string/title_activity_map"
android:parentActivityName="com.package.projectname.MainActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.package.projectname.MainActivity" />
</activity>
<uses-library
android:name="com.google.android.maps"
android:required="true" />
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value=“my_key_from_google_api_console” />
</application>
</manifest>
Lösung
Ich glaube nicht, dass du die Leitung brauchst:
<uses-library
android:name="com.google.android.maps"
android:required="true" />
Tatsächlich denke ich, dass das der Name der alten Kartenbibliothek ist.Versuchen Sie, es zu entfernen, und prüfen Sie, ob dadurch Ihr Problem behoben wird.Stellen Sie außerdem sicher, dass Ihr Code von importiert wird com.google.android.gms.maps
und com.google.android.gms.maps.model
, die Pakete für Google Maps API V2.
UPDATE
Ihre Build-Konfiguration enthält die Google Play Services-JAR nicht in Ihrer APK.
Um dies in IntelliJ zu beheben: https://stackoverflow.com/a/17977734/1235702
Um dies in Eclipse zu beheben, führen Sie die Schritte 3 und 4 hier aus: https://docs.google.com/document/pub?id=19nQzvKP-CVLd7_VrpwnHfl-AE9fjbJySowONZZtNHzw (Ich habe dieses Dokument nicht geschrieben, aber ein großes Lob an jeden, der es getan hat!)
- Fügen Sie das Google Play Services-Projekt Ihrem Eclipse-Arbeitsbereich hinzu.
- Klicken Sie auf Datei -> Importieren..., wählen Sie Android -> Vorhandener Android-Code in den Arbeitsbereich Navigieren Sie zu / extras / google / google_play_services /libproject / google-play-services_lib und wählen Sie diese aus
- So fügen Sie die Abhängigkeit zu Google Play-Diensten zu Ihrem Projekt hinzu
- Projekt -> Eigenschaften -> Android -> Bibliothek, Hinzufügen -> Google-Play-services_lib
(Leid;der Abschlag lässt mich die Zahlen nicht explizit auf 3 und 4 setzen.)
Screenshot von OP für die Nachwelt: