web-dev-qa-db-fra.com

La fusion du manifeste a échoué: uses-sdk: minSdkVersion 10 ne peut pas être plus petite que la version L déclarée dans la bibliothèque com.Android.support:appcompat-v7:21.0.0-rc1

Vous avez obtenu l'erreur ci-dessus après avoir téléchargé la version de prévisualisation L dans Android Studio, quand mon projet avait minSdkVersion 19.

De plus, lorsque vous définissez mindSdkVersion comme ci-dessous:

defaultConfig {
....
          minSdkVersion 'L'
....
    }

J'ai des dizaines d'erreurs comme ci-dessous, concernant les ressources de AppCompat-v7-21:

/home/user/workspace/project/build/intermediates/exploded-aar/com.Android.support/appcompat-v7/21.0.0-rc1/res/values-v21/values.xml
Error:Error retrieving parent for item: No resource found that matches the given name '@Android:TextAppearance.Material.SearchResult.Subtitle'.

J'ai donc 2 questions:

  1. Pourquoi AS se plaint-il de minSdkVersion? Je présume qu'AppCompat-v7 21 ne prend en charge que la version L; mais pourquoi ? De plus, est-ce qu'il ne supportera que la sortie de L lorsqu'il sortira aussi officiellement à l'automne? Parce que cela poserait un problème ... Ou s'agit-il simplement d'une restriction temporaire pour que les applications ne soient pas transférées vers Play Store, comme indiqué dans le discours Google I/O 2014?
  2. Pourquoi AppCompat-v7 21 se plaint-il de ces erreurs, alors que j’ai déjà défini mindSdkVersion sur L?
42
Bogdan Zurac
compileSdkVersion 'Android-L'

BOOM. Terminé.

LAST EDIT: À partir de Android 5.0, ce n'est plus un problème, il vous suffit de cibler directement le niveau 21 de l'API.

Éditer pour plus de clarté: En effet, comme David_E l’a spécifié ci-dessous, cette solution ne fonctionne que pour la version L; si vous essayez de déployer l’application sur un appareil situé au-dessous de L (ex <= 4.4.4), elle se plaindra de OLD_SDK. . Pour que l'application fonctionne pré-L, vous devez toujours utiliser l'ancien support v20 lib + app compat + targetVersionSdk et compileVersionSdk.

dependencies {

        compile 'com.Android.support:appcompat-v7:20.+'
        compile 'com.Android.support:support-v4:20.+'
    }

    Android {
        compileSdkVersion 20
        buildToolsVersion '20'

        defaultConfig {
            applicationId "com.example.application"
            minSdkVersion 10
            targetSdkVersion 20
            versionCode 1
            versionName "1.0"
        }
}
55
Bogdan Zurac

La réponse indiquée ici risque de ne pas fonctionner correctement, car votre application ne fonctionnera que pour Android L.

Afin de conserver la compatibilité avec les versions antérieures Android du système d'exploitation, modifiez la dépendance de gradle

De:

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

À:

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

Notez que l'erreur se plaint de com.Android.support:appcompat-v7:21.0.0-rc1, la raison en est que l'utilisation de appcompat-v7:+ indiquera à gradle d’importer la dernière dépendance du appcompat-v7 bibliothèque, malheureusement, cette dernière version ne fonctionne que pour Android L, nous devons donc pointer vers une version précédente.

Espérons que Google corrigera ce problème dans un avenir proche.

32
David_E

Pour forcer le travail avec une version de travail, il suffit de changer les dépendances de gradle comme ceci:

dependencies {
    compile 'com.Android.support:gridlayout-v7:19.0.1'
    compile 'com.Android.support:appcompat-v7:19+'
    ...
}

était:

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

N.B.

J'ai mis à jour Tools & Extras dans le gestionnaire de SDK.

après que le projet ait été interrompu, je l'ai corrigé comme indiqué ci-dessus.

Pour l'instant je ne mets pas à jour Android L & 4.4W (assez de bugs pour aujourd'hui :-())

4
BubbaGum

La façon dont cela a fonctionné pour moi a été d'installer Android Studio Beta (version non disponible, la version bêta a été lancée aujourd'hui dans le cadre d'IO).

Désinstallez la version d’aperçu, installez la version bêta et ouvrez votre projet. Il vous demandera d'utiliser le projet SDK ou Studio SDK, utilisez Android SDK de Studio.

Accédez au fichier local.properties de votre projet et sur lequel vous avez sdk.dir, assurez-vous que toutes les barres obliques inverses () sont doublées. \.

Allez dans Structure du projet> SDK et assurez-vous que cela pointe vers le Android SDK sur mon PC, il s'agissait de C:\Program Files (x86)\Android\android-studio\SDK.

Ensuite, dans vos projets et dans toutes les bibliothèques, vous avez des fichiers build.gradle où vous avez

compile 'com.Android.support:support-v4 Modifiez-le en compile 'com.Android.support:support-v4:20+

Resync les fichiers de gradle et tous corrigés

4
Boardy

Merci David pour ta réponse!

Je devais changer

compile 'com.Android.support:support-v13:+'

À:

compile 'com.Android.support:support-v13:20.+'

Et tout fonctionne parfaitement maintenant.

2
user3091593

Juste en plus: Les autres réponses ici ne résolvent pas le problème pour moi, mais j’ai trouvé un autre moyen de résoudre le problème d’Android-l sur Android Studio 0.8.0. Après avoir modifié le dépendances dans le build.gradle, le problème malheureusement gardé, que le code dirait OLD_SKD.J’utilise un Galaxy S2.

En plus de changer tous choses à: 19+:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.Android.support:appcompat-v7:19+'
    compile 'com.Android.support:support-v4:19+'
    compile 'com.google.Android.gms:play-services:+'
    compile 'com.Android.support:mediarouter-v7:19+'
}

Cela ne fonctionnerait toujours pas, alors je devais revenir partout où c'était possible:

Android {
    compileSdkVersion 19
    buildToolsVersion '19.1'
    defaultConfig {
        minSdkVersion 11
        targetSdkVersion 19
        versionCode 1
        versionName '1.0'
    }

Maintenant, l'application fonctionne à nouveau sur le téléphone. Je devrais probablement me procurer un nouveau mobile, mais pour l'instant, j'espère que cela pourra aider quelqu'un.

0
Oakenwind