Installationsfehler: INSTALL_FAILED_OLDER_SDK

88

Ich bin neu in der Android-Entwicklung und möchte zuerst die Hello WorldAnwendung zum Laufen bringen. Ich verwende Eclipse IDE und das Android 4.0.3 Version 15 SDK. Ich habe alles von einer Tutorial-Site kopiert, aber wenn ich versuche, die Anwendung auf dem auszuführen, virtual deviceerhalte ich folgende Fehlermeldung:

[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!

Hier ist meine Klasse im com.maze.appPaket: 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);

    }

}

und die 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>

Hier ist die Konfiguration der 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

Was ist das Problem?

BEARBEITEN: Die Anwendung läuft nicht auf dem virtuellen Gerät: Folgendes bekomme ich auf LogCat (einige der Zeilen):

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
Dragos
quelle
in Ihrer offenkundigsten Datei android:targetSdkVersion="@string/app_name"wird erwähnt. ist es ein Tippfehler?
Karthik
@Karthik Nein, es ist kein Tippfehler. Das hat der Assistent generiert.
Dragos
Dies kann auch für jemanden nützlich sein, der für mich gearbeitet hat
Joshua G

Antworten:

113

Es liegt an android:targetSdkVersion="@string/app_name"Ihrer manifestesten Datei.
Ändern Sie es in:

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

Das targetSdkVersionsollte eine ganze Zahl sein, @string/app_namewäre aber eine Zeichenfolge. Ich denke, das verursacht den Fehler.

BEARBEITEN:
Sie müssen intent-filterIhrer manifiestDatei einen Standard für die Aktivität hinzufügen . Dann kann nur Android die Aktivität starten. Andernfalls wird der folgende Fehler in Ihrem Konsolenfenster angezeigt.

[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!

Fügen Sie Ihrem <activity>Tag Folgendes hinzu .

<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>
Karthik
quelle
Danke dir! Jetzt bekomme ich den Fehler nicht mehr. Aber das virtuelle Gerät startet und zeigt es mir nicht Hello Android. Muss ich es irgendwie starten? Wenn ja, wie? Wenn nicht, warum funktioniert es nicht?
Dragos
Wenn Sie mit Eclipse arbeiten, wird die App nach der Installation automatisch gestartet. Die Aktivität sollte also auf dem AVD-Bildschirm angezeigt werden. Wenn die AVD gestartet wird, befindet sie sich im gesperrten Zustand (Bildschirmsperre). Sobald Sie den Bildschirm entsperren, können Sie den Hello AndroidText sehen.
Karthik
Ja, es beginnt im Sperrzustand, aber wenn ich es entsperre, werden mir nur das Hintergrundbild und einige Symbole unten angezeigt. Es gibt keine Hello Android.
Dragos
Irgendwelche Fehler auf dem Logcat? Sie können einige Protokollanweisungen in onCreate () hinzufügen und prüfen, ob sie im Logcat-Fenster angezeigt werden.
Karthik
Wenn LogcatSie damit das Consolein Eclipse meinen , dann lautet die Antwort nein. Ich bekomme keine Fehler. Wenn Sie das nicht mit Logcat gemeint haben, sagen Sie mir bitte, wo ich es finden kann.
Dragos
26

Dies bedeutet, dass die Android-Version Ihres AVD älter ist als die Version, die zum Kompilieren des Codes verwendet wird

Rajdeep Dua
quelle
Sie erstellen AVDs (Android Virtual Devices) mit bestimmten Funktionen (Bildschirmgröße, Codeversion, Kamerastatus). Erstellen Sie eine, die mit Ihrer Ziel-API-Version identisch ist. Erstellen Sie auch eine ältere Version für Kompatibilitätstests.
Bryce
15

Dieser Fehler tritt auf, wenn die auf Ihrem Gerät installierte SDK-Version (reales oder virtuelles Gerät) kleiner ist als android:minSdkVersionin Ihrem Android-Manifest.

Sie müssen entweder Ihre verringern android:minSdkVersionoder eine höhere API-Version für Ihre AVD angeben.

Beachten Sie, dass das Verringern nicht immer trivial ist, android:minSdkVersionda Sie sicherstellen müssen, dass Ihre App sich um die tatsächlich installierte API kümmert und die richtigen Methoden verwendet:

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!");
}

Die Verwendung der Android-Support-Bibliothek und / oder Bibliotheken wie Actionbar-Sherlock hilft Ihnen beim Umgang mit Widgets älterer Versionen.

AlexS
quelle
13

Ich benutze Android Studio 0.8.1. Ich habe die Gradle-Datei eines Projekts wie folgt:

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'
        }
    }
}

Mein Emulator war Android 4.0. Also habe ich meinen Emulator modifiziert und API Level 4.0.3 (Apilevel 15) erstellt. Es funktionierte.

Omer Sonmez
quelle
3

Ich habe alle hier beschriebenen Antworten ausprobiert, aber meine Lösung hat sich in meiner build.gradleDatei minSdkVersionvon 8 auf 9 geändert, da einige Bibliotheken in meinem Projekt nicht mit API 8 funktionieren können. Dies war der Grund für die Meldung 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"
        }
...
...
...
Jorgesys
quelle
Dies klingt so, als würde es in das
minimale
1

