Mes pas:
- obtenu le code SHA1 de debug.keystore
- créer une application dans la console google apis
- activé google map api v2
- entrée SHA1; my.package.name
- obtenir la clé API
a créé le fichier AndroidManifest:
<permission android:name="my.package.name.permission.MAPS_RECEIVE" android:protectionLevel="signature"/> <uses-permission android:name="my.package.name.permission.MAPS_RECEIVE"/> <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15"/> <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" /> <uses-feature android:glEsVersion="0x00020000" android:required="true"/> <application android:label="@string/app_name" android:icon="@drawable/ic_launcher" android:hardwareAccelerated="true"> <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="MY_API_KEY_HERE" /> <activity android:name="MyActivity" 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>
mise en page créée
- mettre "google-play-services.jar" dans les bibliothèques
Après la compilation, j'ai un crash:
ERROR/AndroidRuntime(10182): FATAL EXCEPTION: main
java.lang.NoClassDefFoundError: com.google.android.gms.R$styleable
at com.google.android.gms.maps.GoogleMapOptions.createFromAttributes(Unknown Source)
at com.google.android.gms.maps.MapFragment.onInflate(Unknown Source)
at android.app.Activity.onCreateView(Activity.java:4716)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680)
at android.view.LayoutInflater.inflate(LayoutInflater.java:466)
at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:270)
at android.app.Activity.setContentView(Activity.java:1881)
at com.example.gm2.MyActivity.onCreate(MyActivity.java:16)
at android.app.Activity.performCreate(Activity.java:5104)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5039)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
at dalvik.system.NativeStart.main(Native Method)
Après cela, j'ai changé la mise en page pour:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent" />
et a changé MyActivity en
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
FragmentManager manager = getFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.add(R.id.map, MapFragment.newInstance());
transaction.commit();
En conséquence, l'application a été lancée, mais je n'ai pas vu la carte.
Journal de la console:
ERROR/Google Maps Android API(10369): Authorization failure.
Réponses:
Étapes :
android.library.reference.1=google-play-services_lib
YOUR_PROJECT/proguard-project.txt
.
Vous êtes maintenant prêt à créer votre propre application Google Map à l'aide des API Google Map V2 pour Android.
Si vous créez une application avec min SDK = 8, veuillez utiliser la bibliothèque de support Android v4 + SupportMapFragment au lieu de MapFragment.
la source
to enable "Google Maps Android API v2"
-step a résolu mon problème.Vérifiez également cet article: Google Map Android Api V2 Sample Code ne fonctionne pas , si vous êtes complètement sûr d'avoir suivi les bonnes étapes, suivez la deuxième réponse, l'authentification est mise en cache quelque part, essayez de désinstaller l'application manuellement (comme vous le faites avec un application normale) puis "Exécuter" à nouveau le projet
la source
bin
etgen
. Nettoyez, reconstruisez et les informations d'identification mises en cache sont renouvelées.Comme je viens de perdre beaucoup de temps à faire fonctionner l'API, je vais essayer de valider étape par étape l'API Map v2:
Étape 1: demandez votre clé API
Si vous n'êtes pas familier avec la console API Google, lisez la très bonne réponse de Rusfearuth ci-dessus.
Étape 2: Vérifiez votre SHA Hash (dans ce cas, j'utilise la clé de débogage de eclipse):
Sur une machine Windows, accédez à votre répertoire utilisateur via une invite de commande:
Vous obtiendrez quelque chose comme:
Regardez ensuite le nom de votre package de l'activité de la carte, par exemple com.example.mypackagename
Vous combinez cela et vérifiez cela avec vos paramètres dans la console API Google:
où vous obtenez votre clé API:
Étape 3. Manifestez les métadonnées
Vérifiez si les méta-données sont présentes et contiennent la bonne clé. Si vous libérez votre application, vous avez besoin d'une clé différente.
Étape 4. Caractéristiques du manifeste:
Vous avez besoin de cette entrée car l'API de la carte nécessite une prise en charge de grapics:
Ne vous inquiétez pas, 99,7% des appareils le prennent en charge.
Étape 5. Bibliothèque de manifestes:
Ajoutez la bibliothèque google.
Étape 6. Autorisations du manifeste:
Vérifiez le nom du package deux fois: com.example.yourpackage
Ajoutez les autorisations suivantes:
Les autorisations suivantes sont facultatives et non obligatoires si vous affichez simplement une carte. Essayez de ne pas les utiliser.
Étape 7. Incluez le fragment de carte dans votre mise en page:
Si vous passez aux versions 2.x d'Android, vous devez ajouter une prise en charge dans votre activité:
Pour la carte: les entrées pour travailler comprennent
dans la mise en page de votre activité (par exemple, LinearLayout).
Dans mon cas, je dois nettoyer le projet à chaque fois que je change quelque chose dans la mise en page. Semble être un bug.
Étape 8: Utilisez Eclipse - Project - Clean.
Prendre plaisir!
la source
Vous devez utiliser le projet de bibliothèque situé à l'adresse: ANDROID-SDK-DIRECTORY / extras / google / google_play_services / libproject
Cela résoudra votre premier problème.
Je ne suis pas sûr de votre deuxième, mais cela peut être un effet secondaire du premier. J'essaie toujours de faire fonctionner la carte dans ma propre application :)
la source
Aujourd'hui, je suis confronté à ce problème. J'ai utilisé Android Studio 2.1.3, Windows 10. Pendant le débogage, cela fonctionne bien, mais si je mets à jour en mode version, cela ne fonctionne pas. J'ai effacé toutes les conditions proguard, mis à jour, mais ce n'était pas la solution.
La solution est liée à la structure du projet. Le fichier google_maps_api.xml était différent entre app \ src \ debug \ res et app \ src \ release \ res. J'ai fait un copier-coller manuel du dossier de débogage au dossier de publication.
Maintenant ça marche.
la source
J'ai suivi la plupart, sinon la totalité, des suggestions de Gunnar Bernstein mentionnées ci-dessus et cela n'a toujours pas fonctionné. Cependant, cela a commencé à fonctionner après avoir suivi ses suggestions ET ce qui suit:
J'ai créé un nouveau MapActivity en utilisant la liste d'options du clic droit d'Android Studio: Nouveau -> Google -> Activité Google Maps
J'ai ensuite ouvert le fichier google_maps_api.xml qui est automatiquement généré et utilisé le lien indiqué pour créer une nouvelle clé API. J'ai suivi toutes les étapes et enregistré ma nouvelle clé sous mon projet actuel. J'ai ensuite supprimé mon ancienne clé API enregistrée car elle n'était plus nécessaire.
Sous le fichier Manifest, j'ai remplacé l'ancienne valeur API KEY par le raccourci de chaîne créé par ce nouveau fichier XML:
android:value="@string/google_maps_key
", au lieu d'indiquer directement la KEY.Enfin, supprimez le nouveau MapActivity, mais conservez le fichier xml qui a été créé dans ce processus.
Remarque: en créant la clé API de cette manière, la colonne Restrictions, sous Identifiants, indique désormais "Applications Android". Auparavant, quand cela ne fonctionnait pas, la colonne indiquait "Applications Android, 1 API" ou quelque chose de similaire. Je ne sais pas si cela fait une différence ou non.Remarque: Non, cela signifie simplement que je n'ai pas d'API spécifique sélectionnée pour cette clé API (Console -> Clé API -> Restrictions de clé -> Restrictions d'API).Remarque: cela ressemble à la balise meta-data sous le fichier Manifest:
a été remplacé par:
J'imagine que les deux peuvent être utilisés mais c'est mieux dès le départ d'utiliser ce dernier.
Remarque: La valeur indiquée, dans le fichier build.gradle, sous android -> defaultConfig -> applicationId doit correspondre au texte du nom du package sous la page Credentials.
la source
Solved!!!
Ajoutez simplement ceci dans votre fichier manifeste:
Par exemple...
Et s'il vous plaît mettre à jour votre lib de service google play ... Allez dans Fenêtre -> Gestionnaire de sdk Android-> Mettre à jour le service google play ... installé .. supprimer l'ancien et conserver celui-ci. Prenez ceci de ANDROID-SDK-DIRECTORY / extras / google / google_play_services /
Merci. Merci de voter
la source
J'ai résolu cette erreur en vérifiant le nom du package dans le manifeste et dans l'application
build.gradle
.En manifeste:
J'utilise un nom de package comme:
Dans l'application build.gradle:
Après avoir changé
com.app.triapp
enbuild.gradle
, résolu mon problème.la source
Je migre de la V1 vers la V2 de Google Maps. J'obtenais cet échec en essayant d'exécuter l'application via Eclipse. La cause principale pour moi était d'utiliser mon keystore de certificat de version plutôt que le keystore de débogage Android, ce qui est utilisé lorsque vous l'exécutez via Eclipse. La commande suivante (OSX / Linux) vous obtiendra la clé SHA1 du keystore de débogage:
Si vous utilisez à la place Windows 7, vous utiliserez cette commande:
Il est probablement préférable de désinstaller complètement votre application de votre appareil avant d'essayer avec une nouvelle clé, car Android met en cache les informations de sécurité.
la source
"java.lang.NoClassDefFoundError: com.google.android.gms.R $ styleable"
A eu cette erreur aussi, vous devez: Fichier -> importer -> Code Android existant dans l'espace de travail -> Parcourir -> sdks Android -> extras -> google -> google_play_services -> lib_project -> google_play_services_lib et OK. Vérifiez le projet et terminez.
Le projet va à l'Explorateur de packages. Maintenant, allez dans votre projet (avec erreur) -> propriétés -> Android et dans la bibliothèque cliquez sur Ajouter ... la google_play_services_lib devrait être là! ajoutez et réessayez :)
la source
J'ai eu le même problème mais il s'est avéré que c'était parce que j'avais créé deux clés API de carte différentes avec la même empreinte digitale SHA-1 avec un nom de package presque similaire
com.bla.bla
et l'autrecom.bla.bla.something
.la source
J'ai eu exactement le même problème et j'avais juste besoin de définir le SDK pour le projet de bibliothèque de MapsApiV2 sur Android 2.3.3 (API lvl 10)
la source
J'ai eu le même problème. Après environ deux heures de recherche sur Google, de nouvelles tentatives, de régénération de la clé API plusieurs fois, etc., j'ai découvert que j'avais activé le mauvais service dans la console Google APis. J'ai activé le service de l'API Google Maps v2 , mais pour les applications Android, vous devez utiliser l' API Google Maps Android v2 . Après avoir activé le bon service, tout a commencé à fonctionner.
la source
VOTRE ECLIPSE PEUT ÊTRE CHANGÉ DE CLÉ SHA1, vous devez donc regénérer votre clé google avec la nouvelle clé SHA1 ici: https://console.developers.google.com/project/watchful-net-796/apiui/credential Ensuite, copiez la nouvelle clé dans le manifeste et rechargez cette page google quelques fois, et votre clé sera mise à jour, reconstruisez votre projet, cela fonctionnera. P / S: Pour mon erreur, j'ai supprimé le dossier .android afin d'éclipse regen SHA1.
la source
J'ai suivi la même étape fournie dans le document Google mais j'obtenais la même erreur. Plus tard, j'ai réalisé que je signais mon application avec mon app.keystore et que la clé SHA que j'utilisais pour générer la clé API était celle de débogage.
J'ai donc simplement supprimé le fichier
signingConfig signingConfig.generic
de bybuild.gradle
et ma carte a commencé à fonctionner correctement.J'espère que cela aide quelqu'un.
la source
J'ai fait face au même problème.
Si vous avez publié une API pour votre version commerciale de l'application. Ensuite, cette API ne fonctionnera que pour la version finale et non pour la version de débogage. Assurez-vous donc que vous utilisez la version finale de votre téléphone ou de votre émulateur.
la source
Pour moi, tout fonctionnait à la fois dans un émulateur et sur un appareil physique.
Cependant, cela a cessé de fonctionner pour moi lorsque j'ai configuré une deuxième machine pour déboguer la même application dans un émulateur avec un niveau d'API plus récent.
Je ne savais pas que l' empreinte digitale de cette machine avait changé. Après avoir vu le journal des erreurs d'authentification dans le journal de l'appareil, j'ai étroitement comparé l'empreinte digitale dans ma Google Developer Console avec celle du message d'erreur. C'est là que j'ai vu la différence. Après avoir ajouté la nouvelle empreinte digitale à la Developer Console (en combinaison avec le nom du package), mon application a commencé à fonctionner comme prévu dans l'émulateur sur le nouveau système.
Donc, si vous configurez un nouveau système, vérifiez à nouveau vos empreintes digitales!
la source
SDK for Android
est activé dans la console API.la source