【问题标题】:Gradle not Respecting Ivy Standard Version RequirementGradle 不遵守 Ivy 标准版本要求
【发布时间】:2017-09-17 12:43:30
【问题描述】:

在我的 build.gradle 文件中:

compile 'com.android.support:support-v4:[10.0.0,26.0.0['
compile 'com.android.support:appcompat-v7:[10.0.0,26.0.0['

运行gradle dependencies,显示:

sourcesReleaseCompile - Classpath for compiling the sourcesRelease sources.
+--- project :MyProject
|    +--- com.android.support:support-v4:[10.0.0,26.0.0[ -> 26.0.0-alpha1
[...]
|    \--- com.android.support:appcompat-v7:[10.0.0,26.0.0[ -> 26.0.0-alpha1

我想避免包含 26.0.0-alpha1...为什么 gradle 在这里不尊重 ivy 标准符号?

测试项目:https://github.com/benmarten/gradle-dependency-test

常春藤标准:http://ant.apache.org/ivy/history/latest-milestone/settings/version-matchers.html

【问题讨论】:

    标签: android gradle ivy


    【解决方案1】:

    你的版本不对,26.0.0还没有发布。检查您在本地拥有的版本:

    $ ls ~/android-sdk/extras/android/m2repository/com/android/support/appcompat-v7/
    18.0.0/                  22.1.1/                  23.4.0/                  25.0.1/
    19.0.0/                  22.2.0/                  24.0.0/                  25.1.0/
    19.0.1/                  22.2.1/                  24.0.0-alpha1/           25.1.1/
    19.1.0/                  23.0.0/                  24.0.0-alpha2/           25.2.0/
    20.0.0/                  23.0.1/                  24.0.0-beta1/            25.3.0/
    21.0.0/                  23.1.0/                  24.1.0/                  25.3.1/
    21.0.2/                  23.1.1/                  24.1.1/                  26.0.0-alpha1/
    21.0.3/                  23.2.0/                  24.2.0/                  maven-metadata.xml
    22.0.0/                  23.2.1/                  24.2.1/                  maven-metadata.xml.md5
    22.1.0/                  23.3.0/                  25.0.0/                  maven-metadata.xml.sha1
    

    由于 26.0.0-alpha1 已退出但 26.0.0 未退出,因此您需要使用 +。这适用于 Gradle 3.5:

    dependencies {
        compile 'com.android.support:support-v4:[10.0.0,26.0.+['
        compile 'com.android.support:appcompat-v7:[10.0.0,26.0.+['
    }
    

    可能与您的问题无关,但您的项目无法编译:

    /Users/<>/repo/gradle-dependency-test/app/src/main/AndroidManifest.xml Error:
            uses-sdk:minSdkVersion 10 cannot be smaller than version 14 declared in library [com.android.support:appcompat-v7:26.0.0-alpha1] /Users/<>/.android/build-cache/72b0bd3c930a8826bf341b591250d185129357b9/output/AndroidManifest.xml
            Suggestion: use tools:overrideLibrary="android.support.v7.appcompat" to force usage
    
    See http://g.co/androidstudio/manifest-merger for more information about the manifest merger.
    
    :app:processDebugManifest FAILED
    
    FAILURE: Build failed with an exception.
    
    * What went wrong:
    Execution failed for task ':app:processDebugManifest'.
    > Manifest merger failed : uses-sdk:minSdkVersion 10 cannot be smaller than version 14 declared in library [com.android.support:appcompat-v7:26.0.0-alpha1] /Users/<>/.android/build-cache/72b0bd3c930a8826bf341b591250d185129357b9/output/AndroidManifest.xml
            Suggestion: use tools:overrideLibrary="android.support.v7.appcompat" to force usage
    
    * Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
    
    BUILD FAILED
    
    Total time: 2.136 secs
    

    原来是你的minSdkVersion 版本。在您的app/build.gradle 中,将您的minSdkVersion 设置为14

    android {
        defaultConfig {
            minSdkVersion 14
        }
    }
    

    【讨论】:

    • 谢谢!按照建议使用:[10.0.0,26.+[ 解决了!您看到此错误的原因是版本 26 与 minSDKVersion 冲突,我想通过排除 26 来避免这种情况
    【解决方案2】:

    compileSdkVersion 26 立即发布

    Setting up Gradle for api 26 (Android)

    allprojects {
        repositories {
            jcenter()
            maven {
                url "https://maven.google.com"
            }
        }
    }
    
    android {
        compileSdkVersion 26
        buildToolsVersion "26.0.1"
        defaultConfig {
            applicationId "com.keshav.retroft2arrayinsidearrayexamplekeshav"
            minSdkVersion 15
            targetSdkVersion 26
            versionCode 1
            versionName "1.0"
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    }
     compile 'com.android.support:appcompat-v7:26.0.1'
        compile 'com.android.support:recyclerview-v7:26.0.1'
        compile 'com.android.support:cardview-v7:26.0.1'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-24
      • 1970-01-01
      • 1970-01-01
      • 2015-07-27
      相关资源
      最近更新 更多