【问题标题】:Android Studio gradle doesn't compile the specified versionAndroid Studio gradle 不编译指定版本
【发布时间】:2014-08-18 02:43:27
【问题描述】:

我已经开发这个小项目几天了,但是今天突然,Android Studio 开始给我这个错误

Error:Execution failed for task ':app:processDebugManifest'.
> Manifest merger failed : uses-sdk:minSdkVersion 14 cannot be smaller than version 14 declared in library com.android.support:support-v4:21.0.0-rc1

我明白这是因为它正在尝试编译Android-L的库。我希望它编译的版本是旧版本,但不会。无论我输入哪个版本,它都会不断给我上述错误。这是依赖项。

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:20.+'
    compile 'com.android.support:support-v4:20.+'
}

更新

我刚刚安装了 Android Studio Beta 并将我的依赖项更改为 Eugen 下面建议的那个。但是无论我指定哪个版本的 appcompat 和支持版本,同步项目都会产生相同的错误。每次同步时都会出现此错误

uses-sdk:minSdkVersion 14 cannot be smaller than version L declared in library com.android.support:support-v4:21.0.0-rc1

我更新的依赖项

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:19.+'
    compile 'com.android.support:support-v4:19.+'
}

更新 2

我认为我没有正确理解 Android Studio 的依赖系统。我刚刚从依赖项中删除了 appcompat 和 support,它仍然给我同样的错误。我是否必须从某处删除最初包含的库?

build.gradle

*note - 我再次添加了这两个库并尝试同步,以防万一。但没有 chenges。

apply plugin: 'android'

android {
    compileSdkVersion 19
    buildToolsVersion "19.1.0"

    defaultConfig {
        applicationId "taz.starz.footynews"
        minSdkVersion 14
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:19.+'
    compile 'com.android.support:support-v4:19.+'
    compile project(':ParallaxScroll')
    compile files('src/main/libs/Header2ActionBar-0.2.1.jar')
    compile 'com.arasthel:gnavdrawer-library:+'
    compile 'com.koushikdutta.ion:ion:1.2.4'
}

顶级 build.gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.12.+'
    }
}

allprojects {
    repositories {
        mavenCentral()
    }
}

【问题讨论】:

  • 看起来您有多模式项目。你的父母 build.gradle 是什么?
  • 您的意思是顶级 build.gradle 文件?
  • 视差滚动项目的依赖关系是什么?
  • 是的,顶级 build.gradle
  • 它的 build.gradle 文件不包含任何依赖项,也没有 .jar 文件。所以我假设它没有任何依赖关系?

标签: android android-studio gradle android-gradle-plugin build.gradle


【解决方案1】:

更新:为我的案例找到了真正的解决方法。通过在您的 build.gradle 中执行此操作,确保您的所有依赖项都没有静默地包含 support-v4 r21:

compile("com.blahblah:blah:123") {
    exclude group: 'com.android.support', module:'support-v4'
}

您可以将exclude 添加到所有库中,然后一个一个地删除,直到您找出哪个库正在拉入support-v4 并给您错误。并留下exclude 那个。


这里有一个新的错误:https://code.google.com/p/android/issues/detail?id=72430

假设您使用的是支持存储库,解决方法是注释或删除该行

<version>21.0.0-rc1</version>

在本地 Maven 存储库列表文件中 &lt;android-sdk&gt;/extras/android/m2repository/com/android/support-v4/maven-metadata.xml

【讨论】:

  • 非常感谢老兄。解决了这个问题。我猜谷歌解决了这个问题后,我得回去把它重新输入到文件中?
  • 太棒了 :) 我使用独立的 android sdk,所以没有这样的问题。很高兴知道!
  • 注释掉该行暂时修复它。
  • appcompat-v7也可能出现同样的情况,所以当exclude group: 'com.android.support', module:'appcompat-v7'不能与support-v4一起使用时,你也应该尝试exclude group: 'com.android.support', module:'appcompat-v7'。
【解决方案2】:

