2010-09-27 4 views
0

Je travaille avec le didacticiel HelloGoogleMaps sur la page Ressources du développeur Android (http://developer.android.com/resources/tutorials/views/hello-mapview.html) et lorsque j'exécute la partie 1 de l'application ("Création d'une activité de carte") sur mon émulateur, le message me parvient "L'application HelloGoogleMaps (processus com.example) s'est arrêtée de manière inattendue. Veuillez réessayer." Je suis assez sûr que j'ai suivi toutes les instructions correctement, mais je ne suis pas sûr d'avoir configuré mon environnement d'émulation correctement. Quelqu'un peut-il m'aider s'il vous plaît à comprendre ce qui se passe? Merci.Exception du didacticiel Android HelloGoogleMaps

est ici la sortie de logcat:

I/ActivityManager( 63): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.example/.HelloGoogleMaps } 
I/ActivityManager( 63): Start proc com.example for activity com.example/.HelloGoogleMaps: pid=344 uid=10026 gids={3003, 1015} 
D/ddm-heap( 344): Got feature list request 
W/dalvikvm( 344): Class resolved by unexpected DEX: Lcom/example/HelloGoogleMaps;(0x43d02e18):0x11fbb0 ref [Lcom/google/android/maps/MapActivity;] Lcom/google/android/maps/MapActivity;(0x43d02e18):0x11f510 
W/dalvikvm( 344): (Lcom/example/HelloGoogleMaps; had used a different Lcom/google/android/maps/MapActivity; during pre-verification) 
W/dalvikvm( 344): Unable to resolve superclass of Lcom/example/HelloGoogleMaps; (41) 
W/dalvikvm( 344): Link of class 'Lcom/example/HelloGoogleMaps;' failed 
D/AndroidRuntime( 344): Shutting down VM 
W/dalvikvm( 344): threadid=3: thread exiting with uncaught exception (group=0x4001b188) 
E/AndroidRuntime( 344): Uncaught handler: thread main exiting due to uncaught exception 
E/AndroidRuntime( 344): java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation 
E/AndroidRuntime( 344):  at dalvik.system.DexFile.defineClass(Native Method) 
E/AndroidRuntime( 344):  at dalvik.system.DexFile.loadClassBinaryName(DexFile.java:209) 
E/AndroidRuntime( 344):  at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:203) 
E/AndroidRuntime( 344):  at java.lang.ClassLoader.loadClass(ClassLoader.java:573) 
E/AndroidRuntime( 344):  at java.lang.ClassLoader.loadClass(ClassLoader.java:532) 
E/AndroidRuntime( 344):  at android.app.Instrumentation.newActivity(Instrumentation.java:1021) 
E/AndroidRuntime( 344):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2409) 
E/AndroidRuntime( 344):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512) 
E/AndroidRuntime( 344):  at android.app.ActivityThread.access$2200(ActivityThread.java:119) 
E/AndroidRuntime( 344):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863) 
E/AndroidRuntime( 344):  at android.os.Handler.dispatchMessage(Handler.java:99) 
E/AndroidRuntime( 344):  at android.os.Looper.loop(Looper.java:123) 
E/AndroidRuntime( 344):  at android.app.ActivityThread.main(ActivityThread.java:4363) 
E/AndroidRuntime( 344):  at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime( 344):  at java.lang.reflect.Method.invoke(Method.java:521) 
E/AndroidRuntime( 344):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
E/AndroidRuntime( 344):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
E/AndroidRuntime( 344):  at dalvik.system.NativeStart.main(Native Method) 
I/Process ( 63): Sending signal. PID: 344 SIG: 3 
I/dalvikvm( 344): threadid=7: reacting to signal 3 
E/dalvikvm( 344): Unable to open stack trace file '/data/anr/traces.txt': Permission denied 
W/ActivityManager( 63): Launch timeout has expired, giving up wake lock! 
W/ActivityManager( 63): Activity idle timeout for HistoryRecord{43dc9818 com.example/.HelloGoogleMaps} 
D/dalvikvm( 143): GC freed 2317 objects/132032 bytes in 107ms
+0

après le code complet – KMI

Répondre

2

Salut Je ne sais pas si vous avez le même problème que j'avais mais assurez-vous que vos cartes et l'autorisation d'Internet dans votre manifeste sont dans les tranches d'activité non la manifeste-à-dire:

