Android Studio Gradle non compila la versione specificata

? Thahzan Mohomed @ | Original: StackOverFlow
---

Sono stato in via di sviluppo questo piccolo progetto per qualche giorno, ma improvvisamente oggi, Android Studio ha iniziato a darmi questo errore

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

Ho capito che è perché si sta cercando di compilare la libreria di Android -L . La versione Voglio che compilare è la vecchia versione, ma non lo farà . Mantiene darmi l'errore precedente, non importa quale versione io entro . Ecco le dipendenze .

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

UPDATE

Ho appena installato Android Studio Beta e cambiato le mie dipendenze a quella Eugen suggerito di seguito . Ma la sincronizzazione il progetto dà lo stesso errore, non importa quale versione di appcompat, versione sostegno specificata. Dà questo errore ogni volta la sincronizzazione

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

Le mie dipendenze aggiornati

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

UPDATE 2

Non credo che ho capito bene il sistema di dipendenze di Android Studio . Ho appena rimosso sia il appcompat e sostegno da parte delle dipendenze e mi dà ancora lo stesso errore . Devo rimuovere le librerie inizialmente compresi da qualche parte?

build.gradle

* nota - ho aggiunto nel nuovo quei due biblioteche e provato la sincronizzazione, per ogni evenienza. Ma nessun 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'
}

Top build.gradle livello

// 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 Risposta

1Eugen Martynov @

Questo è corretto . La nuova libreria di supporto non è compatibile ( ancora) con le vecchie versioni di Android .

Cambia la tua Gradle a :

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

Spero tu abbia ancora qualcosa di simile a questo :

android {
  compileSdkVersion 19
  buildToolsVersion '19.1.0'

  defaultConfig {
    minSdkVersion 14
    targetSdkVersion 19
 }
}
2TalkLittle @

UPDATE : trovato la vera soluzione per il mio caso . Assicuratevi che nessuno dei vostri dipendenze sono silenziosamente tra cui il supporto - v4 r21 facendo questo nel vostro build.gradle :

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

È possibile aggiungere il exclude per tutte le librerie, quindi rimuovere uno per uno fino a capire quale stava tirando in support-v4 e dando l'errore . E lasciare exclude su quello.

C'è un nuovo bug archiviato qui : https://code.google.com/p/android/issues/detail?id=72430

Supponendo che si sta utilizzando il repository di supporto, la soluzione è quella di commentare o rimuovere la linea

<version>21.0.0-rc1</version>

nel file elenco repo locale Maven a <android-sdk>/extras/android/m2repository/com/android/support-v4/maven-metadata.xml

3Gabriele Mariotti @

Con gli ultimi aggiornamenti, con questo :

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

or

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

si utilizza il lib supporto a L -preview .

Queste librerie di supporto dichiarano minSdkVersion L .

Devi forzare la minSdkVersion per essere ' L ' ( controlla il doc )

Questo perché queste API non sono definitive . E 'un modo per evitare che l'installazione delle applicazioni su un finale API 21 dispositivo o la pubblicazione sul negozio utilizzando supporto lib 21 - r1 .

Using

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

si utilizza il " vecchio" libreria di supporto 19.1.0 .

4raycohen @

Ho avuto lo stesso problema, come una delle mie dipendenze aveva specificato ' support- v7 : + ' come una dipendenza . Sono stato in grado di rintracciare questo giù con gradle dependencies

Gradle fornisce un modo per http://www.gradle.org/docs/current/dsl/org.gradle.api.artifacts.dsl.DependencyHandler.html#N15F3A a una versione specifica . Ho finito per avere nel mio 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
}

Questo ha funzionato per me