2012-05-14 21 views
5

HI aquí es un código pequeño que elegí del código de muestra de 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 
     } 
    }); 

error:

'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 añade el permssion? android.permission.ACCESS_NETWORK_STATE? si no, agréguelo. también vuelva a verificar la biblioteca agregada de google_analytics –

+0

¿También ha incluido el jar de googleanalytics en su proyecto? ya que se queja de no poder encontrarlo. Tal vez haya mezclado versiones del archivo jar – pengibot

+0

que es su versión de Adt –

Respuesta

13

que tenía este problema después de la actualización de ADT.

Estaba almacenando todos mis archivos JAR en una carpeta llamada "lib" y agregando los archivos jar a la ruta de compilación de la forma normal de Eclipse. Esto funcionó bien hasta mi actualización.

Después de mi actualización, obtenía el NoClassDefFoundError para una clase que podía ver claramente incluida en el contenedor (revisando las clases de Bibliotecas de referencia).

La solución fue eliminar mis jarras de la ruta de compilación y cambiar el nombre de mi carpeta "lib" a "libs". Esta es una convención de hormigas, y parece ser la forma en que el ADT nuevo encuentra e incluye bibliotecas en un archivo .apk. Una vez que hice esto, todo funcionó bien.

+0

Muy bien trabajado Gracias – Sukesh

+0

Gracias hombre ... Me ayudó. :) – GrIsHu

28

para resolver el problema con el error NoClassDefFoundError cuando se está utilizando la biblioteca de Google Analytics v2beta, es necesario marca de esta biblioteca como "exportó".

¿Cómo?

  • Añadir su biblioteca: Proyecto -> Propiedades -> Java Build Path -> Bibliotecas -> Añadir JAR externos ...
  • A continuación, vaya a "Orden y de exportación" en la misma ventana, y marque esta biblioteca como "exportado" con la casilla de verificación.

¡Su proyecto ahora encontrará la clase de Analytics cuando lo ejecute!

Más detalles y por qué esto suceda here

+0

Intenté esta solución primero y funcionó para mí. Gracias. – operand

+0

esto funcionó para mí también – Guru