2012-05-14 38 views
5

HI ecco un piccolo codice che ho scelto dal codice di esempio di google analytics.Android google analytics tracker NoClassdefFoundError

tracker = GoogleAnalyticsTracker.getInstance(); 

tracker.startNewSession("UA-YOUR-ACCOUNT-HERE", this); 
    setContentView(R.layout.main); 
    Button createEventButton = (Button)findViewById(R.id.NewEventButton); 
    createEventButton.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      tracker.trackEvent(
        "Clicks", // Category 
        "Button", // Action 
        "clicked", // Label 
        77);  // Value 
     } 
    }); 

Errore:

'05-14 13:52:36.599: E/AndroidRuntime(7367): FATAL EXCEPTION: main 
05-14 13:52:36.599: E/AndroidRuntime(7367): java.lang.NoClassDefFoundError: com.google.android.apps.analytics.GoogleAnalyticsTracker 
05-14 13:52:36.599: E/AndroidRuntime(7367):  at com.google.android.apps.analytics.sample.TestActivity.onCreate(TestActivity.java:19) 
05-14 13:52:36.599: E/AndroidRuntime(7367):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
05-14 13:52:36.599: E/AndroidRuntime(7367):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) 
05-14 13:52:36.599: E/AndroidRuntime(7367):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 
05-14 13:52:36.599: E/AndroidRuntime(7367):  at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
05-14 13:52:36.599: E/AndroidRuntime(7367):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) 
05-14 13:52:36.599: E/AndroidRuntime(7367):  at android.os.Handler.dispatchMessage(Handler.java:99) 
05-14 13:52:36.599: E/AndroidRuntime(7367):  at android.os.Looper.loop(Looper.java:130) 
05-14 13:52:36.599: E/AndroidRuntime(7367):  at android.app.ActivityThread.main(ActivityThread.java:3687) 
05-14 13:52:36.599: E/AndroidRuntime(7367):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-14 13:52:36.599: E/AndroidRuntime(7367):  at java.lang.reflect.Method.invoke(Method.java:507) 
05-14 13:52:36.599: E/AndroidRuntime(7367):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 
05-14 13:52:36.599: E/AndroidRuntime(7367):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 
05-14 13:52:36.599: E/AndroidRuntime(7367):  at dalvik.system.NativeStart.main(Native Method) 
+0

u aggiunto il PERMSSION? android.permission.ACCESS_NETWORK_STATE? se non lo è, aggiungilo. ricontrolla anche la libreria aggiunta di google_analytics –

+0

Hai anche incluso il jar googleanalytics nel tuo progetto? come si lamenta di non essere in grado di trovarlo. Forse hai mescolato le versioni del file jar – pengibot

+0

che è la tua versione adt –

risposta

13

ho avuto questo problema dopo l'aggiornamento ADT.

Stavo memorizzando tutti i miei file JAR in una cartella denominata "lib" e aggiungendo i jar al percorso di generazione nel modo normale di Eclipse. Questo ha funzionato bene fino al mio aggiornamento.

Dopo il mio aggiornamento, stavo ottenendo il NoClassDefFoundError per una classe che potrei vedere chiaramente era inclusa nel jar (verificando le classi ReferencedLibraries).

La soluzione era rimuovere i miei oggetti dal percorso di generazione e rinominare la mia cartella "lib" in "libs". Questa è una convenzione ant, e sembra essere il modo in cui il nuovo ADT trova e include le librerie in un file .apk. Una volta che l'ho fatto, tutto ha funzionato bene.

+0

Ben lavorato Grazie Grazie – Sukesh

+0

Grazie amico .. Mi ha aiutato. :) – GrIsHu

28

Per risolvere il problema con l'errore NoClassDefFoundError quando si utilizza la libreria di Google Analytics v2beta, è necessario segno questa biblioteca come "esportato".

Come?

  • Aggiungere tua libreria: Progetto -> Proprietà -> Java Build Path -> Biblioteche -> Aggiungi JAR esterni ...
  • Poi vai a "Ordine e Esporta" nella stessa finestra, e contrassegnare questa libreria come "esportato" con la casella di controllo.

Il tuo proyect ora troverà la classe di Analytics quando lo esegui!

Maggiori dettagli e perché questo accada here

+0

Ho provato prima questa soluzione e ha funzionato per me. Grazie. – operand

+0

ha funzionato anche per me – Guru

Problemi correlati