Ошибка установки: 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.
Ответ 11
Если вы совершенно новые, как я, вы должны сначала установить минимальный SDK. Проверьте ссылку.
Это сработало отлично для меня:
Такая же проблема с другим сообщением с хорошим решением
Привет,
Халед.
Ответ 12
Вы увидите ту же ошибку, если пытаетесь установить apk, который был создан с помощью
compileSdkVersion "android-L"
Даже для устройств, на которых установлена финальная версия Android 5.0.
Просто измените это на
compileSdkVersion 21
Ответ 13
Моим решением было изменить раскрывающийся список конфигураций прогона module
с wearable
на android.
(эта ошибка произошла со мной, когда я попытался запустить приложение с открытым исходным кодом для ввода-вывода Google I/O). Это автоматически всплывающие конфигурации каждый раз, когда я пытался запустить, пока я не изменил module
на android
.
Вы можете получить доступ к конфигурациям, перейдя на вкладку Run
→ Edit Configurations...
→ General
→ Module: [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"
Теперь я могу успешно установить приложение.