5

嗨,这是我从谷歌分析的示例代码中挑选的一个小代码。

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
        }
    });

错误:

'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)
4

2 回答 2

28

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

如何?

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

当您运行它时,您的项目现在将找到 Analytics 类!

更多细节以及为什么会在这里发生

于 2013-01-22T14:36:50.803 回答
13

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

我将所有 JAR 文件存储在一个名为“lib”的文件夹中,并以正常的 Eclipse 方式将 jars 添加到构建路径中。在我更新之前,这一直很好。

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

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

于 2012-05-14T09:06:29.800 回答