在最近的更新中,使用这个:

compile 'com.android.support:support-v4:20.+'

或

compile 'com.android.support:support-v4:+'

您正在 L-preview 中使用支持库。

这些支持库声明minSdkVersion L。

您必须强制 minSdkVersion 为“L”(查看文档)

这是因为这些 API 不是最终的。这是一种防止在最终 API 21 设备上安装应用程序或使用支持库 21-r1 在商店中发布应用程序的方法。

使用

compile 'com.android.support:support-v4:19.1.0'

您正在使用“旧”支持库 19.1.0。

【讨论】:

  • 我理解到一半并尝试在依赖项中输入compile 'com.android.support:appcompat-v7:19.1.+',但它仍然编译了最新版本(出于某种原因)。虽然我怀疑这不是最好的解决方案,但 TalkLittle 的答案很有效。
  • 尝试清理缓存并重新同步项目
  • 编译 'com.android.support:support-v4:20.+' 似乎不起作用。
【解决方案3】:

我遇到了同样的问题,因为我的一个依赖项将“support-v7:+”指定为依赖项。我可以使用gradle dependencies

追踪到这一点

Gradle 提供了一种将force resolution 转换为特定版本的方法。我最终在我的build.grade 中有这个:

compile('com.android.support:appcompat-v7:19.1.0') {
    // really use 19.1.0 even if something else resolves higher
    force = true 
}

【讨论】:

    【解决方案4】:
    compile('com.android.support:support-v4:19.1.0'){
        force = true
    }
    

    这对我有用

    【讨论】:

      【解决方案5】:

      没错。新的支持库(尚)与旧的 Android 版本不兼容。

      将你的 gradle 更改为:

      dependencies {
          compile fileTree(dir: 'libs', include: ['*.jar'])
          compile 'com.android.support:appcompat-v7:19.1.+'
          compile 'com.android.support:support-v4:19.1.+'
      }
      

      我希望你还有这样的东西:

      android {
        compileSdkVersion 19
        buildToolsVersion '19.1.0'
      
        defaultConfig {
          minSdkVersion 14
          targetSdkVersion 19
       }
      }
      

      【讨论】:

      • 我把它改成了你说的那个,但它给出了这个(我刚刚安装了 AS Beta,所以它以稍微不同的方式显示错误) uses-sdk:minSdkVersion 14 不能小于版本L 在库 com.android.support:support-v4:21.0.0-rc1 中声明
      • 是的,compileSdkVersion、minSdkVersion等定义正确。
      • 你改过这个com.android.support:appcompat-v7:19.+了吗?之后你用 gradle 文件同步项目了吗?
      • 在我改变它之后,它请求同步,我做到了,它给了我同样的错误。我做错了吗?我必须手动同步吗?
      • 我认为我没有正确理解Android Studio的系统。你能看到我的更新(2)并给我一个答案 Eugen 吗?
      【解决方案6】:

      我收到了错误:

      任务“:app:processDebugManifest”执行失败。

      清单合并失败:uses-sdk:minSdkVersion 1 不能小于库中声明的版本 4 C:\Users\Igor\AppData\Local\Android\sdk\samples\android-21_1\legacy\ApiDemos\app\build\intermediates\exploded-aar\com.android.support\support-v4\21.0.3\AndroidManifest .xml 建议:使用 tools:overrideLibrary="android.support.v4" 强制 用法

      然后我通过将以下内容放入我的 defaultConfig gradle 块中来解决它:

      minSdkVersion 15
      targetSdkVersion 21
      

      【讨论】:

      • 我遇到了同样的错误,这对我不起作用。
      【解决方案7】:

      在 Android SDK Manager 中,从“extra”组安装“Android Support Repository”。它帮助到我。当我添加“排除组:'com.android.support',模块:'support-v4'”时构建完成,但发生了一些其他错误

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-08
        • 2013-05-11
        • 1970-01-01
        • 1970-01-01
        • 2017-07-27
        相关资源
        最近更新 更多