Error de instalación: INSTALL_FAILED_OLDER_SDK


88

Soy nuevo en el desarrollo de Android y primero quiero Hello Worldejecutar la aplicación. Estoy usando Eclipse IDE y Android 4.0.3 versión 15 SDK. Copié todo de un sitio de tutoriales, pero cuando intento ejecutar la aplicación en el virtual device, aparece este error:

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

Aquí está mi clase en el com.maze.apppaquete: 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);

    }

}

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

Aquí está la configuración del 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

¿Cuál es el problema?

EDITAR: La aplicación no se está ejecutando en el Dispositivo virtual: Esto es lo que obtengo en LogCat (algunas de las líneas):

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

en su archivo más múltiple, android:targetSdkVersion="@string/app_name"se menciona. ¿Es un error tipográfico?
Karthik

@Karthik No, no es un error tipográfico. Eso es lo que generó el asistente.
Dragos

Esto también puede ser útil para alguien que funcionó para mí
Joshua G

Respuestas:


113

Se debe a android:targetSdkVersion="@string/app_name"en su archivo más múltiple.
Cámbielo a:

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

El targetSdkVersiondebe ser un número entero, pero @string/app_namepodría ser una cadena. Creo que esto está causando el error.

EDITAR:
debe agregar un valor predeterminado intent-filteren su manifiestarchivo para la actividad. Entonces, solo Android puede iniciar la actividad. de lo contrario, obtendrá el siguiente error en la ventana de su consola.

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

Agregue lo siguiente a su <activity>etiqueta.

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

¡Gracias! Ahora ya no recibo el error. Pero el dispositivo virtual se inicia y no me lo muestra Hello Android. ¿Tengo que iniciarlo de alguna manera? Si es así, ¿cómo? Si no es así, ¿por qué no funciona?
Dragos

si ejecuta desde eclipse, la aplicación se iniciará automáticamente después de la instalación. Entonces, la actividad debería aparecer en la pantalla AVD. Cuando se inicie el AVD, estaría en estado Bloqueado (bloqueo de pantalla), una vez que desbloquee la pantalla podrá ver el Hello Androidtexto.
Karthik

Sí, comienza en el estado de bloqueo, pero cuando lo desbloqueo, solo me muestra el fondo de pantalla y algunos iconos en la parte inferior. No hay Hello Android.
Dragos

¿Algún error en el Logcat? puede agregar algunas declaraciones de registro en onCreate () y ver si se muestran en la ventana de Logcat.
Karthik

Si Logcatte refieres a Consoleen Eclipse, entonces la respuesta es no. No obtengo ningún error. Si eso no es lo que quiso decir con Logcat, dígame dónde puedo encontrarlo.
Dragos

26

Esto significa que la versión de Android de su avd es más antigua que la versión que se usa para compilar el código.


Usted construye AVD (dispositivos virtuales Android) dado un cierto conjunto de características (tamaño de pantalla, versión del código, estado de la cámara). Cree uno que sea el mismo que su versión de API de destino. También cree uno más antiguo para realizar pruebas de compatibilidad.
Bryce

15

Este error ocurre cuando la versión sdk instalada en su dispositivo (dispositivo real o virtual) es más pequeña que android:minSdkVersionen su manifiesto de Android.

Tienes que reducir tu android:minSdkVersiono tienes que especificar una versión de API más alta para tu AVD.

Tenga en cuenta que no siempre es trivial disminuir, android:minSdkVersionya que debe asegurarse de que su aplicación se preocupe por la API real instalada y utilice los métodos correctos:

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

El uso de la biblioteca de soporte de Android y / o bibliotecas como actionbar-sherlock lo ayudará a lidiar especialmente con widgets de versiones anteriores.


13

Estoy usando Android Studio 0.8.1. Tengo el archivo gradle de un proyecto como el siguiente:

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

Mi emulador era Android 4.0. Así que modifiqué mi emulador e hice api level 4.0.3 (apilevel 15). Funcionó.


3

Probé todas las respuestas descritas aquí pero mi solución estaba cambiando dentro de mi build.gradlearchivo minSdkVersionde 8 a 9 porque algunas bibliotecas en mi proyecto no pueden funcionar con API 8, esa fue la razón del mensaje 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"
        }
