Générer Google Map clé pour android - étape par étape
Ce sont les étapes que je suis à générer ma carte clé pour android:
1-) j'exécute cette commande:
keytool -list -v -alias androiddebugkey -keystore ~/.android/debug.keystore -storepass android -keypass android
Cette commande aura comme résultat quelque chose comme ceci:
Alias name: androiddebugkey
Creation date: Mar 13, 2013
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Android Debug, O=Android, C=US
Issuer: CN=Android Debug, O=Android, C=US
Serial number: 51401a0b
Valid from: Wed Mar 13 02:17:47 EDT 2013 until: Fri Mar 06 01:17:47 EST 2043
Certificate fingerprints:
MD5: XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
SHA1: XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
Signature algorithm name: SHA1withRSA
Version: 3
2-) Après l'obtention de la SHA1, je l'ai copier et ensuite j'ai ouvert ce lien: https://code.google.com/apis/console/
J'ai mis sur cette fonctionnalité:
3-) Après que je génère une nouvelle clé:
Où XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
(le SHA1 obtenus ci-dessus) et edu.osu.cse5326.busstopapp
est le seul ensemble de mon projet.
4-) Enfin, je copie la carte de la Clé API générée:
5-) Et je l'ai coller dans un de mes mises en page:
<com.google.android.maps.MapView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mapViewBusStopLocation"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:apiKey="the_api_key"
/>
6-) je charge la carte à partir de l'Activité correspondante.
7-) C'est mon manifest.xml fichier:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="edu.osu.cse5326.busstopapp"
android:versionCode="1"
android:versionName="1.0" >
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<permission
android:name="edu.osu.cse5326.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="10" />
<application
android:name="edu.osu.cse5326.busstopapp.AppState"
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<uses-library android:name="com.google.android.maps" />
<activity
android:name="edu.osu.cse5326.busstopapp.LoginActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Many other activities
</application>
</manifest>
LE PROBLÈME est que je ne vois que la zone grise, sans les informations de la carte.
Ce sont l'exception, je suis arriver lorsque vous essayez d'exécuter le projet:
03-13 16:48:28.045: W/System.err(375): IOException processing: 26
03-13 16:48:28.045: W/System.err(375): java.io.IOException: Server returned: 3
03-13 16:48:28.045: W/System.err(375): at android_maps_conflict_avoidance.com.google.googlenav.map.BaseTileRequest.readResponseData(BaseTileRequest.java:115)
03-13 16:48:28.045: W/System.err(375): at android_maps_conflict_avoidance.com.google.googlenav.map.MapService$MapTileRequest.readResponseData(MapService.java:1473)
03-13 16:48:28.045: W/System.err(375): at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher.processDataRequest(DataRequestDispatcher.java:1117)
03-13 16:48:28.055: W/System.err(375): at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher.serviceRequests(DataRequestDispatcher.java:994)
03-13 16:48:28.055: W/System.err(375): at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher$DispatcherServer.run(DataRequestDispatcher.java:1702)
03-13 16:48:28.055: W/System.err(375): at java.lang.Thread.run(Thread.java:1019)
03-13 16:48:28.365: W/System.err(375): IOException processing: 26
03-13 16:48:28.365: W/System.err(375): java.io.IOException: Server returned: 3
03-13 16:48:28.365: W/System.err(375): at android_maps_conflict_avoidance.com.google.googlenav.map.BaseTileRequest.readResponseData(BaseTileRequest.java:115)
03-13 16:48:28.375: W/System.err(375): at android_maps_conflict_avoidance.com.google.googlenav.map.MapService$MapTileRequest.readResponseData(MapService.java:1473)
J'ai lu beaucoup et je pense que c'est un problème avec la Carte Clé de l'API, mais je ne trouve pas ce que je fais de mal.
Choses que j'ai essayé et n'ai pas de travail:
- Supprimer le débogage.fichier de clés et de générer une fois de plus.
- J'ai essayer de l'exécuter sur un vrai diviser, au lieu de l'émulateur.
- De régénérer la carte de la clé api et attendre quelques heures pour voir si ça prend du temps de travail.
<permission android:name="com.example.mapdemo.permission.MAPS_RECEIVE" android:protectionLevel="signature"/> <uses-permission android:name="com.example.mapdemo.permission.MAPS_RECEIVE"/>
Avez-vous ajouté que cela se manifeste?- Merci @abbath, permettez-moi de modifier ma question à ajouter à ma manifest.xml de l'information.
- Avez-vous essayé le fragment de la voie (qui est utilisé ici)?
- Oui @abbath, j'ai essayé ça aussi.....
Vous devez vous connecter pour publier un commentaire.
Je ne l'obtenez pas, vous êtes à l'aide de la Google Map API V2 dans l'ensemble de vos paramètres, y compris la clé que vous obtenez à partir de la console, mais vous utilisez le
MapView
objet qui est une Google Map API V1 objet.Vous devez utiliser le
MapFragment
ou laSupportMapFragment
objet avec leandroid-support-v4
de la bibliothèque, en fonction de la minSDK la rédaction de votre demande.Voici un blog que j'ai écrit sur la façon d'ajouter une Carte Google maps API V2 à votre demande, je pense que vous trouverez à portée de la main:
Google Map API V2
J'ai cherché un peu et trouvé cette question, et cette réponse:
C'est un peu bizarre, mais j'espère que ça va vous aider.
com.google.android.maps.MapView
au lieu decom.google.android.gms.maps.MapView
. peut-être un problème?