Błąd instalacji: INSTALL_FAILED_OLDER_SDK


88

Jestem nowy w programowaniu na Androida i chcę najpierw Hello Worlduruchomić aplikację. Używam Eclipse IDE i zestawu SDK dla systemu Android 4.0.3 w wersji 15. Skopiowałem wszystko z witryny z samouczkami, ale kiedy próbuję uruchomić aplikację na stronie, pojawia virtual devicesię ten błąd:

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

Oto moja klasa w com.maze.apppakiecie: 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);

    }

}

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

Oto konfiguracja 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

Jaki jest problem?

EDYCJA: Aplikacja nie działa na urządzeniu wirtualnym: Oto, co otrzymuję w LogCat (niektóre linie):

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

w pliku manifestu android:targetSdkVersion="@string/app_name"jest wspomniany. czy to literówka?
Karthik

@Karthik Nie, to nie jest literówka. To właśnie wygenerował kreator.
Dragos

Może to być również przydatne dla kogoś, kto pracował dla mnie
Joshua G

Odpowiedzi:


113

Wynika to z android:targetSdkVersion="@string/app_name"twojego pliku manifestu.
Zmień to na:

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

targetSdkVersionPowinna być liczbą całkowitą, ale @string/app_namebędzie ciągiem. Myślę, że to powoduje błąd.

EDYCJA:
Musisz dodać domyślne intent-filterw swoim manifiestpliku dla działania. Wtedy tylko android może uruchomić aktywność. w przeciwnym razie w oknie konsoli pojawi się poniższy błąd.

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

Dodaj następujące elementy do swojego <activity>tagu.

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

Dziękuję Ci! Teraz nie otrzymuję już błędu. Ale urządzenie wirtualne uruchamia się i mnie nie pokazuje Hello Android. Czy muszę to jakoś zacząć? Jeśli tak, w jaki sposób? Jeśli nie, dlaczego nie działa?
Dragos

jeśli uruchomisz z eclipse, aplikacja zostanie automatycznie uruchomiona po instalacji. Dlatego aktywność powinna pojawić się na ekranie AVD. Po uruchomieniu AVD będzie w stanie zablokowanym (blokada ekranu), po odblokowaniu ekranu można zobaczyć Hello Androidtekst.
Karthik

Tak, zaczyna się w stanie blokady, ale kiedy go odblokowuję, pokazuje mi tylko tapetę i kilka ikon na dole. Nie ma Hello Android.
Dragos

jakieś błędy w Logcat? możesz dodać kilka instrukcji Log w onCreate () i zobaczyć, czy są one wyświetlane w oknie Logcat.
Karthik

Jeśli Logcatmasz na myśli Consolew Eclipse, to odpowiedź brzmi: nie. Nie dostaję żadnych błędów. Jeśli nie to miałeś na myśli, mówiąc o Logcat, powiedz mi, gdzie mogę go znaleźć.
Dragos

26

Oznacza to, że wersja Androida twojego avd jest starsza niż wersja używana do kompilacji kodu


Tworzysz AVD (Android Virtual Devices) mając określony zestaw funkcji (rozmiar ekranu, wersja kodu, stan kamery). Utwórz taki sam, jak docelowa wersja interfejsu API. Zbuduj również starszą wersję do testów zgodności.
Bryce

15

Ten błąd występuje, gdy wersja sdk zainstalowana na urządzeniu (urządzenie rzeczywiste lub wirtualne) jest mniejsza niż android:minSdkVersionw manifeście systemu Android.

Musisz albo zmniejszyć swój, android:minSdkVersionalbo musisz określić wyższą wersję API dla swojego AVD.

Pamiętaj, że zmniejszenie nie zawsze jest trywialne, android:minSdkVersionponieważ musisz się upewnić, że Twoja aplikacja dba o faktycznie zainstalowany interfejs API i używa poprawnych metod:

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

Korzystanie z biblioteki wsparcia Androida i / lub bibliotek, takich jak actionbar-sherlock , pomoże ci radzić sobie szczególnie z widżetami starszych wersji.


13

Używam Android Studio 0.8.1. Mam plik gradle projektu, jak poniżej:

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

Moim emulatorem był Android 4.0. Więc zmodyfikowałem mój emulator i utworzyłem poziom API 4.0.3 (apilevel 15). Zadziałało.


3

Wypróbowałem wszystkie opisane tutaj odpowiedzi, ale moje rozwiązanie zmieniało się w moim build.gradlepliku minSdkVersionz 8 na 9, ponieważ niektóre biblioteki w moim projekcie nie mogą współpracować z API 8, to był powód tego komunikatu 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"
        }
...
...
...

