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

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>

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


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.


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.


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"
        }
...
...
...

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


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.


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

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".


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" />

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.



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]


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.


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


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.


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


-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.


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.