In meinem Fall habe ich ein Projekt bearbeitet, das dies in der Datei AndroidManifest.xml enthält und das mir zur Laufzeit den oben genannten Fehler verursacht hat:

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

Was ich gerade getan habe, war, minSdkVersion = "17" in minSdkVersion = "16" zu ändern. Mein resultierendes Tag war:

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

Jetzt bekomme ich den Fehler nicht mehr ..

Hoffe das hilft

user9869932
quelle
1

Erhielt den gleichen Fehler, das Problem war der Unterschied in der von AVD verwendeten Version des Android SDK und der Version in der AndroidManifest-Datei. Ich könnte es lösen, indem ich das korrigiere

android: minSdkVersion = "16"

mit AVD übereinstimmen.

Hari Palappetty
quelle
1

Sie werden den gleichen Fehler sehen, wenn Sie versuchen, eine apk zu installieren, die mit erstellt wurde

compileSdkVersion "android-L"

Auch für Geräte mit der endgültigen Version von Android 5.0. Ändern Sie dies einfach in

compileSdkVersion 21
friederbluemle
quelle
1

Fix für neues Android 6.0 Marshmallow Das Problem wurde behoben, als ich auf API 23 (Android 6.0 Marshmallow) aktualisiert habe, indem die Build Tools-Version wie folgt auf 23.0.0 aktualisiert wurde:

android {
    buildToolsVersion '23.0.0'
...

Gehen Sie zu Datei> Projektstruktur , wählen Sie die Registerkarte Eigenschaften und aktualisieren Sie die Compile Sdk-Version auf "API 23: Android 5.X (MNC)" und die Build Tools-Version auf "23.0.0".

yehyatt
quelle
0

Ich bin auf Android Studio. Ich habe diesen Fehler erhalten, als min / targetSDKVersion auf 17 gesetzt wurde. Während ich diesen Thread durchgesehen habe, habe ich versucht, die minSDKVersion zu ändern, voila..problem behoben. Stelle dir das vor.. :(

    android:minSdkVersion="17"
    android:targetSdkVersion="17" />
Herr B.
quelle
0

Stellen Sie sicher, dass Sie Ihr build.gradle überprüfen und dass es keine neuere SDK-Version als die auf Ihrer AVD installierte verwendet. Dies ist jedoch nur möglich, wenn Sie Android Studio verwenden.

Janex
quelle
0

Meine Lösung bestand darin, die moduleDropdown-Liste der Ausführungskonfigurationen von wearableauf zu ändern android. (Dieser Fehler trat auf, als ich versuchte, die Open-Source-App I / O Sched von Google auszuführen.) Die Konfigurationen wurden jedes Mal automatisch angezeigt, wenn ich versuchte, sie auszuführen, bis ich änderte das modulezu android.

Sie können auf die Konfigurationen zugreifen, indem Sie auf Run-> Edit Configurations...-> GeneralRegisterkarte -> gehenModule: [drop-down-list-here]

Rock Lee
quelle
0

Ich stellte fest, dass die empfohlene Änderung im Manifest mein Problem nicht löste.

Das Update wurde im Ordner GradleScripts in der Datei build.gradle für die Module: App gefunden.

In dieser Datei (build.gradle) wurde die folgende Zeile geändert. minSdkVersion 22 Ich habe diesen Wert für '22' für mein bestimmtes Telefon in '19' geändert und den Build ohne Fehler abgeschlossen.

jdosser
quelle
0

Kumpel, mein Rat ist, das virtuelle Gerät zu wechseln. Laden Sie die Anwendung "Genimotion" herunter, sie ist einfach zu bedienen und es gibt viele Geräte, die Sie benötigen

Shell Scott
quelle
0

Gehen Sie in die build.cradleDatei Ihres Projekts und fügen Sie hinzu

defaultConfig {
    minSdkVersion versions.minSdk

} `

Dadurch entspricht Ihre Anwendung dem Mindest-SDK, das auf Ihrem Gerät ausgeführt wird.

Nouru Muneza
quelle
-1

Ionic Android Emulator Fehler INSTALL_FAILED_OLDER_SDK

Im Grunde bedeutet dies, dass die Installation fehlgeschlagen ist, weil eine ältere SDK-Version als die in Ihrer App angegebene targetSdkVersion vorhanden ist (es handelt sich um ein Gradle-Problem). Bearbeiten Sie einfach die Datei AndroidManifest.xml und fügen Sie den folgenden Code hinzu:

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

Nach Tagen auf der Suche nach der Lösung, das war's.

Funktioniert gut für mich!

Tom Costa
quelle
-1

Wenn der Fehler "Installationsfehler: INSTALL_FAILED_OLDER_SDK" angezeigt wird, müssen Sie die Version von minSdkVersion in AndroidManifest auf die im Android-Emulator angegebene Version ändern: siehe Einstellungen -> Über das Telefon -> Android-Version.

cupoma58
quelle
1
Hallo @ cupoma58, willkommen. Wie unterscheidet sich das von den anderen Antworten?
Tiago Martins Peres 李大仁
-2

Ich habe mich verändert meine android:minSdkVersionund android:targetSdkVersionzu 18aus 21:

uses-sdk android:minSdkVersion="18" android:targetSdkVersion="18" 

Jetzt kann ich meine App erfolgreich installieren.

Veena
quelle