...
...
...

Esto parece que se traduce en que el SDK mínimo de algunas bibliotecas incluido es 9.
methodignature

1

En mi caso, edité un proyecto que tenía esto en el archivo AndroidManifest.xml, y que me estaba generando el error anterior, en tiempo de ejecución:

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

Lo que hice fue cambiar minSdkVersion = "17", a minSdkVersion = "16". Mi etiqueta resultante fue:

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

Ahora ya no recibo el error ...

Espero que esto ayude


1

Recibió el mismo error, el problema fue la diferencia en la versión de Android SDK que AVD estaba usando y la versión en el archivo AndroidManifest. Podría resolverlo corrigiendo el

android: minSdkVersion = "16"

para que coincida con AVD.


1

Verá el mismo error si está intentando instalar un apk que se creó con

compileSdkVersion "android-L"

Incluso para dispositivos que ejecutan la versión final de Android 5.0. Simplemente cambie esto a

compileSdkVersion 21

1

Solución para el nuevo Android 6.0 Marshmallow Se solucionó mi problema cuando actualicé a API 23 (Android 6.0 Marshmallow) actualizando la versión de herramientas de compilación a 23.0.0 de la siguiente manera:

android {
    buildToolsVersion '23.0.0'
...

Y fue a Archivo> Estructura del proyecto , eligió la pestaña Propiedades y luego actualizó la versión Compilar Sdk a "API 23: Android 5.X (MNC)" y la versión de herramientas de compilación a "23.0.0"


0

Estoy en Android Studio. Recibí este error cuando min / targetSDKVersion se establecieron en 17. Mientras miraba a través de este hilo, traté de cambiar minSDKVersion, voilá ... problema solucionado. Imagínate.. :(

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

0

Asegúrese de verificar su build.gradle y que no use una versión de SDK más nueva que la que está instalada en su AVD. Sin embargo, eso solo si usa Android Studio.



0

Mi solución fue cambiar la modulelista desplegable de configuraciones de ejecución de wearablea android. (este error me sucedió cuando intenté ejecutar la aplicación de código abierto I / O Sched de Google). Aparecían automáticamente las configuraciones cada vez que intentaba ejecutar hasta que cambió el modulea android.

Puede acceder a las configuraciones yendo a Run-> Edit Configurations...-> Generalpestaña ->Module: [drop-down-list-here]


0

Descubrí que hacer el cambio recomendado en el manifiesto no resolvió mi problema.

La solución se encontró en la carpeta GradleScripts, en el archivo build.gradle para el módulo: aplicación.

Dentro de este archivo (build.gradle) se modificó la siguiente línea. minSdkVersion 22 Cambié este valor '22' a '19' para mi teléfono particular y la compilación se completó sin errores.


0

Compañero, mi consejo es cambiar de dispositivo virtual. Descargue la aplicación "Genimotion", es fácil de usar y hay muchos dispositivos que necesita


0

Vaya al build.cradlearchivo de su proyecto y agregue

defaultConfig {
    minSdkVersion versions.minSdk

} `

Esto hace que su aplicación cumpla con el SDK mínimo que está ejecutando su dispositivo.


-1

Error del emulador iónico de Android INSTALL_FAILED_OLDER_SDK

Entonces, básicamente significa que la instalación ha fallado debido a que tiene una versión de SDK más antigua que la targetSdkVersion especificada en su aplicación (es un problema de Gradle). Simplemente edite el archivo AndroidManifest.xml y agregue el siguiente código:

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

Después de días buscando la solución, eso es todo.

¡Funciona bien para mí!


-1

Si aparece el error "Error de instalación: INSTALL_FAILED_OLDER_SDK", debe cambiar la versión de minSdkVersion en AndroidManifest a la especificada en el emulador de Android: consulte Configuración -> Acerca del teléfono -> Versión de Android.


1
Hola @ cupoma58, bienvenido. ¿En qué se diferencia esto de lo que el otro responde?
Tiago Martins Peres 李大仁

-2

He cambiado android:minSdkVersiony android:targetSdkVersiona 18partir de 21:

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

Ahora puedo instalar mi aplicación correctamente.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.