1

я настроил все вещи для Google Analytics API v4, как это упомянуто здесь: https://developers.google.com/analytics/devguides/collection/android/v4/ и здесь: http://www.javacodegeeks.com/2014/04/working-with-google-analytics-api-v4-for-android.htmlGoogle Analytics API v4 для Android App Крах при запуске

я сделал все шаги.

Я бегу мое приложение, но сбой

Вот мой global_tracker.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="TypographyDashes"> 

    <!-- The apps Analytics Tracking Id --> 
    <string name="ga_trackingId">UA-XXXXXX-15</string> 

    <!-- Percentage of events to include in reports --> 
    <string name="ga_sampleFrequency">100.0</string> 

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

    <!-- catch and report uncaught exceptions from the app --> 
    <bool name="ga_reportUncaughtExceptions">true</bool> 

    <!-- How long a session exists before giving up --> 
    <integer name="ga_sessionTimeout">-1</integer> 

    <!-- If ga_autoActivityTracking is enabled, an alternate screen name can be specified to substitute for the full length canonical Activity name in screen view hit. In order to specify an alternate screen name use an <screenName> element, with the name attribute specifying the canonical name, and the value the alias to use instead. --> 
    <screenName name="com.example.test.MainActivity">MainActivity</screenName> 
</resources> 

Вот мой AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.test"> 

    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.WRITE_SETTINGS" /> 

    <uses-feature android:name="android.hardware.camera"></uses-feature> 

    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.WAKE_LOCK" /> 
    <uses-permission android:name="android.permission.VIBRATE" /> 
    <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 



    <application 
     android:name=".Global" 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/Theme.AppCompat"> 
     <activity 
      android:name=".MainActivity" 
      android:label="@string/app_name" 
      android:screenOrientation="portrait"> 
      <intent-filter> 
       <action android:name="com.example.test.MESSAGE" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 

     </activity> 

     <activity 
      android:name=".SelectedImageActivity" 
      android:label="@string/app_name" 
      android:screenOrientation="portrait"> 

     </activity> 

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

     <!-- Google Analytics Version v4 needs this value for easy tracking --> 
     <meta-data android:name="com.google.android.gms.analytics.globalConfigResource" 
      android:resource="@xml/global_tracker" /> 

     <activity 
      android:name="com.google.android.gms.ads.AdActivity" 
      android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" 
      android:screenOrientation="portrait" /> 
    </application> 

</manifest> 

Вот мой AnalyticsApplication .java

public enum TrackerName { 
    APP_TRACKER, 
    GLOBAL_TRACKER, 
    E_COMMERCE_TRACKER, 
} 
HashMap<TrackerName, Tracker> mTrackers = new HashMap<TrackerName, Tracker>(); 
synchronized Tracker getTracker(TrackerName trackerId) { 
    if (!mTrackers.containsKey(trackerId)) { 
     GoogleAnalytics analytics = GoogleAnalytics.getInstance(this); 
     analytics.getLogger().setLogLevel(Logger.LogLevel.VERBOSE); 
     Tracker t = null; 
     if(trackerId==TrackerName.GLOBAL_TRACKER){ 
      t= analytics.newTracker("UA-66XXXXX-1"); 
     } 
     mTrackers.put(trackerId, t); 
    } 
    return mTrackers.get(trackerId); 
} 

}

Вот мой MainActivity класс:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     getWindow().setSoftInputMode(
       WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); 

     setContentView(R.layout.activity_main); 
     getSupportActionBar().hide(); 

     //Get a Tracker (should auto-report) 2 
     Tracker tracker = ((AnalyticsApplication) getApplication()).getTracker(AnalyticsApplication.TrackerName.GLOBAL_TRACKER); 
     tracker.setScreenName("MainActivity"); 

/////////////////////////////////////////////////////////// 

@Override 
    protected void onStart() { 
     super.onStart(); 
     GoogleAnalytics.getInstance(this).reportActivityStart(this); 
    } 

    @Override 
    protected void onStop() { 
     super.onStop(); 
     GoogleAnalytics.getInstance(this).reportActivityStop(this); 
    } 

Мой Сложение Gradle:

// Top-level build file where you can add configuration options common to all sub-projects/modules. 

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:1.2.3' 

     // NOTE: Do not place your application dependencies here; they belong 
     // in the individual module build.gradle files 
    } 
} 

allprojects { 
    repositories { 
     jcenter() 
    } 
} 

Построить Gradle:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 22 
    buildToolsVersion "22.0.1" 

    defaultConfig { 
     applicationId "com.example.test" 
     minSdkVersion 16 
     targetSdkVersion 21 
     versionCode 1 
     versionName "1.0" 


    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    compile files('libs/main.jar') 

    compile 'com.android.support:appcompat-v7:22.2.1' 
    compile 'com.commit451:NativeStackBlur:1.0.1' 
    compile 'com.google.android.gms:play-services-ads:7.3.0' 
    compile 'com.squareup.picasso:picasso:2.5.0' 
    compile 'com.github.bumptech.glide:glide:3.6.1' 
    compile 'com.android.support:support-v4:21.0.0' 
    } 

Мой Logcate:

01-10 22:29:13.627 11614-11620/? E/jdwp﹕ Failed sending reply to debugger: Broken pipe 
01-10 22:29:13.791 11614-11614/? E/AndroidRuntime﹕ FATAL EXCEPTION: main 
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.test/com.example.test.MainActivity}: java.lang.ClassCastException: com.example.test.Global cannot be cast to com.example.test.AnalyticsApplication 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
      at android.app.ActivityThread.access$600(ActivityThread.java:141) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
      at android.os.Handler.dispatchMessage(Handler.java:99) 
      at android.os.Looper.loop(Looper.java:137) 
      at android.app.ActivityThread.main(ActivityThread.java:5041) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:511) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
      at dalvik.system.NativeStart.main(Native Method) 
    Caused by: java.lang.ClassCastException: com.example.test.Global cannot be cast to com.example.test.AnalyticsApplication 
      at com.example.test.MainActivity.onCreate(MainActivity.java:52) 
      at android.app.Activity.performCreate(Activity.java:5104) 
      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
      at android.app.ActivityThread.access$600(ActivityThread.java:141) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
      at android.os.Handler.dispatchMessage(Handler.java:99) 
      at android.os.Looper.loop(Looper.java:137) 
      at android.app.ActivityThread.main(ActivityThread.java:5041) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:511) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
      at dalvik.system.NativeStart.main(Native Method) 

ответ

0

В манифесте вы сообщили:

<application 
    android:name=".Global" 

Базирование на вашем трассировки стека, AnalyticsApplication это вы Application класс, поэтому он должен быть:

<application 
    android:name=".AnalyticsApplication" 
+0

не работал :( –

+0

@OtmanElOuah, какое сообщение об ошибке вы видите сейчас в стеке? – thetonrifles

+0

App Crafter снова, я вижу ошибку MainActivity tracker.setScreenName («MainActivity»); –

Смежные вопросы