Ошибка установки: INSTALL_FAILED_OLDER_SDK

Я новичок в разработке Android, и хочу сначала запустить приложение Hello World. Я использую Eclipse IDE и SDK Android 4.0.3 версии 15. Я скопировал все с учебного сайта, но когда я пытаюсь запустить приложение на virtual device, я получаю эту ошибку:

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

Вот мой класс в пакете com.maze.app:   пакет 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);

    }

}

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

Вот конфигурация 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

В чем проблема?

EDIT: Приложение не работает на виртуальном устройстве: Вот что я получаю на LogCat (некоторые из строк):

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

Ответ 1

Это из-за android:targetSdkVersion="@string/app_name" в вашем самом явном файле.
Измените его на:

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

targetSdkVersion должен быть целым числом, но @string/app_name будет строкой. Я думаю, что это вызывает ошибку.

EDIT:
Вы должны добавить по умолчанию intent-filter в свой manifiest файл для этой активности. Тогда только андроид может запустить свою деятельность. в противном случае вы получите ошибку ниже в окне консоли.

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

Добавьте в свой тег <activity> следующее.

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

Ответ 2

Это означает, что версия андроида вашего avd старше версии, используемой для компиляции кода

Ответ 3

Эта ошибка возникает, когда версия sdk, установленная на вашем устройстве (реальное или виртуальное устройство), меньше, чем android:minSdkVersion в манифесте Android.

Вам либо нужно уменьшить ваш android:minSdkVersion, либо вам нужно указать более высокую версию api для вашего AVD.

Имейте в виду, что не всегда тривиально уменьшать android:minSdkVersion, как вы должны убедиться, ваше приложение заботится о фактическом установленном API и использует правильные методы:

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

Использование библиотеки поддержки android-библиотек и/или библиотек, таких как actionbar-sherlock, поможет вам особенно разобраться с виджетами более старых версий.

Ответ 4

Я использую Android Studio 0.8.1. У меня есть проект gradle файл, как показано ниже:

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

Мой эмулятор был Android 4.0. Поэтому я модифицировал эмулятор и сделал api level 4.0.3 (apilevel 15). Это сработало.

Ответ 5

Я пробовал все ответы, описанные здесь, но мое решение менялось внутри моего build.gradle файла minSdkVersion с 8 на 9, потому что некоторые библиотеки моего проекта не могут работать с API 8, вот почему сообщение 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"
        }
...
...
...

Ответ 6

В моем случае я отредактировал проект, имеющий это в файле AndroidManifest.xml, и который дал мне эту ошибку во время выполнения:

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

То, что я сделал, это изменить minSdkVersion = "17", на minSdkVersion = "16". Мой итоговый тег:

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

Теперь я больше не получаю ошибку.

Надеюсь, что это поможет

Ответ 7

Полученная же ошибка, проблема была в версии Android SDK, используемой AVD, и версии в файле AndroidManifest. Я мог бы решить это, исправив

Android: minSdkVersion = "16"

для соответствия с AVD.

Ответ 8

Исправлено для нового Android 6.0 Marshmallow Исправлена ​​проблема, когда я обновлялся до API 23 (Android 6.0 Marshmallow), обновляя версию инструментов сборки до 23.0.0 следующим образом:

android {
    buildToolsVersion '23.0.0'
...

И перешел в Файл > Структура проекта, выбрал вкладку Свойства, а затем обновил версию Компиляция Sdk на "API 23: Android 5.X(MNC)" и Версия для сборки до "23.0.0"

Ответ 9

Я нахожусь в Android Studio. Я получил эту ошибку, когда значение min/targetSDKVersion было равно 17. Просматривая эту тему, я попытался изменить minSDKVersion, исправлено voila..problem. Go figure..:(

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

Ответ 10

Обязательно проверьте свой build.gradle и не используйте более новую версию SDK, чем то, что установлено на вашем AVD. Это, только если вы используете Android Studio.

Ответ 12

Вы увидите ту же ошибку, если пытаетесь установить apk, который был создан с помощью

compileSdkVersion "android-L"

Даже для устройств, на которых установлена ​​финальная версия Android 5.0. Просто измените это на

compileSdkVersion 21

Ответ 13

Моим решением было изменить раскрывающийся список конфигураций прогона module с wearable на android. (эта ошибка произошла со мной, когда я попытался запустить приложение с открытым исходным кодом для ввода-вывода Google I/O). Это автоматически всплывающие конфигурации каждый раз, когда я пытался запустить, пока я не изменил module на android.

Вы можете получить доступ к конфигурациям, перейдя на вкладку RunEdit Configurations...GeneralModule: [drop-down-list-here]

Ответ 14

Я обнаружил, что внесение рекомендуемого изменения в манифест не помогло решить мою проблему.

Исправление обнаружено в папке GradleScripts в файле build.gradle для приложения Module:.

Внутри этого файла (build.gradle) была изменена следующая строка. minSdkVersion 22 Я изменил это значение "22" на "19" для моего конкретного телефона, и сборка завершилась без ошибок.

Ответ 15

Мате, мой совет - сменить виртуальное устройство. Загрузите приложение "Genimotion", его прост в использовании и есть много любых устройств, которые вам нужны.

Ответ 16

Ионная ошибка эмулятора Android INSTALL_FAILED_OLDER_SDK

Таким образом, в основном это означает, что установка завершилась неудачно из-за того, что у вас установлена ​​более старая версия SDK, чем целевая версияSDKVersion, указанная в вашем приложении (это проблема Gradle). Просто отредактируйте файл AndroidManifest.xml и добавьте следующий код:

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

Ответ 17

Я изменил свои android:minSdkVersion и android:targetSdkVersion на 18 с 21:

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

Теперь я могу успешно установить приложение.