web-dev-qa-db-fra.com

Erreur d'installation: INSTALL_FAILED_OLDER_SDK

Je suis nouveau dans le développement Android et je souhaite d’abord faire fonctionner l’application Hello World . J'utilise Eclipse IDE et le SDK Android 4.0.3 version 15. J'ai tout copié depuis un site de didacticiel, mais lorsque j'essaie d'exécuter l'application sur le virtual device, le message d'erreur suivant s'affiche:

[2012-02-01 11:31:23 - Android_test] Installation error: INSTALL_FAILED_OLDER_SDK
[2012-02-01 11:31:23 - Android_test] Please check logcat output for more details.
[2012-02-01 11:31:23 - Android_test] Launch canceled!

Voici ma classe dans le package com.maze.app: package com.maze.app;

import Android.app.Activity;
import Android.os.Bundle;
import Android.widget.TextView;

public class HelloAndroid extends Activity{
  @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TextView tv = new TextView(this);
        tv.setText("Hello, Android");
        setContentView(tv);

    }

}

et le AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:Android="http://schemas.Android.com/apk/res/Android"
package="com.maze.app"
Android:versionCode="1"
Android:versionName="1.0" >

<uses-sdk Android:minSdkVersion="15" Android:targetSdkVersion="@string/app_name"/>

<application
    Android:icon="@drawable/ic_launcher"
    Android:label="@string/app_name" >
    <activity Android:name="HelloAndroid" Android:launchMode="standard" Android:enabled="true"></activity>
</application>

Voici la configuration du Virtual Device:

Name: AndroidVD
CPU/ABI: ARM(armeabi-v7a)
Path: path\to\avd
Target: Android 4.0.3(API level 15)
Skin: WVGA800
hw.lcd.density: 240
hw.cpu.model: cortex-a8
vm.heapSize: 48
hw.ramSize:512

Quel est le problème?

EDIT: L’application ne fonctionne pas sur le périphérique virtuel: Voici ce que j’obtiens sur LogCat (quelques lignes):

D/PackageManager(92): New package installed in /data/app/com.maze.app-2.apk
D/dalvikvm(92): GC_CONCURRENT freed 660K, 9% free 11935K/12999K, paused 18ms+72ms
I/ActivityManager(92): Force stopping package com.maze.app uid=10040
D/BackupManagerService(92): Received broadcast Intent { act=Android.intent.action.PACKAGE_REPLACED dat=package:com.maze.app flg=0x10000010 (has extras) }
V/BackupManagerService(92): updatePackageParticipantsLocked: com.maze.app
78
Dragos

Cela est dû à Android:targetSdkVersion="@string/app_name" dans votre fichier Manifiest.
Le changer en:

<uses-sdk Android:minSdkVersion="15" Android:targetSdkVersion="15"/>

targetSdkVersion devrait être un entier, mais @string/app_name serait une chaîne. Je pense que cela cause l'erreur. 

MODIFIER:
Vous devez ajouter un intent-filter par défaut dans votre fichier manifiest pour l’activité. Alors seul Android peut lancer l’activité. sinon vous obtiendrez l'erreur ci-dessous dans la fenêtre de votre console. 

[2012-02-02 09:17:39 - Test] No Launcher activity found!
[2012-02-02 09:17:39 - Test] The launch will only sync the application package on the device!

Ajoutez ce qui suit à votre balise <activity>

<activity Android:name="HelloAndroid" Android:launchMode="standard" Android:enabled="true">  
  <intent-filter>
    <action Android:name="Android.intent.action.MAIN" />
    <category Android:name="Android.intent.category.LAUNCHER" />
  </intent-filter>
</activity>
103
Karthik

Cela signifie que la version d'Android de votre avd est antérieure à la version utilisée pour compiler le code.

23
Rajdeep Dua

Cette erreur se produit lorsque la version de sdk installée sur votre périphérique (périphérique réel ou virtuel) est inférieure à Android:minSdkVersion dans votre manifeste Android.

Vous devez soit diminuer votre Android:minSdkVersion, soit spécifier une version supérieure de votre apd.

Gardez à l'esprit qu'il n'est pas toujours simple de diminuer Android:minSdkVersion car vous devez vous assurer que votre application se soucie de l'API installée et utilise les méthodes appropriées:

AsyncTask<String, Object, String> task = new AsyncTask<String, Object, String>() {
    @Override
    protected Boolean doInBackground(String... params) {
        if (params == null) return "";
        StringBuilder b = new StringBuilder();
        for (String p : params) {
             b.append(p);
        }
        return b.toString();
    }
};
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
    task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,"Hello", " ", "world!");
} else {
    task.execute("Hello", " ", "world!");
}

L'utilisation de la bibliothèque de support Android et/ou de bibliothèques telles que actionbar-sherlock vous aidera à gérer en particulier les widgets d'anciennes versions.

14
AlexS

J'utilise Android Studio 0.8.1. J'ai un fichier de classe de projet comme ci-dessous:

