代码之家  ›  专栏  ›  技术社区  ›  Tom Klino

了解gradle抱怨版本冲突的原因

  •  5
  • Tom Klino  · 技术社区  · 8 年前

    我一直在尝试带回我的一个旧应用程序,这是我不久前使用eclipse编写的。我导入到android studio,它抱怨版本冲突:

    所有com。安卓支持库必须使用完全相同的版本 规范(混合版本可能导致运行时崩溃)。建立 版本28.0.0-alpha1、27.1.0。示例包括 com。安卓支持:动画矢量可绘制:28.0.0-alpha1和 com。安卓支持:cardview-v7:27.1.0

    起初,我按照 this 通过在gradle文件中特别包含与较新版本冲突的包。所以我的gradle文件是这样结束的:

    apply plugin: 'com.android.application'
    
    android {
        compileSdkVersion 27
        buildToolsVersion "27.0.3"
    
        defaultConfig {
            applicationId "com.tomklino.imhere"
            minSdkVersion 16
            targetSdkVersion 19
        }
    
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
            }
        }
    
    
        dependencies {
            implementation 'com.android.support:appcompat-v7:+'
            implementation 'com.android.support:cardview-v7:27.1.0'
            implementation 'com.android.support:customtabs:27.1.0'
            implementation 'com.android.support:support-media-compat:27.1.0'
            implementation 'com.android.support:support-v4:27.1.0'
            implementation 'com.loopj.android:android-async-http:1.4.9'
            implementation "com.google.android.gms:play-services-gcm:11.8.0"
            implementation 'com.facebook.android:facebook-android-sdk:[4,5)'
        }
    
        apply plugin: 'com.google.gms.google-services'
    }
    

    这消除了 appcompat 行,但在调试了其他内容之后,我再次收到了上面的消息,但这次是28.0.0-alpha1版本。现在我不能包括新版本,因为如果我尝试,它会说它与sdk版本27不兼容。

    我正在试图理解,如果我没有在任何地方包含sdk版本,为什么它首先会要求该版本。依赖关系树中没有特别要求28.0.0-alpha1版本。

    2 回复  |  直到 8 年前
        1
  •  4
  •   CommonsWare    8 年前

    但是,在调试了其他东西之后,我再次得到了上面的消息,但这次是28.0.0-alpha1版本

    替换:

    implementation 'com.android.support:appcompat-v7:+'
    

    使用:

    implementation 'com.android.support:appcompat-v7:27.1.0'
    

    并决心停止使用 + 对于工件的整个版本。

    我正在试图理解,如果我没有在任何地方包含sdk版本,为什么它首先会要求该版本。

    您使用 + 对于版本 appcompat-v7 。这说明你想要Gradle能找到的最新信息。上周,谷歌发布了 28.0.0-alpha1 ,同时发布Android P Developer Preview 1。

        2
  •  0
  •   porfirion    8 年前

    我也有同样的问题,但没有依赖项在版本号中有“+”。 问题出现在xwalk(Crosswalk WebView)库中。 我通过添加“transitive”解决了这个问题:

    compile ('org.xwalk:xwalk_core_library:23.53.589.4') {
        transitive = true;
    }