Wygląda na to, że przekłada się na to, że min SDK niektórych dołączonych bibliotek to 9.
methodsignature,

1

W moim przypadku edytowałem projekt mający to w pliku AndroidManifest.xml i który powodował powyższy błąd, w czasie wykonywania:

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

Właśnie zmieniłem minSdkVersion = "17" na minSdkVersion = "16". Mój wynikowy tag to:

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

Teraz nie otrzymuję już błędu ...

Mam nadzieję że to pomoże


1

Otrzymałem ten sam błąd, problemem była różnica w wersji Android SDK, z której korzystał AVD, a wersją w pliku AndroidManifest. Mogłem to rozwiązać, poprawiając plik

android: minSdkVersion = "16"

pasujące do AVD.


1

Zobaczysz ten sam błąd, jeśli próbujesz zainstalować apk, który został zbudowany przy użyciu

compileSdkVersion "android-L"

Nawet na urządzeniach z ostateczną wersją Androida 5.0. Po prostu zmień to na

compileSdkVersion 21

1

Poprawka dla nowego Androida 6.0 Marshmallow Naprawiono mój problem, kiedy zaktualizowałem do API 23 (Android 6.0 Marshmallow), aktualizując wersję narzędzi do kompilacji do 23.0.0 w następujący sposób:

android {
    buildToolsVersion '23.0.0'
...

I poszedł do Plik> Struktura projektu , wybrał zakładkę Właściwości , a następnie zaktualizował wersję Compile Sdk do „API 23: Android 5.X (MNC)” i wersję narzędzi do kompilacji do „23.0.0”


0

Jestem na Android Studio. Otrzymałem ten błąd, gdy min / targetSDKVersion były ustawione na 17. Patrząc przez ten wątek, próbowałem zmienić minSDKVersion, voila..problem naprawiony. Domyśl.. :(

    android:minSdkVersion="17"
    android:targetSdkVersion="17" />

0

Upewnij się, że sprawdziłeś plik build.gradle i że nie używa nowszej wersji SDK niż ta, która jest zainstalowana w AVD. Dzieje się tak tylko wtedy, gdy używasz Android Studio.



0

Moim rozwiązaniem była zmiana listy modulerozwijanej konfiguracji uruchamiania z wearablena android. (Ten błąd przydarzył mi się, gdy próbowałem uruchomić aplikację open source Google I / O Schedule). Konfiguracje pojawiały się automatycznie za każdym razem, gdy próbowałem uruchomić, dopóki nie zmienił modulesię android.

Możesz uzyskać dostęp do konfiguracji, przechodząc do Run-> Edit Configurations...-> Generalzakładka ->Module: [drop-down-list-here]


0

Okazało się, że wprowadzenie zalecanej zmiany w manifeście nie rozwiązało mojego problemu.

Poprawka została znaleziona w folderze GradleScripts, w pliku build.gradle dla aplikacji Module:.

W tym pliku (build.gradle) zmodyfikowano następujący wiersz. minSdkVersion 22 Zmieniłem tę wartość „22” na „19” dla mojego konkretnego telefonu i kompilacja zakończyła się bez błędów.


0

Stary, radzę zmienić urządzenie wirtualne. Pobierz aplikację „Genimotion”, jest łatwa w użyciu i istnieje wiele różnych urządzeń, których potrzebujesz


0

Przejdź do build.cradlepliku swojego projektu i dodaj

defaultConfig {
    minSdkVersion versions.minSdk

} `

To sprawia, że ​​Twoja aplikacja jest zgodna z minimalnym zestawem SDK, na którym działa Twoje urządzenie.


-1

Błąd emulatora Ionic Android INSTALL_FAILED_OLDER_SDK

Zasadniczo oznacza to, że instalacja nie powiodła się z powodu posiadania starszej wersji SDK niż targetSdkVersion określona w aplikacji (jest to problem z Gradle). Po prostu edytuj plik AndroidManifest.xml i dodaj następujący kod:

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

Po dniach szukania rozwiązania, to wszystko.

U mnie działa dobrze!


-1

Jeśli pojawi się błąd „Błąd instalacji: INSTALL_FAILED_OLDER_SDK”, musisz zmienić wersję minSdkVersion w AndroidManifest na tę określoną w emulatorze Androida: zobacz Ustawienia -> Informacje o telefonie -> Wersja Androida.


1
Cześć @ cupoma58, witaj. Czym się to różni od odpowiedzi innych?
Tiago Martins Peres 李大仁

-2

Zmieniłem moje android:minSdkVersioni android:targetSdkVersionna 18z 21:

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

Teraz mogę pomyślnie zainstalować moją aplikację.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.