将Google Analytics添加到我的应用中时出现XML错误

问题描述 投票:6回答:8

我想在我的应用程序中附加谷歌分析谷歌分析。

我正在关注如何在谷歌GA主页中添加谷歌分析。 (https://developers.google.com/analytics/devguides/collection/android/v4/#manifest

但我在ApplicationTracker.java中有一个错误

在R.xml.global_tracker和R.xml.ecommerce_tracker中,xml有一个红线(有错误)

和错误内容是“xml无法解析或不是一个字段”

我已经处理了谷歌和stackoverflow搜索以及如此多的搜索。

很多人都说这是关于android.R的

但我不是添加android。我很好地使用com.myPackageName.R。

有人可以解释一下吗?

背后是我的代码

application tracker.Java

package com.zla.android;

import java.util.HashMap;
import android.app.Application;
import com.google.android.gms.analytics.GoogleAnalytics;
import com.google.android.gms.analytics.Tracker;
import com.zla.android.R;

public class ApplicationTrackers extends Application{

	private static final String PROPERTY_ID = "UA-XXXXXXXX-2";

	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>();
	
	synchronized Tracker getTracker(TrackerName trackerId) {
		if (!mTrackers.containsKey(trackerId)) {			
			GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
			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);
	}
}

global_tracker.xml

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

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

    <!-- The screen names that will appear in reports -->
    <string name="com.zla.android.MainActivity">MainActivity</string>
    
    <string name="ga_trackingId">UA-XXXXXXXX-2</string>
</resources>

ecommerce_tracker.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
	<integer name="ga_sessionTimeout">300</integer>
	<string name="ga_trackingId">UA-XXXXXXXX-2</string>    
</resources>

AndroidManifest.xml中

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

    <uses-sdk
        android:minSdkVersion="16"
        android:targetSdkVersion="21" />
    
    <!-- about google analytics -->
	<uses-permission android:name="android.permission.INTERNET" />
	<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
		
    <application
        android:allowBackup="true"
        android:icon="@drawable/app_icon"
        android:label="@string/app_name"
        android:theme="@style/AppTheme"
        android:largeHeap="true"  >

        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        
        <activity
            android:name="com.zla.android.SearchBrandActivity"
            android:label="search page" />
        
        <activity
            android:name="com.zla.android.SearchFrameActivity"
            android:label="search page" />
        
        <activity
            android:name="com.zla.android.ListActivity"
            android:label="list page"
            android:parentActivityName="com.zla.android.MainActivity" >
        </activity>
        
        <activity
            android:name="com.zla.android.ListActivity_WishList"
            android:label="list page"
            android:parentActivityName="com.zla.android.MainActivity" >
        </activity>
        
        <activity
            android:name="com.zla.android.DetailActivity"
            android:label="detail page"
            android:parentActivityName="com.zla.android.ListActivity" />
        
        <!-- about google analytics -->
        <meta-data
			android:name="com.google.android.gms.version"
			android:value="@integer/google_play_services_version" />
                
        <activity
            android:name="com.zla.android.ApplicationTrackers"
            android:label="google analytics"
            android:parentActivityName="com.zla.android.MainActivity" />
        
    </application>

</manifest>
android xml google-analytics tracking r.java-file
8个回答
8
投票

我有同样的错误,当我制作res / xml文件夹和重建项目时,它对我有帮助。


2
投票

我有同样的错误。 google-services.json文件中的客户端软件包名称和应用中的软件包名称必须相同。它帮助了我。


2
投票

别忘了添加这个

  1. 将依赖项添加到项目级build.gradle: classpath 'com.google.gms:google-services:1.5.0-beta2'
  2. 将插件添加到您的应用级build.gradle: apply plugin: 'com.google.gms.google-services'

我忘了在我的代码中添加这个,当我同步时,它没有错误。


1
投票

根据文档,必须创建文件

创建global_tracker.xml

使用以下内容创建文件app / src / res / xml / global_tracker.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <string name="ga_trackingId" translatable="false">${YOUR_TRACKING_ID}</string>
</resources>
Replace ${YOUR_TRACKING_ID} with your tracking ID.

Analytics


0
投票

我有同样的错误,这个解决方案(添加一个global_tracker.xml)文件在新的res / xml目录中工作。清洁和重建。请注意,在解决方案中,海报已将global_tracker.xml文件名中的G大写。这应该是小写的。解决方案的链接是here


0
投票

我遇到了同样的问题,但我对google-services.jsonpackage name没有任何问题。但是,在项目级别更新这个build.gradle为我修复了它。

  • classpath 'com.google.gms:google-services:1.5.0-beta2'
  • classpath 'com.google.gms:google-services:2.1.0'

0
投票

蛮力解决方案是简单地提供实际的分析代码。

GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
Tracker tracker = analytics.newTracker("UA-XXXXXXXXX-X");

而不是遵循Android常规程序

GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
Tracker tracker = analytics.newTracker(R.xml.global_tracker);

这是修复问题的一种非常野蛮的方式,但它确实有效,因为newTracker()方法只需要Google Analytics跟踪代码的实际字符串值。

official reference document甚至有相同的范例。


0
投票

如果未包含“app”文件夹中的配置文件“google-services.json”或已存在的配置文件中不包含Google Analytic的支持代码,则R.xml.global_tracker将导致错误。

注意:如果您已经为GCM或其他服务添加了'google-services.json',请不要忽略它。因为您必须通过包含Analytic来重建'google-services.json'。否则,错误将无法解决。

要创建配置文件,请单击解析开发者文档中的“获取配置文件”按钮,单击以下链接。

https://developers.google.com/mobile/add?platform=android&cntapi=analytics&cnturl=https:%2F%2Fdevelopers.google.com%2Fanalytics%2Fdevguides%2Fcollection%2Fandroid%2Fv4%2Fapp%3Fconfigured%3Dtrue&cntlbl=Continue%20Adding%20Analytics

此外,在Project Gradle中使用以下依赖项

dependencies {
    classpath 'com.android.tools.build:gradle:2.0.0-beta2'
    classpath 'com.google.gms:google-services:2.0.0-beta2'
}

内部App Gradle

dependencies {
      compile 'com.google.android.gms:play-services-analytics:8.4.0'
}
apply plugin: 'com.google.gms.google-services'
© www.soinside.com 2019 - 2024. All rights reserved.