Erro de instalação: INSTALL_FAILED_OLDER_SDK

88

Eu sou novo no desenvolvimento do Android e quero primeiro colocar o Hello Worldaplicativo em execução. Estou usando o Eclipse IDE e o Android 4.0.3 versão 15 SDK. Copiei tudo de um site de tutorial, mas quando tento executar o aplicativo no virtual devicerecebo este erro:

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

Aqui está minha aula no com.maze.apppacote: 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);

    }

}

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

Aqui está a configuração de 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

Qual é o problema?

EDITAR: O aplicativo não está sendo executado no dispositivo virtual: Aqui está o que recebo no LogCat (algumas das linhas):

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
fonte
em seu arquivo principal, android:targetSdkVersion="@string/app_name"é mencionado. é um erro de digitação?
Karthik
@Karthik Não, não é um erro de digitação. Isso é o que o assistente gerou.
Dragos
Isso também pode ser usado por alguém que trabalhou para mim
Joshua G

Respostas:

113

É devido android:targetSdkVersion="@string/app_name"em seu arquivo manifesto.
Altere para:

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

O targetSdkVersiondeve ser um número inteiro, mas @string/app_nameseria uma string. Acho que isso está causando o erro.

EDITAR:
Você tem que adicionar um padrão intent-filterem seu manifiestarquivo para a atividade. Então, apenas o Android pode iniciar a atividade. caso contrário, você obterá o erro abaixo na janela do 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!

Adicione o seguinte à sua <activity>tag.

<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
fonte
Obrigado! Agora não recebo mais o erro. Mas o dispositivo virtual inicia e não me mostra Hello Android. Eu tenho que começar de alguma forma? Se sim, como? Se não, por que não está funcionando?
Dragos
se você executar do Eclipse, o aplicativo será iniciado automaticamente após a instalação. Portanto, a atividade deve aparecer na tela do AVD. Quando o AVD for iniciado, ele estará no estado Bloqueado (bloqueio de tela), assim que você desbloquear a tela, poderá ver o Hello Androidtexto.
Karthik
Sim, ele começa no estado de bloqueio, mas quando eu desbloqueio, ele apenas me mostra o papel de parede e alguns ícones na parte inferior. Não existe Hello Android.
Dragos
algum erro no Logcat? você pode adicionar algumas instruções de Log em onCreate () e ver se elas são mostradas na janela Logcat.
Karthik
Se Logcatvocê quer dizer Consoleno Eclipse, a resposta é não. Eu não recebo nenhum erro. Se não for isso que você quis dizer com Logcat, diga-me onde posso encontrá-lo.
Dragos
26

Isso significa que a versão do android do seu avd é mais antiga do que a versão usada para compilar o código

Rajdeep Dua
fonte
Você constrói AVD (Android Virtual Devices) com um determinado conjunto de recursos (tamanho da tela, versão do código, status da câmera). Crie um que seja igual à versão de destino da API. Crie também um mais antigo para teste de compatibilidade.
Bryce
15

Este erro ocorre quando a versão SDK instalada no seu dispositivo (dispositivo real ou virtual) é menor do que android:minSdkVersionno manifesto do seu Android.

Você tem que diminuir android:minSdkVersionou especificar uma versão superior da API para o seu AVD.

Lembre-se de que nem sempre é trivial diminuir, android:minSdkVersionpois você precisa ter certeza de que seu aplicativo se preocupa com a API real instalada e usa os métodos corretos:

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

Usar a biblioteca de suporte do Android e / ou bibliotecas como actionbar-sherlock o ajudará a lidar especialmente com widgets de versões mais antigas.

AlexS
fonte
13

Estou usando o Android Studio 0.8.1. Eu tenho um arquivo gradle do projeto como abaixo:

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

Meu emulador era o Android 4.0. Então eu modifiquei meu emulador e fiz a API nível 4.0.3 (nível 15). Funcionou.

Omer Sonmez
fonte
3

Tentei todas as respostas descritas aqui, mas minha solução estava mudando dentro do meu build.gradlearquivo minSdkVersionde 8 para 9 porque algumas bibliotecas do meu projeto não funcionam com a API 8, por isso a mensagem 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
fonte
Isso parece que se traduz para o SDK mínimo de alguma biblioteca incluída é 9.
assinatura de métodos
1

No meu caso, editei um projeto tendo isso no arquivo AndroidManifest.xml, e que estava me gerando o erro acima, em tempo de execução:

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

