appcompat-v7:21.0.0无法使用Google Play服务6.1+

tom*_*136 11 android android-appcompat google-play-services android-5.0-lollipop

我正在更新我的应用以带来材料主题支持(我的应用使用Google Play服务)

当我同步我的项目时,这出现了:

...\app\build\intermediates\exploded-aar\com.google.android.gms\play-services\6.1.11\res\values\wallet_colors.xml

Error:Attribute "showText" has already been defined
Run Code Online (Sandbox Code Playgroud)

我的gradle依赖:

compile 'com.android.support:appcompat-v7:21.0.0'
compile 'com.google.android.gms:play-services:6.1.11'
// the latest version of play-services is 6.1.11
Run Code Online (Sandbox Code Playgroud)

如果我排除appcompat-v7,那么项目编译时没有错误.

我对棒棒糖感到兴奋,没有正确阅读文档吗?我怎样才能解决这个问题?

部分构建脚本:

compileSdkVersion 21
buildToolsVersion '21.0.1'
dexOptions {
    preDexLibraries true
    //incremental true
}
defaultConfig {
    minSdkVersion 14
    targetSdkVersion 21
    versionCode 11
    versionName '1.0'
    renderscriptTargetApi 21
    renderscriptSupportMode true
}
compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}
Run Code Online (Sandbox Code Playgroud)

本地Google存储库如下所示: 在此输入图像描述

Dam*_*tla 20

@igavran回答指向正确的方向,但我想给出更全面的答案,所以它是:

Gradle Resource Merger合并来自所有依赖项的所有资源文件夹并放入单个文件夹中.如果存在重复,则构建过程将失败.

出于某些奇怪的原因,Android Studio指向消息窗口中Google Play服务库的wallet_colors.xml.Google Play服务与此问题无关.幸运的是,如果你看下面的输出:标签,你会找到问题的正确途径,例如

来自Android Studio的屏幕截图

您还可以从命令行构建项目并获得正确的路径.

里面values.xml管线172(在你的情况不同的线路)的文件,你会发现一个<declare-styleable>名为财产"色"("showText"你的情况).最有可能是你自己的风格,你必须改变,以摆脱重复.

所以现在,当你知道原因时,你可以在项目模块中找到该属性并用不同的名称替换它.我猜它会位于/values/attrs.xml文件中.


iga*_*ran 5

我在同一个问题上花了最后两个小时,在我的情况下问题是我已经定义了我自己的属性"showText"(在res/values/attrs.xml中),它与定义的属性发生冲突 <declare-styleable name="SwitchCompat">.

使用appcompat-v7:20但使用appcompat-v7:21构建失败时,此问题不存在.