【问题标题】:Conflict between Google Play Services and HoloEverywhere dependencies on Android StudioAndroid Studio 上的 Google Play Services 和 HoloEverywhere 依赖之间的冲突
【发布时间】:2014-01-15 12:53:49
【问题描述】:

我刚开始使用 Android Studio 和 Gradle,在尝试运行我的应用时遇到了冲突错误。我已经做了一些研究,问题是 HoloEverywhere 使用了一个自定义的 support-v4 库(一些内部类的可见性发生了变化),它不同于其他库使用的 support-v4 库,在这种情况下是 Google Play 服务。我已经阅读了一些类似here 的帖子,以便在所有模块中使用相同的 support-v4 库,但在这种情况下,我不能这样做,因为没有自定义 support-v4 库,HoloEverywhere 就无法工作,我无法触摸 Google Play 服务使用的 support-v4 库。我希望有人已经经历过这个并找到了解决方案,因为这让我发疯:)

这是错误日志:

Execution failed for task ':app:dexDebug'.
    > com.android.ide.common.internal.LoggedErrorException: Failed to run command:
/Users/diego/Documents/android-sdk-macosx/build-tools/19.0.1/dx --dex --output 
/Users/diego/Documents/WorkspaceAndroid/WorkspaceTest/app/build/libs/app-debug.dex 
/Users/diego/Documents/WorkspaceAndroid/WorkspaceTest/app/build/classes/debug 
/Users/diego/Documents/WorkspaceAndroid/WorkspaceTest/app/build/dependency-cache/debug 
/Users/diego/Documents/WorkspaceAndroid/WorkspaceTest/app/build/pre-dexed/debug/classes-2c9d7b640eaa13481d9d1c220b95094b847d6825.jar 
/Users/diego/Documents/WorkspaceAndroid/WorkspaceTest/app/build/pre-dexed/debug/classes-2edf2d8c7b1a7575431e0269a325d54bdc9fc798.jar 
/Users/diego/Documents/WorkspaceAndroid/WorkspaceTest/app/build/pre-dexed/debug/classes-bc16442b2fdfdfc88911109da1e6baf89a7938a0.jar 
/Users/diego/Documents/WorkspaceAndroid/WorkspaceTest/app/build/pre-dexed/debug/nineoldandroids-2.4.0-1e541581bdb9515af0d791ecbc51193b05f1c93a.jar 
/Users/diego/Documents/WorkspaceAndroid/WorkspaceTest/app/build/pre-dexed/debug/support-v4-13.0.0-2f3822466a4631d8fa7d69b3fd104b27f4df0298.jar 
/Users/diego/Documents/WorkspaceAndroid/WorkspaceTest/app/build/pre-dexed/debug/support-v4-19.0.1-a98845f591723a85fad8ed448a9cc0ced3cb3194.jar 
/Users/diego/Documents/WorkspaceAndroid/WorkspaceTest/app/build/pre-dexed/debug/support-v4-19.0.1a-f1f3d357780dd5b4d33c6ca1830109136769ef22.jar
    Error Code:
    2
    Output:
    UNEXPECTED TOP-LEVEL EXCEPTION:
    com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
    at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:594) 
    at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:552)
    at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:533)
    at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:170)
    at com.android.dx.merge.DexMerger.merge(DexMerger.java:188)
    at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439)
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:287)
    at com.android.dx.command.dexer.Main.run(Main.java:230)
    at com.android.dx.command.dexer.Main.main(Main.java:199)
    at com.android.dx.command.Main.main(Main.java:103)

settings.gradle:

include ':app'
include 'Volley'
include 'Facebook'
include 'ViewPagerIndicator'
include 'HoloEverywhere'

project(':Volley').projectDir = new File(settingsDir, 'libraries/volley')
project(':Facebook').projectDir = new File(settingsDir, 'libraries/facebook-android-sdk/facebook')
project(':ViewPagerIndicator').projectDir = new File(settingsDir, 'libraries/Android-ViewPagerIndicator/library')
project(':HoloEverywhere').projectDir = new File(settingsDir, 'libraries/HoloEverywhere/library')

“app”目录中的build.gradle:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.7.+'
    }
}

apply plugin: 'android'

repositories {
        mavenCentral()
}

android {
        compileSdkVersion 19
        buildToolsVersion '19.0.1'

        defaultConfig {
                minSdkVersion 10
                targetSdkVersion 19
        }
}

