安装错误:INSTALL_FAILED_OLDER_SDK

时间:2012-02-01 09:47:18

标签: android eclipse

我是Android开发的新手,我想首先让Hello World应用程序运行。 我正在使用Eclipse IDE和Android 4.0.3版本15 SDK。我从教程网站复制了所有内容,但当我尝试在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

18 个答案:

答案 0 :(得分:105)

这是由于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>

答案 1 :(得分:23)

这意味着你的avd版本比用于编译代码的版本旧版本

答案 2 :(得分:15)

当您的设备上安装的sdk-version(真实或虚拟设备)小于Android清单中的android:minSdkVersion时,会发生此错误。

您必须减少android:minSdkVersion,或者必须为AVD指定更高的api版本。

请注意,减少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-support-library和/或像actionbar-sherlock这样的库将帮助您处理旧版本的小部件。

答案 3 :(得分:13)

我正在使用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)。 有效。

答案 4 :(得分:3)

我尝试了此处描述的所有响应,但我的解决方案是在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"
        }
...
...
...

答案 5 :(得分:1)

如果您尝试安装使用

构建的apk,则会看到相同的错误
compileSdkVersion "android-L"

即使是运行Android 5.0最终版本的设备也是如此。 只需将其更改为

即可
compileSdkVersion 21

答案 6 :(得分:1)

修复新的Android 6.0 Marshmallow 修复了我通过将构建工具版本更新为23.0.0更新到API 23(Android 6.0 Marshmallow)的问题,如下所示:

android {
    buildToolsVersion '23.0.0'
...

然后转到文件&gt;项目结构,选择属性标签,然后将编译Sdk版本更新为“API 23:Android 5.X(MNC)”和构建工具版本到“23.0.0”

答案 7 :(得分:1)

收到相同的错误,问题是AVD使用的Android SDK版本与AndroidManifest文件中的版本不同。我可以通过纠正

解决它

<强>机器人:的minSdkVersion =&#34; 16&#34;

与AVD相匹配。

答案 8 :(得分:1)

在我的情况下,我在AndroidManifest.xml文件中编辑了一个具有此项目的项目,并在运行时向我发出上述错误:

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

我做的只是将minSdkVersion =“17”更改为minSdkVersion =“16”。我得到的标签是:

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

现在我不再收到错误..

希望这有帮助

答案 9 :(得分:0)

请务必检查您的build.gradle,并确保它不使用比AVD上安装的版本更新的SDK版本。只有当你使用Android Studio时才会这样做。

答案 10 :(得分:0)

如果您像我一样全新,则必须先安装最低限度的SDK。检查链接。

这对我来说很完美:

Same problem other post with a good solution

此致

物语。

答案 11 :(得分:0)

我的解决方案是将运行配置module下拉列表从wearable更改为android.(当我尝试运行Google的I / O Sched开源时,这个错误发生在我身上app。)每次我尝试运行时都会自动弹出配置,直到我将module更改为android

您可以转到Run - &gt;访问配置Edit Configurations... - &gt; General标签 - &gt; Module: [drop-down-list-here]

答案 12 :(得分:0)

我在Android Studio上。当min / targetSDKVersion设置为17时,我收到此错误。在查看此线程时,我尝试更改minSDKVersion,瞧瞧..问题已修复。去图.. :(

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

答案 13 :(得分:0)

我发现在清单中进行推荐的更改并没有解决我的问题。

修复程序位于GradleScripts文件夹中,位于Module:app的build.gradle文件中。

在此文件(build.gradle)中,修改了以下行。 minSdkVersion 22 对于我的特定手机,我将此“22”值更改为“19”,并且构建完成且没有错误。

答案 14 :(得分:0)

Ionic Android模拟器错误 INSTALL_FAILED_OLDER_SDK

因此,基本上这意味着安装失败的原因是SDK版本比应用程序中指定的targetSdkVersion更旧(这是Gradle问题)。 只需编辑AndroidManifest.xml文件并添加以下代码:

&#13;
&#13;
<uses-sdk android:minSdkVersion="19" android:targetSdkVersion="14"/>
&#13;
&#13;
&#13;

经过几天寻找解决方案之后,那就是它。

对我来说很好!

答案 15 :(得分:0)

进入项目的build.cradle文件并添加

defaultConfig {
    minSdkVersion versions.minSdk

}`

这可以确保您的应用程序符合设备所运行的最低SDK。

答案 16 :(得分:-1)

如果出现错误“安装错误:INSTALL_FAILED_OLDER_SDK”,则必须将AndroidManifest中minSdkVersion的版本更改为android仿真器中指定的版本:请参阅设置->关于手机-> Android版本。

答案 17 :(得分:-2)

我已将android:minSdkVersionandroid:targetSdkVersion18更改为21

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

现在我可以成功安装我的应用。