Fusione manifest non riuscita: use-sdk: minSdkVersion 14


233

Da quando ho scaricato l'ultimo SDK e installato Android Studio, il mio progetto non riesce a realizzarsi. Ricevo il seguente messaggio:

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

Sto riscontrando lo stesso errore Errore: esecuzione non riuscita per l'attività ': app: processDebugManifest'. > Fusione manifest non riuscita: use-sdk: minSdkVersion 19 non può essere inferiore alla versione 19 dichiarata nella libreria com.android.support:support-v4:21.0.0-rc1
bobby.dhillon

Ricevo la stessa eccezione minSdkVersion 15 non può essere più piccola della versione 15. Gli strumenti di generazione dell'SDK sono stati aggiornati, quindi suppongo sia un bug in Android Studio e i nuovi strumenti di costruzione
Boardy,

1
Sembra essere un bug: code.google.com/p/android/issues/detail?id=72430 La soluzione per ora è commentare una riga nel maven-metadata.xml
Emanuel Canha,

Risposte:


312

Nota: questo è stato aggiornato per riflettere il rilascio di API 21, Lollipop. Assicurati di scaricare l'ultimo SDK.

In uno dei miei moduli ho avuto il seguente in build.gradle:

dependencies {
    compile 'com.android.support:support-v4:+'
}

Cambiando questo in

dependencies {
    // do not use dynamic updating.
    compile 'com.android.support:support-v4:21.0.0' 
}

risolto il problema.

Assicurati di non fare un'inclusione generale com.android.support:support-v4:+o di altre librerie di supporto (v7, v13, appcompat, ecc.), Ovunque nel tuo progetto.

Immagino che il problema sia v4:+il rilascio dell'ultima L release candidate (21.0.0-rc1) che ovviamente richiede l'SDK L.

Modificare:

Se è necessario utilizzare le nuove viste (CardView, RecyclerView e Tavolozza), dovrebbe funzionare quanto segue:

compile "com.android.support:cardview-v7:21.0.0"
compile "com.android.support:recyclerview-v7:21.0.0"
compile "com.android.support:palette-v7:21.0.0"

(Ringraziamo EddieRingle su / androiddev - http://www.reddit.com/r/androiddev/comments/297xli/howto_use_the_v21_support_libs_on_older_versions/ )

Un'altra modifica

Assicurati di vedere la risposta di @ murtuza di seguito su appcompat-v7 e vota se aiuta!


3
Che dire di una biblioteca compilata da Maven? Come escludere la "vecchia" dipendenza?
Arnaud,

4
@Arnaud compile ("blah: blah: bla") {escludi gruppo: 'com.android.support', modulo: 'support-v4'}
AndroidGecko

3
Nota che per utilizzare CardView, RecyclerView e Palette, dovrai anche modificare il tuo Manifesto per evitare i lanci di gradi di conflitto di tipo merge. Vedi questo link per i dettagli: reddit.com/r/androiddev/comments/297xli/…
Michel,

3
Mai e poi mai, suggerire alle persone di usare + nella versione di dipendenza. Specificare SEMPRE la versione esatta della libreria che si desidera utilizzare (o è disponibile al momento della scrittura del codice). Anche 20. + è male. E se una libreria da cui dipendi segui questa cattiva pratica, considera di escludere la sua dipendenza e di fornire la tua versione di quella dipendenza. Questo rende la tua build riproducibile in qualsiasi momento. Migliora la tua risposta acquista rimuovendo il tuo suggerimento per usare + nella versione di dipendenza.
Daniele Segato,

1
Cosa ha detto @DanieleSegato. Non raccomandare mai il versioning dinamico. Sono cattive pratiche.
Xavier Ducrohet,

69

Inoltre, se stai importando la libreria appcompat-v7, assicurati di taggare un numero di versione alla fine in questo modo:

compile 'com.android.support:support-v4:19.+'
compile 'com.android.support:appcompat-v7:19.+'

Dopo aver modificato solo la versione support-v4, ho ancora ricevuto l'errore:

Fusione manifest non riuscita: use-sdk: minSdkVersion 15 non può essere inferiore alla versione L dichiarata nella libreria com.android.support:support-v4:21.0.0-rc1

È stato un po 'confuso perché sembra che v4 sia ancora il problema, ma, in effetti, limitare la versione di appcompat v7 ha risolto il problema.


Buona pesca! nessuno dei miei v7 aveva la versione su di loro neanche.
RoundSparrow hilltx,

e anche la stessa cosa per il supporto v13)
Defuera,

