it-swarm.com.ru

Ошибка установки: 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

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

Правка: Приложение не работает на виртуальном устройстве: Вот что я получаю на 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
78
Dragos

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

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

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

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

[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>
103
Karthik

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

23
Rajdeep Dua

Эта ошибка возникает, когда 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 поможет вам особенно иметь дело с виджетами более старых версий.

14
AlexS

Я использую 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-уровень 4.0.3 (apilevel 15) . Это сработало. 

13
Omer Sonmez

Я перепробовал все ответы, описанные здесь, но мое решение изменилось внутри моего 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"
        }
...
...
...
3
Elenasys

Исправление для нового 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"

1
yehyatt

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

Android: minSdkVersion = "16"

чтобы соответствовать с AVD.

1
Hari Palappetty

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

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

Я только что изменил minSdkVersion = "17" на minSdkVersion = "16". Мой получившийся тег был:

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

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

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

1
xyz

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

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

0
Rock Lee

Если вы новичок, как я, вы должны сначала установить минимальный SDK. Проверьте ссылку.

Это отлично сработало для меня:

Та же проблема, другой пост с хорошим решением

С Уважением,

Халед.

0
Khaled

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

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

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

0
jdosser

Дружище, мой совет - сменить виртуальное устройство. Скачайте приложение "Genymotion", оно простое в использовании и содержит множество устройств, которые вам нужны.

0
Shell Scott

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

0
janex

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

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

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

После нескольких дней в поисках решения, вот и все.

У меня отлично работает!

0
Tom Costa

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

    Android:minSdkVersion="17"
    Android:targetSdkVersion="17" />
0
Inamdar

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

compileSdkVersion "Android-L"

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

compileSdkVersion 21
0
friederbluemle