dependencies {
        compile 'com.google.android.gms:play-services:4.0.30'
        compile project(':Volley')
        compile project(':Facebook')
        compile project(':ViewPagerIndicator')
        compile project(':HoloEverywhere')
}

'HoloEverywhere/library' 目录中的 build.gradle:

buildscript {
        repositories {
                mavenCentral()
        }
        dependencies {
                classpath 'com.android.tools.build:gradle:0.7.+'
        }
}

apply plugin: 'android-library'

dependencies {
        compile files ('libs/support-v4-19.0.1.jar')
        compile files ('libs/nineoldandroids-2.4.0.jar')
}

android {
        compileSdkVersion 19
        buildToolsVersion '19.0.1'

        defaultConfig {
                minSdkVersion 7
                targetSdkVersion 19
        }

        sourceSets {
                main {
                    manifest.srcFile 'AndroidManifest.xml'
                    java.srcDirs = ['src']
                    res.srcDirs = ['res']
                }
        }
}

【问题讨论】:

    标签: android android-studio android-support-library android-holo-everywhere android-gradle-plugin


    【解决方案1】:

    进行这些更改,如果仓库在 maven 上可用,请避免使用本地项目:

    用于截击:

     compile 'com.mcxiaoke.volley:library-aar:1.0.0'
    

    在您的应用模块的 build.gradle 文件中并删除 settings.gradle 中与 Volley 相关的所有内容。

    根据这里的 holoeverywhere 库

    https://github.com/Prototik/HoloEverywhere/blob/master/library/build.gradle

    它正在使用这些依赖项

     dependencies {
        compile 'com.android.support:support-v4:19.0.+'
       compile 'com.nineoldandroids:library:2.4.0@jar'
     }
    

    下载此文件并通过替换您已有的内容添加到您的项目中。

    如果支持依赖项位于一个 gradle 项目模块中,例如您的情况(holoeverywhere 或 viewpageindicator),则不需要将其包含在任何其他模块中,因此如果有,请将其删除。

    完成所有这些更改后,使用此按钮将您的项目与 gradle 同步。

    【讨论】:

    • 当我使用: compile 'com.android.support:support-v4:19.0.1@jar' 时,它找不到 lib 类。也许我做错了什么。
    • 我已经从 github 库中复制了它,检查我更新的答案并尝试。
    • 如果我使用 'compile 'com.android.support:support-v4:19.0.+' 它不会从支持库的自定义版本中找到一些特定的类。而且它也没有找到 'com.nineoldandroids:library:2.4.0@jar'
    • 确保你已经从 github 下载了最新的 holoeverywhere 代码,仅一个月前支持库被移动到 19 版本,我认为你必须使用那个 jar 来让你的代码工作而不是那个位于 Google 存储库中。下载新代码后,您将自动找到依赖项。请截图你的代码结构。
    【解决方案2】:

    经过反复试验,感谢@pyus13 和@Prototik 的提示,我能够使用Android Studio 运行我的项目。我删除了依赖库的所有本地副本,除了 ViewPagerIndicator。以下是可用的 gradle 文件:

    settings.gradle:

    include ':app'
    include 'ViewPagerIndicator'
    
    project(':ViewPagerIndicator').projectDir = new File(settingsDir, 'libraries/Android-ViewPagerIndicator/library')
    

    “app”目录中的build.gradle:

    buildscript {
            repositories {
                    mavenCentral()
            }
            dependencies {
                    classpath 'com.android.tools.build:gradle:0.7.+'
                    classpath 'org.holoeverywhere:plugin:0.2.+'
            }
    }
    
    apply plugin: 'holoeverywhere'
    apply plugin: 'android'
    
    repositories {
            mavenCentral()
    }
    
    holoeverywhere {
            addons {
                    create 'preferences'
                    create 'slider'
            }
            library {
                    version '2.1.0'
            }
    }
    
    android {
            compileSdkVersion 19
            buildToolsVersion '19.0.1'
    
            defaultConfig {
                    minSdkVersion 10
                    targetSdkVersion 19
            }
    }
    
    dependencies {
            compile 'com.google.android.gms:play-services:4.0.30'
            compile 'com.google.code.gson:gson:2.2.+'
            compile 'com.mcxiaoke.volley:library-aar:1.0.+@aar'
            compile 'fr.avianey:facebook-android-api:3.6.+@aar'
    
            compile project(':ViewPagerIndicator')
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-04
      • 1970-01-01
      • 2018-01-28
      • 1970-01-01
      • 1970-01-01
      • 2018-06-27
      相关资源
      最近更新 更多