Android {
    compileSdkVersion 19
    buildToolsVersion "20.0.0"

    defaultConfig {
        applicationId "com.omersonmez.widgets.hotspot"
        minSdkVersion 15
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
    }
}

Mon émulateur était Android 4.0. Donc j'ai modifié mon émulateur et fait un api niveau 4.0.3 (apilevel 15) ... 

13
Omer Sonmez

J'ai essayé toutes les réponses décrites ici mais ma solution changeait dans mon fichier build.gradleminSdkVersion de 8 à 9 car certaines bibliothèques de mon projet ne peuvent pas fonctionner avec l'API 8, c'est pourquoi le message INSTALL_FAILED_OLDER_SDK

apply plugin: 'com.Android.application'

    Android {
        compileSdkVersion 22
        buildToolsVersion "22.0.1"

        defaultConfig {
            applicationId "com.tuna.hello.androidstudioapplication"
            minSdkVersion 9
            targetSdkVersion 22
            versionCode 1
            versionName "1.0"
        }
...
...
...
3
Elenasys

Correction du nouvel Android 6.0 Marshmallow Correction du problème suivant lors de la mise à jour vers l'API 23 (Android 6.0 Marshmallow) en mettant à jour la version des outils de génération vers 23.0.0 comme suit:

Android {
    buildToolsVersion '23.0.0'
...

Et est allé à Fichier> Structure du projet , a choisi Propriétés onglet puis mis à jour le Compiler la version Sdk à "API 23: Android 5.X (MNC)" et le Build tools version à "23.0.0"

1
yehyatt

A reçu la même erreur, le problème était la différence entre la version du SDK Android utilisée par AVD et la version du fichier AndroidManifest. Je pourrais le résoudre en corrigeant la

Android: minSdkVersion = "16"

pour correspondre avec AVD.

1
Hari Palappetty

Dans mon cas, j'ai édité un projet ayant cela dans le fichier AndroidManifest.xml, et qui me générait l'erreur ci-dessus, à l'exécution:

<uses-sdk
    Android:minSdkVersion="17"
    Android:targetSdkVersion="17" />

Ce que je viens de faire, c’est de changer minSdkVersion = "17", en minSdkVersion = "16". Ma balise résultante était:

<uses-sdk
    Android:minSdkVersion="16"
    Android:targetSdkVersion="17" />

Maintenant, je ne reçois plus l'erreur ..

J'espère que cela t'aides

1
xyz

Ma solution consistait à modifier la liste déroulante des configurations d'exécution module de wearable à Android. (cette erreur m'est arrivée lorsque j'ai essayé de lancer l'application open source I/O Sched de Google.) Les configurations s'affichaient automatiquement courir jusqu'à ce que j'ai changé la module en Android.

Vous pouvez accéder aux configurations en allant dans l'onglet Run -> Edit Configurations... -> General -> Module: [drop-down-list-here]

0
Rock Lee

Si vous êtes totalement nouveau comme moi, vous devez d'abord installer le SDK minimum. Vérifiez le lien.

Cela a parfaitement fonctionné pour moi:

Même problème autre poste avec une bonne solution

Cordialement,

Khaled.

0
Khaled

J'ai constaté que le changement recommandé dans le manifeste ne réglait pas mon problème.

Le correctif a été trouvé dans le dossier GradleScripts, dans le fichier build.gradle de l'application Module:.

À l'intérieur de ce fichier (build.gradle), la ligne suivante a été modifiée . MinSdkVersion 22 J'ai remplacé la valeur "22" par "19" pour mon téléphone particulier et la génération s'est terminée sans erreur.

0
jdosser

Mate, mon conseil est de changer de périphérique virtuel. Téléchargez l'application "Genymotion", sa facilité d'utilisation et de nombreux périphériques

0
Shell Scott

Assurez-vous de vérifier votre build.gradle et qu'il n'utilise pas une version de SDK plus récente que celle installée sur votre AVD. Ce n'est que si vous utilisez Android Studio cependant.

0
janex

Erreur de l'émulateur Android ionique INSTALL_FAILED_OLDER_SDK

En gros, cela signifie que l'installation a échoué en raison d'une version de SDK plus ancienne que la targetSdkVersion spécifiée dans votre application (il s'agit d'un problème Gradle) . Modifiez simplement le fichier AndroidManifest.xml et ajoutez le code suivant:

<uses-sdk Android:minSdkVersion="19" Android:targetSdkVersion="14"/>

Après des jours à chercher la solution, c'est tout.

Fonctionne bien pour moi!

0
Tom Costa

Je suis sur Android Studio. J'ai eu cette erreur quand min/targetSDKVersion ont été réglés sur 17. Tout en cherchant dans ce fil, j'ai essayé de changer minSDKVersion, le problème est résolu. Allez comprendre.. :( 

    Android:minSdkVersion="17"
    Android:targetSdkVersion="17" />
0
Inamdar

Vous verrez la même erreur si vous essayez d'installer un apk construit à l'aide de

compileSdkVersion "Android-L"

Même pour les appareils exécutant la version finale d'Android 5.0 . Changez-le simplement en

compileSdkVersion 21
0
friederbluemle