1
Ho avuto anche una discrepanza di appcompat_v7, buildToolsVersion '20.0.0'nel mio android{}e compile 'com.android.support:appcompat-v7:20.0+'nel mio dependencies {}non era lo stesso, quindi li ho resi uguali (come mostrato qui).
Azurespot,

1
È una cattiva pratica usare + identificatore per le versioni future. Specifica la versione esatta. Suggerisco di aggiornare "com.android.support:appcompat-v7:19.+" a questo "com.android.support:appcompat-v7:19.0.0" o che è l'ultimo. Se i problemi persistono, prova ad aggiornare la libreria di supporto dal gestore SDK.
sud007,

55

Soluzione 1:

Cambio usi-SDK per <uses-sdk tools:node="replace" />e aggiungere xmlns:tools="http://schemas.android.com/tools" inAndroidManifest.xml

 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.demo.android"
    android:versionCode="16"
    android:versionName="3.3.1">
    .
    .
    <uses-sdk tools:node="replace" />
    .
    .
</manifest>

Assicurati di utilizzare il grado 0.11 o superiore per utilizzare la fusione manifest.

Soluzione 2:

  • Passare compile 'com.android.support:support-v4:+'a compile 'com.android.support:support-v4:20.+'in build.gradle. Ciò impedirà l'utilizzo di Gradle v4:21.0.0che richiede la versione L.

  • Tuttavia, se una delle tue dipendenze esterne utilizza lo stesso. Probabilmente dovrai aspettare che aggiornino lo stesso.

Soluzione 3:

  • Rimuovi / Commenta <version>21.0.0-rc1</version>nel tuo file<android-sdk>/extras/android/m2repository/com/android/support-v4/maven-metadata.xml

  • Ripeti lo stesso per support-v7


Nel mio caso ho anche dovuto rimuovere l'equivalente appcompat-v7.
Eipipuz,

2
Sì, non fornire la soluzione 2 come opzione. La corretta gestione delle dipendenze (usando la versione giusta) o usando la strategia di risoluzione è la soluzione giusta. La modifica del repository Maven sta solo ritardando il problema fino al rilascio di un nuovo repository.
Xavier Ducrohet,

La soluzione 1 + 3 mi ha salvato la vita :)
Arrampicati il

2
La prima opzione funziona! Ti suggerirei di aggiungere alcuni dettagli sul perché ciò debba essere fatto.
Tejasvi Hegde,


11

Il problema si pone ancora con dipendenze transitive. Gradle offre un modo per forzare l'utilizzo di una versione specifica di una dipendenza.

Ad esempio puoi aggiungere qualcosa come:

configurations.all {
    resolutionStrategy {
        force 'com.android.support:support-v4:20.+'
        force 'com.android.support:appcompat-v7:20.+'
    }
}

al tuo build.gradle.

Se vuoi saperne di più sulle strategie di risoluzione dei gradi fai riferimento a questa guida http://www.gradle.org/docs/current/dsl/org.gradle.api.artifacts.ResolutionStrategy.html

L'ho trovato leggendo il problema corrispondente che collegherò qui


Grazie! Più facile che escludere in ogni dipendenza :)
Impiega il

8

