Je crée une application Android en utilisant Google Maps. Voici le code:
MapFragActivity.Java
import Android.os.Bundle;
import Android.support.v4.app.FragmentActivity;
import com.google.Android.gms.maps.GoogleMap;
import com.google.Android.gms.maps.SupportMapFragment;
public class MapFragActivity extends FragmentActivity {
private GoogleMap map;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_map_frag);
map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map))
.getMap();
}
}
AndroidManifest.xml:
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.him.mapfrag_rnd"
Android:versionCode="1"
Android:versionName="1.0" >
<uses-sdk
Android:minSdkVersion="11"
Android:targetSdkVersion="15" />
<permission
Android:name="com.him.mapfrag_rnd.permission.MAPS_RECEIVE"
Android:protectionLevel="signature" />
<uses-permission Android:name="com.him.mapfrag_rnd.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" />
<uses-feature
Android:glEsVersion="0x00020000"
Android:required="true" />
<application
Android:icon="@drawable/ic_launcher"
Android:label="@string/app_name"
Android:theme="@style/AppTheme" >
<activity
Android:name=".MapFragActivity"
Android:label="@string/title_activity_map_frag" >
<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="my_api_key" />
</application>
</manifest>
activity_map_frag.xml:
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent" >
<fragment
Android:id="@+id/map"
Android:name="com.google.Android.gms.maps.SupportMapFragment"
Android:layout_width="match_parent"
Android:layout_height="match_parent" />
</RelativeLayout>
quand j'essaye ce code je reçois une erreur, voici le journal:
01-17 10:01:17.685: E/AndroidRuntime(8923): FATAL EXCEPTION: main
01-17 10:01:17.685: E/AndroidRuntime(8923): Java.lang.NoClassDefFoundError: com.google.Android.gms.R$styleable
01-17 10:01:17.685: E/AndroidRuntime(8923): at com.google.Android.gms.maps.GoogleMapOptions.createFromAttributes(Unknown Source)
01-17 10:01:17.685: E/AndroidRuntime(8923): at com.google.Android.gms.maps.SupportMapFragment.onInflate(Unknown Source)
01-17 10:01:17.685: E/AndroidRuntime(8923): at Android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.Java:279)
01-17 10:01:17.685: E/AndroidRuntime(8923): at Android.view.LayoutInflater.createViewFromTag(LayoutInflater.Java:669)
01-17 10:01:17.685: E/AndroidRuntime(8923): at Android.view.LayoutInflater.rInflate(LayoutInflater.Java:739)
01-17 10:01:17.685: E/AndroidRuntime(8923): at Android.view.LayoutInflater.inflate(LayoutInflater.Java:489)
01-17 10:01:17.685: E/AndroidRuntime(8923): at Android.view.LayoutInflater.inflate(LayoutInflater.Java:396)
01-17 10:01:17.685: E/AndroidRuntime(8923): at Android.view.LayoutInflater.inflate(LayoutInflater.Java:352)
01-17 10:01:17.685: E/AndroidRuntime(8923): at com.Android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.Java:272)
01-17 10:01:17.685: E/AndroidRuntime(8923): at Android.app.Activity.setContentView(Activity.Java:1835)
01-17 10:01:17.685: E/AndroidRuntime(8923): at com.him.mapfrag_rnd.MapFragActivity.onCreate(MapFragActivity.Java:16)
01-17 10:01:17.685: E/AndroidRuntime(8923): at Android.app.Activity.performCreate(Activity.Java:4470)
01-17 10:01:17.685: E/AndroidRuntime(8923): at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1052)
01-17 10:01:17.685: E/AndroidRuntime(8923): at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:1931)
01-17 10:01:17.685: E/AndroidRuntime(8923): at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:1992)
01-17 10:01:17.685: E/AndroidRuntime(8923): at Android.app.ActivityThread.access$600(ActivityThread.Java:127)
01-17 10:01:17.685: E/AndroidRuntime(8923): at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1158)
01-17 10:01:17.685: E/AndroidRuntime(8923): at Android.os.Handler.dispatchMessage(Handler.Java:99)
01-17 10:01:17.685: E/AndroidRuntime(8923): at Android.os.Looper.loop(Looper.Java:137)
01-17 10:01:17.685: E/AndroidRuntime(8923): at Android.app.ActivityThread.main(ActivityThread.Java:4511)
01-17 10:01:17.685: E/AndroidRuntime(8923): at Java.lang.reflect.Method.invokeNative(Native Method)
01-17 10:01:17.685: E/AndroidRuntime(8923): at Java.lang.reflect.Method.invoke(Method.Java:511)
01-17 10:01:17.685: E/AndroidRuntime(8923): at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:986)
01-17 10:01:17.685: E/AndroidRuntime(8923): at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:753)
01-17 10:01:17.685: E/AndroidRuntime(8923): at dalvik.system.NativeStart.main(Native Method)
lorsque je modifie MapFragActivity.Java, la carte s’affiche. voici les changements:
package com.him.mapfrag_rnd;
import Android.os.Bundle;
import Android.support.v4.app.FragmentActivity;
import com.google.Android.gms.maps.SupportMapFragment;
public class MapFragActivity extends FragmentActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_map_frag);
SupportMapFragment fragment = new SupportMapFragment();
getSupportFragmentManager().beginTransaction().add(Android.R.id.content, fragment).commit();
}
}
Le changement que j'ai fait est commenté le setContentView. J'ai suivi toutes les étapes requises et j'obtiens toujours une erreur. si décommenter la setContentView () alors encore une fois, je reçois l'erreur.
S'il vous plaît HELP !!!
Vous devez inclure une bibliothèque de services Google Play dans votre projet. Google a de très bonnes instructions ici:
En outre, il existe un démarrage rapide que j'ai trouvé très utile lorsque j'essaie de faire fonctionner Google Maps v2.
Si vous utilisez Intellij Idea,
Note: Assurez-vous de ne pas avoir ajouté le projet "google-play-services_lib" en tant que bibliothèque dans "Bibliothèques" (panneau de gauche sous Modules). Si vous en avez un, vous pouvez aller à "Bibliothèques et simplement le supprimer. La bibliothèque Google Play ne doit pas apparaître dans les bibliothèques.
Note 2: Vous pouvez copier le répertoire entier google-play-services_lib dans votre propre projet si vous souhaitez l’avoir sous contrôle de version ou similaire.
J'ai la même erreur. J'utilise Android Studio et Gradle, donc il n'y a pas beaucoup de choses à configurer ou à améliorer. J'ai presque tout fait mais tout ne fonctionnait pas pour moi. Le dernier fonctionne: remplacer le package en entier les services de jeu par les plus petits. Dans mon cas:
Remplacer (dans le fichier build.gradle):
compile 'com.google.Android.gms:play-services:8.4.0'
par:
// Google Cloud Messaging
compile 'com.google.Android.gms:play-services-gcm:8.4.0'
// Google Location
compile 'com.google.Android.gms:play-services-location:8.4.0'
Je pense que vous devez importer toute la bibliothèque du service Google Play dans votre IDE, pas seulement le .jar
essayez-le ;-)
j'ai aussi eu cette erreur dans Android studio et j'avais déjà inclus les services de jeu alpha 3 avec gradé alpha5, ce que j'ai eu tort, c'est d'avoir inclus multidex.
en grade
multiDexEnabled true
et dans onCreate de la classe Application
MultiDex.install (this);
mais j'ai oublié de étend la classe d'applications avec MultiDexApplication
car MultiDexApplication n'a pas été étendu de sorte qu'il ne puisse pas inclure gms ni aucune autre classe dex, de sorte qu'il génère une erreur au démarrage de gms String.
Hope this aide
J'ai résolu le problème en vérifiant d'abord que les services de lecture lib ont été ajoutés correctement et en ajoutant ces données dans le fichier manifeste sous la balise d'application <meta-data Android:name="com.google.Android.gms.version" Android:value="@integer/google_play_services_version" />
Consultez le fichier AndroidManifest.xml de votre projet google-play-services_lib. Devrait être:
package="com.google.Android.gms"
Utiliser Android SDK Manager télécharger "Google Play Services"
importez-le dans votre espace de travail (chemin: racine Android-sdk/extras/google/google_play_service/libproject/google-play-service_lib)
propriétés du projet -> Android -> Bibliothèque ajouter google-play-service_lib
Chemin de construction -> Contrôle des commandes et des exportations Android bibliothèques privées
J'ai résolu cette erreur en cochant la case " Copier les projets dans l'espace de travail " lors de l'importation de la lib. Des services Google Play.
Plus d'infos ici: http://developer.Android.com/google/play-services/setup.html
Ce service de jeu de deux Google a été ajouté dans le fichier build.gradle. Il a fonctionné pour moi. : 8.1.0 '
Si vous utilisez des services Google Play fractionnés (voir ici: https://developers.google.com/Android/guides/setup#split )
Vous devez inclure les services de jeu de base dans votre fichier de classement:
compile 'com.google.Android.gms:play-services-base:7.5.0'
L'utilisation des services de lecture slipt empêche l'erreur de 65 000 $ et réduit la taille de votre application.
J'ai suivi le lien http://www.vogella.com/tutorials/AndroidGoogleMaps/article.html
et ajouté le projet de bibliothèque google-play-services_lib à mon application. Cela fonctionnait très bien jusqu'à hier. Mais à ce jour, j'ai l'exception mentionnée ci-dessus. C'est en raison de l'absence de Google Play Library ou de mon projet incapable d'accéder aux fichiers de la bibliothèque. J'ai reconstruit mon projet mais cela n'a pas abouti. Ensuite, j'ai reconstruit le projet de bibliothèque google-play-services_lib mais sans espoir. Ensuite, j'ai essayé l'option "Tout construire" dans Eclipse et cela fonctionne bien.