2016-11-12 1 views
7

Ich versuche eine MapActivity mit Android Studio zu erstellen. Es muss den Standort des Benutzers anzeigen.ANDROID: Fehler mit DynamiteModule: Lokale Modul-Deskriptorklasse für com.google.android.gms.googlecertificates nicht gefunden

Nun, ich weiß, ich brauche einen Schlüssel, um die API zu verwenden, und glauben Sie mir, ich habe diesen Schlüssel mindestens vier Mal geändert ... Ich habe auch die Berechtigungen in der AndroidManifest.xml.

Die Sache ist, ich kann die Karte ohne den Standort des Benutzers zeigen, aber wenn ich versuche, seinen/ihren Standort zu zeigen, dann kompiliert die App gut ABER, wenn ich versuche, es auszuführen, stoppt es und ich erhalte diesen Fehler:

11-12 09:13:28.416 21576-21653/raquel.mapapplication W/DynamiteModule: Local module descriptor class for com.google.android.gms.googlecertificates not found. 
11-12 09:13:28.424 21576-21653/raquel.mapapplication I/DynamiteModule: Considering local module com.google.android.gms.googlecertificates:0 and remote module com.google.android.gms.googlecertificates:2 
11-12 09:13:28.424 21576-21653/raquel.mapapplication I/DynamiteModule: Selected remote version of com.google.android.gms.googlecertificates, version >= 2 
11-12 09:13:28.432 21576-21653/raquel.mapapplication W/System: ClassLoader referenced unknown path: /data/user/0/com.google.android.gms/app_chimera/m/0000000b/n/armeabi 
11-12 09:13:28.436 21576-21653/raquel.mapapplication D/GoogleCertificates: com.google.android.gms.googlecertificates module is loaded 
11-12 09:13:28.504 21576-21653/raquel.mapapplication D/GoogleCertificatesImpl: Fetched 190 Google release certificates 
11-12 09:13:28.505 21576-21653/raquel.mapapplication D/GoogleCertificatesImpl: Fetched 363 Google certificates 
11-12 09:13:31.235 21576-21576/raquel.mapapplication I/Process: Sending signal. PID: 21576 SIG: 9 

Es erwähnt etwas über Google-Zertifikate, und deshalb dachte ich, vielleicht hat es etwas mit dem Schlüssel zu tun ... Aber ich bin mir nicht sicher und ich habe keine Ahnung, was ich falsch mache.

Vielen Dank für Ihre Hilfe.

////////

Ok, ich werde versuchen, einen Code zu schreiben ... Ich war der Code die ganze Zeit ändern, aber dies ist das letzte, was ich versucht (Ich habe auch versucht setMyLocationEnable (true), weil getMyLocation() ist veraltet, aber ich erhalten den gleichen Fehler):

public class MapsActivity erweitert FragmentActivity implementiert OnMapReadyCallback {

private 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); 
} 

@Override 
public void onMapReady(GoogleMap googleMap) { 
    mMap = googleMap; 

    Location location=mMap.getMyLocation(); 

    double lat=location.getLatitude(); 
    double lon=location.getLongitude(); 

    // Add a marker in Sydney and move the camera 
    LatLng sydney = new LatLng(lat, lon); 
    mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney")); 
    mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney)); 
} 

}

Danke an die Person, die auf mich geantwortet hat und an die Person, die meinen Kommentar editiert hat ... Ich kann immer noch nicht gut Text formatieren ...

+0

können Sie ein Stück Code enthalten auch bitte? –

+0

