尝试使用Google Analytics时出现“错误:无法找到符号变量xml”的错误。

15
我正在尝试为我的一款Android应用实现Google Analytics,对于分析和Android应用程序开发我都是新手。我想尝试使用Google开发者网站中提供的示例。在尝试编译他们的代码时,我遇到了一个错误,指向Analytics应用程序java文件中的mTracker = analytics.newTracker(R.xml.global_tracker);行,.xml被突出显示。我在这里发布了整个代码。
package com.google.samples.quickstart.analytics;

import android.app.Application;

import com.google.android.gms.analytics.GoogleAnalytics;
import com.google.android.gms.analytics.Logger;
import com.google.android.gms.analytics.Tracker;

public class AnalyticsApplication extends Application {
  private Tracker mTracker;

  synchronized public Tracker getDefaultTracker() {
    if (mTracker == null) {
      GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
      // To enable debug logging use: adb shell setprop log.tag.GAv4 DEBUG
      mTracker = analytics.newTracker(R.xml.global_tracker);
    }
    return mTracker;
  }
}

我的 Global_tracker.xml 文件

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!--Replace placeholder ID with your tracking ID-->
    <string name="ga_trackingId">UA-XXXXXXXX-X</string>

    <!--Enable automatic activity tracking-->
    <bool name="ga_autoActivityTracking">true</bool>

    <!--Enable automatic exception tracking-->
    <bool name="ga_reportUncaughtExceptions">true</bool>
</resources>

我的清单文件

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

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

    <application
        android:name=".AnalyticsApplication"
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme">
        <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>
    </application>
</manifest>

我已经花了两天的时间在这个问题上,需要你的建议以继续前进。

谢谢。

6个回答

16
你需要在你的res文件夹中创建一个名为xml的新文件夹并将你的文件移动到该文件夹中。同时确保正确调用布局名称,因为在你的问题中,你写成了Global_tracker.xml而不是global_tracker.xml。这一点非常重要。
希望这能帮到你。

非常感谢,那帮了我大忙。 - faz
1
你说的是哪种布局?global_tracking.xml是一个xml资源文件,应该由GoogleAnalytics gradle插件生成。 - Luten
@Luten 这只是一个值资源文件,问答者在标题中明确说明了它不是在xml文件夹中创建的,而是在其他地方创建的。问答者不知道他应该创建一个名为xml的新文件夹来解决这个问题。因此,他一定要创建它。 - Hussein El Feky
1
  1. 你的回答提到了布局文件,这很令人困惑,因为没有布局文件。此外,布局文件不应放置在xml文件夹中。
  2. 这不是您应该使用Google Analytics的正确方式。 global_tracker.xml文件是自动生成的,不应手动创建。 提问者的问题是由于自动生成出现故障所致。有关此问题的讨论和解决方法可以在以下链接中找到: https://github.com/googlesamples/google-services/issues/26
- Luten
@Luten 你说得对,我写了布局文件是个错误,昨天我已经修复了。无论如何,这个解决方案解决了提问者的问题。此外,global_tracker.xml不是一个布局文件,它是一个值资源文件。而且,它不应该被自动生成,因为提问者需要在资源文件中输入他的跟踪ID。 - Hussein El Feky
@HusseinElFeky 已经编辑了您的回答。取消了踩。正如我之前所写的 - 这个文件是由 Google Analytics gradle 插件自动生成的。提问者不需要输入跟踪 ID,这只是自动生成错误。 - Luten

2

请检查您是否忘记将

apply plugin: 'com.google.gms.google-services'

添加到应用级别的build.gradle文件中。


在文件末尾 - Guilherme Simão Couto
对我来说,即使在模块级别的 build.gradle 中应用了应用插件,它也能正常工作。 - Gaket

1
“brute force”解决方案是直接提供实际的分析代码。
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跟踪代码的字符串值。官方参考文档甚至有相同的范例。

0

我也遇到了与GCM和Google Analytics相关的Play服务库版本10.2.1的相同问题,只需按照@Hussein El Feky的建议添加global_tracker.xml即可解决该问题。但仅此修复并不能解决我的问题,我还在strings.xml中添加了另外两行代码:

<string name="global_tracker">UA-XXXXXXXX-XX</string>
<string name="gcm_defaultSenderId">PROJECT-NO</string>

0

我在将版本降级时遇到了类似的问题,从

com.google.gms:google-services:3.0.0

com.google.gms:google-services:1.3.1

(不要问为什么(这是为了匆忙修复CI构建脚本的假设))

所以,请确保您没有进行降级更改。


-2

我曾经遇到过类似的问题。

使用classpath com.android.tools.build:gradle:1.2.3。这解决了我的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接