5

こんにちは、これは Google アナリティクスのサンプル コードから選んだ小さなコードです。

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 アナリティクス v2beta ライブラリを使用しているときにエラーNoClassdefFoundErrorが発生する問題を解決するには、このライブラリを「エクスポート済み」としてマークする必要があります。

どのように?

  • ライブラリを追加します: Project -> Properties -> Java Build Path -> Libraries -> Add External JARs...
  • 次に、同じウィンドウの [注文とエクスポート] に移動し、チェックボックスでこのライブラリを「エクスポート済み」としてマークします。

プロジェクトを実行すると、Analytics クラスが検出されます。

詳細とその理由はこちら

于 2013-01-22T14:36:50.803 に答える
13

ADT を更新した後、この問題が発生しました。

すべての JAR ファイルを「lib」というフォルダーに保存し、通常の Eclipse の方法で jar ファイルをビルド パスに追加していました。これは私の更新までうまくいきました。

更新後、jar に含まれていることがはっきりとわかるクラスの NoClassDefFoundError を取得していました (ReferencedLibraries クラスを確認してください)。

解決策は、ビルド パスから jar を削除し、"lib" フォルダーの名前を "libs" に変更することでした。これは ant 規則であり、新しい ADT がライブラリを見つけて .apk ファイルに含める方法のようです。これを行うと、すべてが正常に機能しました。

于 2012-05-14T09:06:29.800 に答える