Versuchen Sie, den SHA1-Schlüssel in Ihrem Projekt in der Google Developer Console zu aktualisieren, und aktualisieren Sie den Google Maps-API-Schlüssel in Ihrem Android-Projekt. Beachte, dass du die Schritte in dieser [Dokumentation] richtig befolgst (https://developers.google.com/maps/documentation/android-api/signup#if-you-ist-verwende-den-standard- google-maps-android-api) besonders der Teil von ["Woher man den SHA-1-Fingerabdruck deiner App erhält"] (https://developers.google.com/maps/documentation/android-api/signup#fingerprint) – KENdi

+3

Hi Raquel, hast du es repariert? (Ich habe das gleiche Problem hier) – MiguelHincapieC

Antwort

0

Öffnen Sie die sdk manager, herunterladen/aktualisieren google play services. Und erstellen Sie einen neuen Emulator.

0

Das Laden von Zertifikaten kann der Fehler in der API sein und ich denke irgendwo Google-Entwickler haben es auch beschrieben, dass der Play-Dienst versucht, die Play-App oder die App von Drittanbietern zu bestätigen. Ich weiß nicht mehr darüber.

aber wenn Sie immer noch Probleme haben mit Marker auf Benutzer platzieren Sie die Position von Code unten versuchen können, ich habe es getestet und ist in der Anwendung arbeiten

@Override 
public void onMapReady(GoogleMap googleMap) 

{ 
    myGoogleMap = googleMap; 
    placeMarkerOnPosition(); 
} 

public void placeMarkerOnPosition() { 
//// check permissions to access resources ///////// 
if (ActivityCompat.checkSelfPermission(this, 
android.Manifest.permission.ACCESS_FINE_LOCATION) != 
PackageManager.PERMISSION_GRANTED && 
ActivityCompat.checkSelfPermission(this, 
android.Manifest.permission.ACCESS_COARSE_LOCATION) != 
PackageManager.PERMISSION_GRANTED) { 

    return; 
} 
    LocationManager locationManager = (LocationManager) 
    getSystemService(Context.LOCATION_SERVICE); 

Jetzt können Sie es mit zwei Wege finden

//////////////// find location if GPS provider is available (GPS should 
enable to envoke this callback) 

locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, 
new LocationListener() 
{ 
@Override 
public void onLocationChanged(Location location) { 

try { 
    Geocoder geocoder = new Geocoder(getApplicationContext());        
    myLatitude = location.getLatitude(); 
    myLongitude = location.getLongitude(); 
    LatLng myPosition = new LatLng(myLatitude,myLongitude); 
    List<Address> places=geocoder.getFromLocation(myLatitude, 
    myLongitude,1); 
    myLocation = places.get(0).getSubLocality() 
       +""+places.get(0).getLocality(); 

    myGoogleMap.clear(); 
    myGoogleMap.addMarker(new 
    MarkerOptions().position(myPosition).title(myLocation)); 

    myGoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(myPosition, 
                   13.5f)); 


    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    } 

    @Override 
    public void onStatusChanged(String s, int i, Bundle bundle) { 

    } 

    @Override 
    public void onProviderEnabled(String s) { 

    } 

    @Override 
    public void onProviderDisabled(String s) { 

    } 
    }); 

//////////////// checking with network providers ///////// 


if (locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) { 


locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 
             0, new LocationListener() { 
@Override 
public void onLocationChanged(Location location) { 
myLatitude = location.getLatitude(); 
myLongitude = location.getLongitude(); 
LatLng myPosition = new LatLng(myLatitude, myLongitude); 
myGoogleMap.clear(); 
myGoogleMap.addMarker(new MarkerOptions().position(myPosition).title("My 
                  Position")); 

myGoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(myPosition, 
                   13.5f)); 

}

   @Override 
       public void onStatusChanged(String s, int i, Bundle bundle) 
       { 

       } 

       @Override 
       public void onProviderEnabled(String s) { 

       } 

       @Override 
       public void onProviderDisabled(String s) { 

       } 
      }); 

     } 

    //////// Or you can find it with user recent location ////////// 

    Criteria criteria = new Criteria(); 
    String bestProvider = locationManager.getBestProvider(criteria,true); 
    Locationlocation=locationManager.getLastKnownLocation(bestProvider); 

    ////////// load your location from last recent locations //////// 
      if (location != null) { 
       Geocoder geocoder = new Geocoder(getApplicationContext()); 

       try { 
        myLatitude = location.getLatitude(); 
        myLongitude = location.getLongitude(); 
        LatLng myPosition = new LatLng(myLatitude, myLongitude); 
        List<Address> places = 
        geocoder.getFromLocation(myLatitude, myLongitude, 1); 
        myLocation = places.get(0).getSubLocality() + " " + places.get(0).getLocality(); 

        myGoogleMap.clear(); 
        myGoogleMap.addMarker(new MarkerOptions().position(myPosition).title(myLocation)); 
        myGoogleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(myPosition, 13.5f)); 


       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
+0

Hinweis: Sie haben eine Menge Code dort - sehr faul formatiert/eingerückt.Bitte verwenden Sie das ** Vorschau ** -Fenster, um sicherzustellen, dass Sie keine Code-Unordnung ablegen, sondern etwas, das die Leute als lesbar genug finden. – GhostCat

Verwandte Themen