O Android Estúdio gradle não compilar a versão especificada

? Thahzan Mohomed @ | Original: StackOverFlow
---

Eu tenho vindo a desenvolver este projeto pequeno para alguns dias agora, mas, de repente, hoje, Android estúdio começou a me dar esse erro

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

Eu entendi que é porque ele está tentando compilar a biblioteca de Android -L. A versão que eu quero isso para compilar é a versão antiga, mas ele não vai. Ele continua me dando o erro acima não importa qual versão eu entrar. Eis as dependências .

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

UPDATE

Acabei de instalar o Android Estúdio Beta e mudou minhas dependências para o Eugen sugerido abaixo . Mas sincronizar o projeto dá o mesmo erro não importa qual versão do AppCompat, versão apoio especifico . Ele dá este erro cada vez que eu sincronizar

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

Meus dependências atualizados

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

UPDATE 2

Eu não acho que eu entendo o sistema de dependências do Android Estúdio corretamente. Eu só removidos tanto o AppCompat e apoio das dependências e ainda me dá o mesmo erro . Eu tenho que remover as bibliotecas inicialmente incluídas em algum lugar ?

build.gradle

* Nota - eu adicionei essas duas bibliotecas de volta novamente e tentou sincronizar, apenas no caso . Mas não há 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 nível superior

// 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()
    }
}
---

Top 5 Responder

1Eugen Martynov @

Isso está correto . A nova biblioteca de suporte não é compatível (ainda ) com versões antigas do Android.

Mude sua gradle para :

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

Espero que o seu ainda tem algo parecido com isto :

android {
  compileSdkVersion 19
  buildToolsVersion '19.1.0'

  defaultConfig {
    minSdkVersion 14
    targetSdkVersion 19
 }
}
2TalkLittle @

UPDATE: Encontrado a correção real para o meu caso. Certifique-se que nenhuma das suas dependências são silenciosamente incluindo suporte - v4 r21, fazendo isso no seu build.gradle :

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

Você pode adicionar o exclude para todas as bibliotecas, em seguida, retire um por um até que você descobrir qual deles estava puxando em support-v4 e dando-lhe o erro. E deixar exclude em que um.

Há um novo bug arquivado aqui: https://code.google.com/p/android/issues/detail?id=72430

Supondo que você está usando o Repositório de Apoio, a solução é a comentar ou remover a linha

<version>21.0.0-rc1</version>

no arquivo de listagem repo locais Maven no <android-sdk>/extras/android/m2repository/com/android/support-v4/maven-metadata.xml

3Gabriele Mariotti @

Com as últimas atualizações, usando este :

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

or

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

você estiver usando o lib apoio em L -preview.

Estes libs de apoio estão declarando minSdkVersion L .

Você tem que forçar o minSdkVersion para ser 'L' (verifique o doc)

Isso ocorre porque essas APIs não são definitivas. É uma forma de evitar a instalação dos aplicativos em um dispositivo final API 21 ou publicá-lo na loja usando o suporte lib 21 -R1.

Using

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

você estiver usando o "velho" biblioteca de suporte 19.1.0 .

4raycohen @

Eu tive o mesmo problema como uma das minhas dependências tinha especificado ' apoio - v7 : +' como uma dependência . Eu era capaz de controlar isso para baixo, usando gradle dependencies

Gradle fornece uma maneira de http://www.gradle.org/docs/current/dsl/org.gradle.api.artifacts.dsl.DependencyHandler.html#N15F3A a uma versão específica . Acabei por ter isso no meu build.grade :

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

Isso funcionou para mim