O que eu acabei de fazer foi mudar minSdkVersion = "17" para minSdkVersion = "16". Minha tag resultante foi:

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

Agora não estou recebendo mais o erro ..

Espero que isto ajude

user9869932
fonte
1

Recebeu o mesmo erro, o problema era a diferença na versão do Android SDK que o AVD estava usando e a versão no arquivo AndroidManifest. Eu poderia resolver corrigindo o

android: minSdkVersion = "16"

para combinar com AVD.

Hari Palappetty
fonte
1

Você verá o mesmo erro se estiver tentando instalar um apk que foi construído usando

compileSdkVersion "android-L"

Mesmo para dispositivos que executam a versão final do Android 5.0. Simplesmente mude isso para

compileSdkVersion 21
Friederbluemle
fonte
1

Correção para o novo Android 6.0 Marshmallow Corrigido meu problema ao atualizar para a API 23 (Android 6.0 Marshmallow) atualizando a versão das ferramentas de compilação para 23.0.0 da seguinte maneira:

android {
    buildToolsVersion '23.0.0'
...

E foi para Arquivo> Estrutura do projeto , escolha a guia Propriedades e atualizou a versão do Compile Sdk para "API 23: Android 5.X (MNC)" e a versão das ferramentas de construção para "23.0.0"

yehyatt
fonte
0

Estou no Android Studio. Recebi este erro quando min / targetSDKVersion foi definido como 17. Enquanto procurava por este tópico, tentei alterar o minSDKVersion, voila..problem fixed. Vai saber.. :(

    android:minSdkVersion="17"
    android:targetSdkVersion="17" />
Sr. B
fonte
0

Certifique-se de verificar seu build.gradle e de que ele não usa uma versão SDK mais recente do que a instalada em seu AVD. No entanto, isso é apenas se você usar o Android Studio.

janex
fonte
0

Se você for totalmente novo como eu, deve primeiro instalar o SDK mínimo. Verifique o link.

Isso funcionou perfeitamente para mim:

Mesmo problema outro post com uma boa solução

Saudações,

Khaled.

Khaled
fonte
0

Minha solução foi alterar a modulelista suspensa de configurações de execução de wearablepara android. (Este erro aconteceu comigo quando tentei executar o aplicativo de código aberto I / O Sched do Google). As configurações apareceriam automaticamente toda vez que eu tentasse executar até que eu mudou o modulepara android.

Você pode acessar as configurações indo para Run-> Edit Configurations...-> Generalguia ->Module: [drop-down-list-here]

Rock Lee
fonte
0

Descobri que fazer a alteração recomendada no manifesto não resolveu meu problema.

A correção foi encontrada na pasta GradleScripts, no arquivo build.gradle do Módulo: app.

Dentro deste arquivo (build.gradle) a seguinte linha foi modificada. minSdkVersion 22 Mudei este valor '22' para '19' para meu telefone específico e a compilação foi concluída sem erros.

jdosser
fonte
0

Amigo, meu conselho é mudar o dispositivo virtual. Baixe o aplicativo "Genimotion", é fácil de usar e há muitos dispositivos que você precisa

Shell Scott
fonte
0

Vá no build.cradlearquivo do seu projeto e adicione

defaultConfig {
    minSdkVersion versions.minSdk

} `

Isso faz com que seu aplicativo esteja em conformidade com o SDK mínimo que seu dispositivo está executando.

Nouru Muneza
fonte
-1

Erro do emulador Ionic Android INSTALL_FAILED_OLDER_SDK

Então, basicamente, isso significa que a instalação falhou devido a ter uma versão do SDK mais antiga que a targetSdkVersion especificada em seu aplicativo (é um problema do Gradle). Basta editar o arquivo AndroidManifest.xml e adicionar o seguinte código:

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

Depois de dias procurando a solução, é isso.

Funciona bem para mim!

Tom Costa
fonte
-1

Se o erro "Erro de instalação: INSTALL_FAILED_OLDER_SDK" aparecer, você deve alterar a versão de minSdkVersion em AndroidManifest para aquela especificada no emulador de Android: consulte Configurações -> Sobre o telefone -> Versão do Android.

cupoma58
fonte
1
Olá @ cupoma58, bem-vindo. Como isso é diferente das outras respostas?
Tiago Martins Peres 李大仁
-2

Eu mudei meu android:minSdkVersione android:targetSdkVersionpara 18de 21:

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

Agora posso instalar meu aplicativo com sucesso.

Veena
fonte