Nel file build.gradle, per impostazione predefinita era compilato 'com.android.support:support-v4:+', quindi quando compili il progetto gradle prenderebbe in considerazione, com.android.support:support-v4:21.0.0-rc1 a causa della recente versione di anteprima dello sviluppatore L.

Apporta le modifiche nella riga seguente e risolverà il problema. Modificare

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

per

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

Allo stesso modo quando si utilizza la libreria di supporto v7-appcompat, apportare la modifica da

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

per

compile 'com.android.support:appcompat-v7:20.+'.

8

Aggiungendo alle risposte corrette sopra, il problema potrebbe ancora verificarsi a causa dell'annidamento della libreria. In questo caso, prova come nell'esempio seguente:

compile 'com.android.support:support-v4:20.+'
compile ('com.github.chrisbanes.actionbarpulltorefresh:extra-abs:+') { // example
    exclude group: 'com.android.support', module:'support-v4'
    exclude group: 'com.android.support', module:'appcompat-v7'
}

7

per le persone che creano app ibride utilizzando l'interfaccia della riga di comando Cordova, questo comando consente di:

cordova build android -- --minSdkVersion=15

sì, usa doppi trattini doppi come l'hai visto.


Questo risolve il problema reale? No. Funziona solo così, ma cordova run androidfallisce.
Ionut Necula,

@lonut sai qual è il problema reale?
ProllyGeek,

Nel mio caso il problema è un plugin che sto usando chiamato cordova-plugin-facebook4. Unistalling rende il cordova run androidlavoro perfetto. Purtroppo non ho trovato alcuna soluzione a questo da nessuna parte. Ho provato manualmente ad aggiungere minSdkVersionme stesso in AndroidManifestma viene sovrascritto. Sto ancora cercando di capirlo.
Ionut Necula,

@lonut Sto usando lo stesso plugin in alcune app su cui sto lavorando, fammi sapere se posso aiutarti. Tuttavia, è necessario rivedere il file build.gradle, forse se si forniscono informazioni aggiuntive che posso aiutare.
ProllyGeek,

Alla fine l'ho risolto cambiando la minSdkversione 15in config.xml. La linea: <preference name="android-minSdkVersion" value="14" />. In questo modo il AndroidManifestfile viene aggiornato anche con la nuova versione.
Ionut Necula,

6

Ho anche avuto lo stesso problema e la modifica di seguito mi ha aiutato:

a partire dal:

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

per:

dependencies {
 compile 'com.android.support:support-v4:20.0.0'
}

non è un codice. devi apportare questa modifica nel tuo file build.gradle.
min2bro,

6

Per le persone che affrontano questo problema nella versione beta di Android Studio , la risposta accettata non ha risolto il mio problema. Durante l'importazione di un progetto scaricato da GitHub, nel file dell'app build.gradle era presente quanto segue che riportava un errore in questione:

 dependencies {
    compile 'com.android.support:support-v4:+'
}

Ma nella mia cartella della libreria esterna ho questa cartella:

support-v4-21.0.0-rc1 //note the 21

Ho risolto il problema precedente modificando la dipendenza in:

dependencies {
compile 'com.android.support:support-v4:20.+' //20 used less than available strange but works
}

Nota: potrebbe essere necessario scaricare un livello di API inferiore a quello attualmente disponibile in Android Studio per alcune librerie e progetti affinché funzioni correttamente.


Questo sembra essere il problema fondamentale: "ovunque vedi" com.android.support:support "" ... "assicurati di avere il valore aggiornato" Questo è circa la sua dimensione!
Fattie,

5

Ho risolto il problema modificando la riga seguente in build.gradle e funziona! :-)

aggiunta della versione 20. + '

A partire dal

 dependencies {
        compile 'com.android.support:appcompat-v7:+'
    }

Per

dependencies {
    compile 'com.android.support:appcompat-v7:20.+'
}

