web-dev-qa-db-fra.com

Échec [INSTALL_FAILED_OLDER_SDK] Android-L

J'essaie d'utiliser le nouveau CardView d'Android L. J'ai tout mis à jour dans le gestionnaire de SDK, mais je continue à avoir l'erreur suivante:

Echec [INSTALL_FAILED_OLDER_SDK]

Ceci est mon fichier build.gradle:

apply plugin: 'Android'

Android {
    compileSdkVersion 'Android-L'
    buildToolsVersion '20.0.0'

    defaultConfig {
        applicationId "www.thomascbeerten.com.nieuwetests"
        minSdkVersion 8
        targetSdkVersion 20
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    // Support Libraries
    compile 'com.Android.support:support-v4:19.1.0'
    compile 'com.Android.support:appcompat-v7:19.1.0'
    compile 'com.Android.support:gridlayout-v7:19.1.0'
    compile 'com.Android.support:mediarouter-v7:19.1.0'
    // compile 'com.Android.support:support-v13:19.1.0'
    compile 'com.Android.support:recyclerview-v7:+'
}
39
TomCB

Récemment, il y avait un post ici concernant l'incompatibilité du L SDK avec les versions précédentes d'Android. J'ai creusé dans les dépôts AOSP pendant quelques heures maintenant, et a déterminé que les outils se comportent de la sorte parce qu’ils sont conçus pour traiter les plates-formes de prévisualisation différemment . Si vous compilez avec un SDK de prévisualisation (Android-L), les outils de construction auront. verrouillez minSdkVersion et targetSdkVersion au même niveau d'API. Ce a pour résultat que l'application produite ne peut pas être installée sur appareils exécutant d'anciennes versions d'Android, même si votre application ne fait rien de spécifique à L. Pour aggraver les choses, le nouveau Les bibliothèques de support (CardView, RecyclerView, Palette, etc.) sont également verrouillées dans le niveau de l'API L, même si - selon leur référentiel noms - ils devraient fonctionner parfaitement sur le niveau 7 de l’API (et ils le font!).

Voir mon post Reddit à ce sujet ici , avec une solution de contournement.

54
Eddie

Une fois que vous avez résolu les problèmes ci-dessus, comme mentionné par Eddie. Vous pourriez également rencontrer une autre erreur ;;

Error:Error retrieving parent for item: No resource found that matches the given name 'Android:Theme.Material.Light'.

Ce sera présent dans votre styles.xml. La solution rapide consiste à le remplacer par ce qui suit:

<?xml version="1.0" encoding="utf-8"?>
 <resources>
<!--<style name="AppTheme" parent="Android:Theme.Material.Light">-->
<style name="AppTheme" parent="Android:Theme.Holo.Light">
</style>

5
Skillachie

Changement

Android {
    compileSdkVersion 'Android-L'
    buildToolsVersion '20.0.0'

à

Android {
  compileSdkVersion 21
  buildToolsVersion '21.0.2'

Remarque: Android-L est entre guillemets simples, mais 21 ne l’est pas. 21 est un entier et non une chaîne.

2

Je viens de rencontrer ce problème. Cela peut se produire lorsque votre version de sdk minimale et vos cibles construites sont définies sur une version de niveau API/système d'exploitation supérieure à celle utilisée par votre téléphone. Si vous utilisez Android Studio, sélectionnez Fichier> Structure du projet>, modifiez les paramètres pertinents, puis de nouveau Exécuter.

0
SE13013

Lorsque vous compilez avec L, il effectue un changement lors de la compilation, définissant votre version de minsdkversion sur L. Si vous souhaitez utiliser RecyclerView ou CardView, je vous recommande de vérifier RecyclerViewLib . RecyclerView et CardView ont été déplacés dans cette bibliothèque afin qu'il n'y ait pas de problème min version L. L'auteur a également expliqué dans son article blog / comment tout le code lié à L avait été supprimé pour le rendre sûr à utiliser.

Pour ajouter RecyclerViewLb à votre projet, ajoutez simplement la ligne suivante à vos dépendances dans votre fichier build.gradle:

compile 'com.twotoasters.RecyclerViewLib:library:1.0.+@aar'

Ensuite, vous ne voulez pas ajouter le compile 'com.Android.support:recyclerview-v7:+' à votre build.gradle car vous l'obtiendrez par le biais de RecyclerViewLib.

0
MinceMan