2

私の応用クラス

public class MyApplication extends Application {

private static final String PROPERTY_ID = "UA-XXXXXX-X";
public static int GENERAL_TRACKER = 0;

public enum TrackerName {
    APP_TRACKER, // Tracker used only in this app.
    GLOBAL_TRACKER, // Tracker used by all the apps from a company. eg:
                    // roll-up tracking.
    ECOMMERCE_TRACKER, // Tracker used by all ecommerce transactions from a
                        // company.
}

HashMap<TrackerName, Tracker> mTrackers = new HashMap<TrackerName, Tracker>();

public MyApplication() {
    super();
}

public synchronized Tracker getTracker(TrackerName trackerId) {
    if (!mTrackers.containsKey(trackerId)) {

        GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
        analytics.getLogger().setLogLevel(Logger.LogLevel.VERBOSE);
        Tracker t = (trackerId == TrackerName.APP_TRACKER) ? analytics
                .newTracker(PROPERTY_ID)
                : (trackerId == TrackerName.GLOBAL_TRACKER) ? analytics
                        .newTracker(R.xml.global_tracker) : analytics
                        .newTracker(R.xml.ecommerce_tracker);
        mTrackers.put(trackerId, t);

    }
    return mTrackers.get(trackerId);
  }
}

app_tracker.xml

<string name="ga_trackingId">UA-XXXXXX-X</string>
<string name="ga_sampleFrequency">100</string>

<bool name="ga_autoActivityTracking">true</bool>
<bool name="ga_reportUncaughtExceptions">true</bool>

<integer name="ga_sessionTimeout">-1</integer>

<screenName name="com.mobihouse.portabilidade.activities.HomeActivity_">HomeActivity</screenName>

global_tracker.xml

<integer name="ga_sessionTimeout">300</integer>

<!-- Enable automatic Activity measurement -->
<bool name="ga_autoActivityTracking">true</bool>

<string name="ga_logLevel">verbose</string>

<!-- The screen names that will appear in reports -->
<screenName name="com.mobihouse.portabilidade.activities.HomeActivity_">HomeActivity Portabilidade</screenName>
<!-- The following value should be replaced with correct property id. -->
<string name="ga_trackingId">UA-XXXXXX-X</string>

私のマニフェストで、私はすでにこれを追加しました:

    <application
    android:name="com.mobihouse.portabilidade.MyApplication"

    <meta-data
        android:name="com.google.android.gms.version"
        android:value="@integer/google_play_services_version" />

    <meta-data
        android:name="com.google.android.gms.analytics.globalConfigResource"
        android:resource="@xml/global_tracker" />

PROPERTY_ID をここに投稿するように変更しました。

そして問題は、ログに記録することです:

11-25 09:23:30.031: E/AndroidRuntime(8392): 致命的な例外: メイン 11-25 09:23:30.031: E/AndroidRuntime(8392): java.lang.NoClassDefFoundError: com.google.android.gms. analytics.GoogleAnalytics 11-25 09:23:30.031: E/AndroidRuntime (8392): com.mobihouse.portabilidade.MyApplication.getTracker (MyApplication.java:45) で

と:

11-25 09:23:29.992: I/dalvikvm(8392): メソッド com.google.android.gms.analytics.Tracker.setScreenName が見つかりませんでした。メソッド com.mobihouse.portabilidade.activities.HomeActivity.onCreate から参照されています

11-25 09:23:29.992: I/dalvikvm(8392): メソッド com.google.android.gms.analytics.GoogleAnalytics.getInstance が見つかりませんでした。メソッド com.mobihouse.portabilidade.activities.HomeActivity.onStart から参照されています

いくつかのサイトを検索しましたが、すべての解決策が機能しませんでした。誰か助けてくれませんか?

ADBマネージャーによると、現在のバージョン= 21であるGoogle Play Services libをすでに更新しています.Android 5.0 - API 21に実装しようとしています.

また、私はすでにグーグルプレイサービスを私のプロジェクトのライブラリとして入れています

4

1 に答える 1

1

ライブラリ プロジェクトとして Google Play Services をリンクする必要があります。

ライブラリ プロジェクトの詳細については、公式サイトをご覧ください。まもなく - 追加のプロジェクトにソース コードだけでなく、リソース (レイアウト、文字列) も含まれる場合は、ライブラリ プロジェクトを使用する必要があります。

ソース コードのみを含むライブラリを使用する必要がある場合は、.jar ファイルをlibsフォルダーにコピーするだけです。

Android 向け Google アナリティクスの現在のバージョン (v4) は、リソースを含む Google Play Services プロジェクトに含まれているため、ライブラリ プロジェクトとして参照する必要があります。

たとえば、Android 向け Google アナリティクスの以前のバージョン (v3) は、Google Play Services プロジェクトに含まれておらず、単純な .jar ライブラリでした。

于 2014-11-27T07:13:30.667 に答える