1
Non ci posso credere. Nessuna delle altre risposte sopra ha funzionato per me, tranne questa. Grazie!!! Nota, ho dovuto cambiare entrambe le mie v4e v7di supporto al file :20.+.
Azurespot,

5
compile('com.android.support:support-v4:19.1.0'){
    force = true
}

Mi ha aiutato, preso da qui


4

Devi configurare tutti i supporti e le librerie di appcompat con la versione 19. +

Se la raccomandazione di lasciare la libreria di supporto con la versione 19. + non funziona, puoi provare il suggerimento successivo nel tuo file AndroidManifest.

Per prima cosa aggiungi questo codice:

xmlns:tools="http://schemas.android.com/tools"

E poi, a livello di applicazione (non all'interno dell'applicazione!)

<uses-sdk tools:node="replace" />

4

Faccio tutte le soluzioni qui senza alcun risultato, quindi guardo in un altro posto e ho trovato un modo per ingannare l'IDE, quindi devi mettere una linea nel Mainfest per fare in modo che il Gradle ne usi uno diverso, quello che hai messo su build.gradle la linea è:

<uses-sdk tools:node="replace" />

solo e funziona.

Spero possa essere d'aiuto.


3
ricordati di aggiungere: xmlns:tools="http://schemas.android.com/tools"in <manifest>-tag
seb

3

Devi rimuovere da build.gradle compile 'com.android.support:support-v13:+'


3

Ecco il nuovo bug archiviato per questo https://code.google.com/p/android/issues/detail?id=72430

Supponendo che si stia utilizzando il repository di supporto, la soluzione alternativa è commentare o rimuovere la riga

21.0.0-rc1 nel file di elenco dei repository Maven locale in /extras/android/m2repository/com/android/support-v4/maven-metadata.xml


1

Per me il problema come questo è risolto cambiando il

minSdkVersion 14

Nel file build.gladdle e utilizzare quello specificato nel messaggio di errore

ma il problema era

Manifest merger failed : uses-sdk:minSdkVersion 14 cannot be smaller than version 15 declared in library

Quindi ho cambiato da 14 a 15 nel file build.gladdle e funziona

Provaci.


1

Ho solo preso di mira il necessario, minSdkVersioncioè il passaggio a quello necessario Nel mio caso .minSdkVersion14

Cambiare per minSdkVersion 16risolvere il problema

compileSdkVersion 29
    defaultConfig {
        applicationId "e.futaaapp"
        minSdkVersion 14
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

compileSdkVersion 29
    defaultConfig {
        applicationId "e.futaaapp"
        minSdkVersion 16
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

0

Non dimenticare, dovresti modificare build.gradle nella sottocartella "app" del tuo progetto, non nella cartella del progetto. Ho perso una giornata lavorativa cercando di risolvere un problema con la versione "L".


0

Prova a eliminare le cartelle di build nel tuo progetto e risincronizza il tuo progetto Gradle per ricostruirlo. Inoltre, come altri hanno già detto in questo post, invece di fare qualcosa del genere:

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

Fai questo:

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

0

Grazie @Murtuza. La tua risposta mi ha aiutato a risolvere il mio problema, ma nel mio caso

compile 'com.android.support:support-v13:19.+ anche, insieme a

compile 'com.android.support:support-v4:19.+' compile 'com.android.support:appcompat-v7:19.+'

da compile 'com.android.support:support-v4:+' compile 'com.android.support:support-v7:+' compile 'com.android.support:support-v13:+' Hope questo potrebbe aiutare qualcuno


0

Ho alcuni progetti in cui preferisco scegliere come target L.MR1 (SDKv22) e alcuni progetti in cui preferisco KK (SDKv19). Il tuo risultato potrebbe essere diverso, ma questo ha funzionato per me.

// Targeting L.MR1 (Android 5.1), SDK 22
android {
    compileSdkVersion 22
    buildToolsVersion "22"

    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 22
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])

    // google support libraries (22)
    compile 'com.android.support:support-v4:22.0.0'
    compile 'com.android.support:appcompat-v7:22.0.0'
    compile 'com.android.support:cardview-v7:21.0.3'
    compile 'com.android.support:recyclerview-v7:21.0.3'
}