</activity> 
    <uses-library android:name="com.google.android.maps" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 

<activity android:name=".champ" android:label="@string/app_name" 

android: theme = "@ android: sty le/Theme.NoTitleBar ">

+0

Merci, c'était le problème ... Il semble qu'il y ait une erreur dans la documentation Google, et la balise doit être un enfant de , pas . – jay

+0

Merci beaucoup mon pote :) J'ai perdu 2 heures pour ça – nithinreddy

0
Vous devrez également mettre en place une nouvelle AVD qui utilise la même cible de déploiement API Google

Avez-vous fait cela?

1

La chose suivante fonctionne (il montre une carte et non pas seulement une grille):

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="ru.studiomobile.example" 
    android:versionCode="1" 
    android:versionName="1.0"> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 
<uses-permission android:name="android.permission.INTERNET" /> 
<application android:label="@string/app_name" android:icon="@drawable/icon"> 
    <activity android:name="HelloMapsActivity" 
       android:label="@string/app_name" 
       android:theme="@android:style/Theme.NoTitleBar"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <uses-library android:name="com.google.android.maps" /> 
</application> 
</manifest> 

Il est important où vous mettre ces utilisations-permission. En outre, je soupçonne que cela a commencé à fonctionner après l'ajout de ACCESS_COARSE_LOCATION.

main.xml

<?xml version="1.0" encoding="utf-8"?> 
<com.google.android.maps.MapView 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/mapview" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:clickable="true" 
android:apiKey="9AaAaaaA7AAA_9AaAAARottenAAAAkMJD8h084Q" 
/> 

La clé a été obtenue par les deux étapes suivant la procédure:

Etape 1:

$keytool -list -alias androiddebugkey -keystore ~/.android/debug.keystore -storepass android -keypass android 
androiddebugkey, May 5, 2011, PrivateKeyEntry, 
Certificate fingerprint (MD5): 99:99:99:99:99:99:99:99:99:99:99:99:99:99:99:99 

Etape 2: que 99:99 ... était donné à google au http://code.google.com/android/maps-api-signup.html et la clé a été obtenue.

Sans cette clé, MapView affiche uniquement une grille et ne fonctionne pas.

import android.os.Bundle; 
import com.google.android.maps.MapActivity; 
import com.google.android.maps.MapView; 

public class HelloMapsActivity extends MapActivity 
{ 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     MapView mapView = (MapView) findViewById(R.id.mapview); 
     mapView.setBuiltInZoomControls(true); 
    } 

    @Override 
    protected boolean isRouteDisplayed() { 
     return false; 
    } 
} 

Mais ... je devais essayer avec une clé de déverrouillage, puis avec une clé de débogage à nouveau avant qu'il a travaillé. Aucune idée de ce que j'ai changé. Peut-être que l'astuce consistait à l'installer avec un certificat différent.

Je dois ajouter que

E/MapActivity Couldn't get connection factory client 

ne signifie pas vraiment il y a une erreur. La carte fonctionne et l'imprime toujours dans le journal.

Le journal d'une application de travail ressemble à ceci:

I/ActivityManager( 110): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=xx.yy.example/.HelloMapsActivity } from pid 211 
I/ActivityManager( 110): Start proc xx.yy.example for activity xx.yy.example/.HelloMapsActivity: pid=21102 uid=10064 gids={3003, 1015} 
V/RenderScript_jni( 211): surfaceDestroyed 
D/dalvikvm(21102): GC_CONCURRENT freed 1163K, 54% free 3149K/6727K, external 1625K/2137K, paused 3ms+2ms 
D/dalvikvm(21102): GC_CONCURRENT freed 532K, 51% free 3308K/6727K, external 1625K/2137K, paused 1ms+3ms 
I/MapActivity(21102): Handling network change notification:CONNECTED 
E/MapActivity(21102): Couldn't get connection factory client 
D/dalvikvm(21102): GC_EXTERNAL_ALLOC freed 880K, 55% free 3034K/6727K, external 1993K/2137K, paused 23ms 
I/ActivityManager( 110): Displayed xx.yy.example/.HelloMapsActivity: +584ms 
1

"utilise-bibliothèque" devrait être étiquette d'application à l'intérieur. "uses-permission" doit être en dehors de la balise d'application.