【问题标题】:How to fix Error: Duplicate resources for global_tracker.xml when adding Google Analytics?如何修复错误:添加 Google Analytics 时 global_tracker.xml 的资源重复?
【发布时间】:2016-04-08 10:01:42
【问题描述】:

我正在尝试在我的 App 中实现 Google Analytics,但在编译时出现以下错误:

错误:任务 ':app:mergeDebugResources' 执行失败。 [xml/global_tracker] C:\Users\Carlos\AndroidStudioProjects\Capstone\SP\Stocks 面板 Lite\app\src\main\res\xml\global_tracker.xml [xml/global_tracker] C:\Users\Carlos\AndroidStudioProjects\Capstone\SP\Stocks 面板 Lite\app\build\generated\res\google-services\debug\xml\global_tracker.xml: 错误:重复资源

我尝试运行干净的项目,但我得到了同样的错误。如果我删除 app/build,我也会得到同样的错误。

提前致谢。

更新:build.gradle

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

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"
    useLibrary 'org.apache.http.legacy'
    defaultConfig {
        applicationId "com.carlos.capstone"
        minSdkVersion 11
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        multiDexEnabled true

    }
    buildTypes {
        release {
            minifyEnabled false

            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    packagingOptions {
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
        exclude 'META-INF/NOTICE'
    }

}
repositories {
    mavenCentral()
    maven { url "https://jitpack.io" }
}
dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:design:23.1.1'
    compile 'com.android.support:recyclerview-v7:23.1.1'
    compile 'com.android.support:cardview-v7:23.1.1'
    compile 'com.android.support:gridlayout-v7:23.1.1'
    compile 'com.android.support:support-v4:23.1.1'
    compile 'com.android.support:support-annotations:23.1.1'
    compile 'com.squareup.retrofit:retrofit:2.0.0-beta2'
    compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2'
    compile 'com.squareup.retrofit:adapter-rxjava:2.0.0-beta2'
    compile 'io.reactivex:rxandroid:1.0.1'
    compile 'io.reactivex:rxjava:1.1.1'
    compile 'com.squareup.okhttp:logging-interceptor:2.6.0'
    compile 'com.github.PhilJay:MPAndroidChart:v2.1.6'
    compile 'com.bignerdranch.android:expandablerecyclerview:2.0.4'
    compile 'com.crazyhitty.chdev.ks:rss-manager:0.21'
    compile 'com.github.frankiesardo:linearlistview:1.0.1@aar'
    compile 'com.github.bumptech.glide:glide:3.5.2'
    compile 'com.facebook.stetho:stetho-urlconnection:1.3.1'
    compile 'com.facebook.stetho:stetho:1.3.1'
    compile 'com.android.support:customtabs:23.0.0+'
    compile 'com.squareup.leakcanary:leakcanary-android:1.3.1'
    compile 'org.apache.commons:commons-lang3:3.1'
    compile 'org.apache.poi:poi:3.14'
    compile 'net.sf.supercsv:super-csv:2.4.0'
    compile 'com.google.android.gms:play-services-gcm:8.3.0'
    compile 'com.google.android.gms:play-services-analytics:8.3.0'

}

【问题讨论】:

  • 显示你的build-gradle
  • 好的。对于测试用例使用compile 'com.google.android.gms:play-services:7.3.0'不需要services-analytics:8.3.0
  • 如果注释掉apply plugin: 'com.google.gms.google-services' 会出现任何崩溃??您可以设置配置的底线
  • 我已经实现了Levon给出的解决方案?要不要我把 global_tracker.xml 再放一遍试试看?
  • 当我从 compile 'com.google.android.gms:play-services-gcm:8.3.0' 更改为 7.3.0 时,此错误消失

标签: android android-resources google-analytics-firebase google-play-services


【解决方案1】:

当您在资源 xml 文件夹中放置 global_tracker.xml 并在您的 build.gradle 文件中添加 apply plugin: 'com.google.gms.google-services' 时,会发生这种情况。那是将实现跟踪器的旧方式与新的做事方式混合在一起。解决方案是简单地从您的 xml 文件夹中删除 global_tracker.xml,因为 google-services 插件会在构建您的应用程序时自动从 google-services.json 配置文件中添加所有必需的数据。

此外,建议将apply plugin: 'com.google.gms.google-services' 行放在build.gradle 底部的依赖项部分之后。这很奇怪,但是将它放在顶部会导致某些配置出现错误。

此外,在尝试构建项目时,您可能会看到 error: cannot find symbol variable global_tracker,尤其是当您正在转换旧项目并从 Firebase 控制台下载 google-services.json 时仍在使用旧版 Google Analytics(分析)。这种情况下,打开新添加的google-services.json,在“services”对象中找到“analytics_service”。您将需要添加以下内容:

"analytics_property": {
    "tracking_id": "<your tracking id>"

所以整个部分看起来像这样(将您自己的 UA-XXXXXXXX-X 跟踪 ID 放在那里):

"analytics_service": {
  "status": 2,
  "analytics_property": {
      "tracking_id": "UA-12345678-9"
  }
},

之后,请确保在重建之前清理您的项目并重新同步 Gradle。希望对您有所帮助。

【讨论】:

  • 错误消失了,但问题是分析没有显示当前用户。我已经做了另一个小应用程序来测试这个网站developers.google.com/analytics/devguides/collection/android/v4/… 的分析,而这个javacodegeeks.com/2014/04/… 都运行良好(包括 global_tracker.xml)。很奇怪
  • 显示当前用户是另一个不相关的问题。如果我的回答对您的原始问题有所帮助,请将其标记为已接受的答案。然后专门针对当前用户问题发布一个不同的问题。谢谢。
  • 我们不需要跟踪器对象吗?跟踪器 mTracker = application.getDefaultTracker();
  • @iappmaker 是的,你的代码中仍然需要 Tracker 对象,但这里的问题是关于项目的配置,而不是如何在代码中实现它。
  • 我们怎样才能做到这一点并仍然应用自定义设置?是否有替代解决方案涉及“修复” global_tracker.xml 的自动生成?
猜你喜欢
  • 1970-01-01
  • 2010-09-10
  • 2014-04-06
  • 1970-01-01
  • 1970-01-01
  • 2019-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多