// Targeting KK (Android 4.4.x), SDK 19
android {
    compileSdkVersion 19
    buildToolsVersion "19.1"

    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 19
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])

    // google libraries (19)
    compile 'com.android.support:support-v4:19.1+'
    compile 'com.android.support:appcompat-v7:19.1+'
    compile 'com.android.support:cardview-v7:+'
    compile 'com.android.support:recyclerview-v7:+'
}

0

In Android Studio 1.1.0: File - Struttura del progetto - Sapore di scheda - Seleziona la versione minima dell'SDK che è superiore rispetto a Manifest


0

Ho la seconda soluzione:

  1. decomprimere https://dl.dropboxusercontent.com/u/16403954/android-21.zippersdk\platforms\
  2. cambia build.gradle come

    compileSdkVersion 21
    buildToolsVersion "20.0.0"
    
    defaultConfig {
        applicationId "package.name"
        minSdkVersion 10
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
  3. Inserisci

    <uses-sdk tools:node="replace" /> 

    in Manifest con xmlns:tools="schemas.android.com/tools";

  4. Vai a sdk\extras\android\m2repository\com\android\support\support-v4\21.0.0-rc1\

decomprimere support-v4-21.0.0-rc1.aar e modificare AndroidManifest.xml come

a partire dal

<uses-sdk
        android:minSdkVersion="L"
        android:targetSdkVersion="L" />

per

<uses-sdk
        android:minSdkVersion="4"
        android:targetSdkVersion="21" />

PS Puoi farlo con tutte le librerie di supporto di cui hai bisogno.


Ho cambiato "L" e riavviato Android Studio ma
ho riscontrato lo

0

L'unica cosa che ha funzionato per me è questa:

In project.properties, ho modificato:

cordova.system.library.1 = com.android.support: support-v4: + a cordova.system.library.1 = com.android.support: support-v4: 20. +


0

Devi solo cambiare il Livello API minimo da Build Settings -> Player Settings -> Other Settings -> Minimum SDK Leveluna versione successiva.


0

Il modo migliore è lasciare che Android Studio risolva il problema.

Ho fatto il seguito e ha funzionato bene.

  1. Apri il tuo progetto in Android Studio, gli errori saranno popup, se è presente un link per ripararlo fai clic su di esso.

  2. Riapri il tuo progetto in Android Studio, gli errori saranno popup, questa volta ci sarà un link se non è indicato nel passaggio 1, fai clic sul link indicato per risolverlo.

Si noti che entrambe le operazioni hanno richiesto diversi minuti, ma hanno risolto tutti i problemi.


0

Soluzione: fusione manifest non riuscita Applicazione attributi @ ppComponentFactory ...

Se stai utilizzando le librerie Firebase più recenti o più recenti o qualsiasi altra libreria, quelle in realtà utilizzano AndroidX anziché android.support, potresti avere il problema poiché la fusione manifest non è riuscita !! Quindi, in questo caso, il tuo progetto deve migrare su AndroidX. Quindi segui il link: https://firebase.google.com/support/release-notes/android#update_-_june_17_2019

O guarda questo video. https://youtu.be/RgveQ4AY1L8 Grazie.


Un collegamento a una soluzione è il benvenuto, ma è necessario assicurarsi che la risposta sia utile anche senza di essa. È meglio aggiungere un contesto attorno al collegamento e descrivere la parte più pertinente del tutorial a cui stai collegando nel caso in cui la pagina di destinazione non sia disponibile.
Joey,

Mi fa piacere sentirti #Joey. Vorrei aggiungere qualche descrizione aggiuntiva. Grazie.
Subhojit Halder,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.