Android谷歌分析跟踪器NoClassdefFoundError

Suk*_*esh 5 android google-analytics

这里的HI是一个小代码,我从谷歌分析的示例代码中选择它.

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
        }
    });
Run Code Online (Sandbox Code Playgroud)

错误:

'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)
Run Code Online (Sandbox Code Playgroud)

Pel*_*nes 28

要在使用Google Analytics v2beta库时解决错误NoClassdefFoundError的问题,您需要将此库标记为"已导出".

怎么样?

  • 添加库:项目 - >属性 - > Java构建路径 - >库 - >添加外部JAR ...
  • 然后在同一窗口中转到"订购和导出",并使用复选框将此库标记为"已导出".

您的proyect现在可以在运行时找到Analytics类!

更多细节,以及为什么这种事发生在这里


Jac*_*lai 13

更新ADT后我遇到了这个问题.

我将所有JAR文件存储在名为"lib"的文件夹中,并将jar文件添加到正常Eclipse方式的构建路径中.这工作正常,直到我的更新.

在我更新之后,我得到了一个类,我可以清楚地看到包含在jar中的类(检查ReferencedLibraries类)的NoClassDefFoundError.

解决方案是从构建路径中删除我的jar并将我的"lib"文件夹重命名为"libs".这是一个ant约定,似乎是新ADT在.apk文件中找到并包含库的方式.一旦我这样做,一切都很好.