安装错误:INSTALL_FAILED_OLDER_SDK

Dra*_*gos 83 eclipse android

我是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!
Run Code Online (Sandbox Code Playgroud)

这是我的com.maze.app包中的类: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);

    }

}
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

这是以下配置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
Run Code Online (Sandbox Code Playgroud)

问题是什么?

编辑:应用程序没有在虚拟设备上运行:这是我在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
Run Code Online (Sandbox Code Playgroud)

Kar*_*hik 107

这是由于android:targetSdkVersion="@string/app_name"你最明确的文件.
将其更改为:

<uses-sdk android:minSdkVersion="15" android:targetSdkVersion="15"/>
Run Code Online (Sandbox Code Playgroud)

targetSdkVersion应该是一个整数,但@string/app_name将是一个字符串.我认为这会导致错误.

编辑:
您必须intent-filtermanifiest文件中为活动添加默认值.然后只有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!
Run Code Online (Sandbox Code Playgroud)

将以下内容添加到您的<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>
Run Code Online (Sandbox Code Playgroud)


Raj*_*Dua 25

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

  • 是的,这听起来不错,但我该如何解决? (5认同)

Ale*_*exS 15

当您的设备(真实或虚拟设备)上安装的sdk版本小于android:minSdkVersionAndroid清单中的sdk版本时,会发生此错误.

你要么必须减少你的,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!");
}
Run Code Online (Sandbox Code Playgroud)

使用android-support-library和/或actionbar-sherlock等库将帮助您处理旧版本的小部件.


Ome*_*mez 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'
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我的模拟器是android 4.0.所以我修改了我的模拟器并使api级别为4.0.3(apilevel 15).有效.


Jor*_*sys 5

我尝试了此处描述的所有响应,但我的解决方案在build.gradle文件内minSdkVersion从 8 更改为 9,因为我的项目中的某些库可以 \xc2\xb4t 与 API 8 一起使用,\xc2\xb4s 是该消息的原因INSTALL_FAILED_OLDER_SDK

\n\n
apply plugin: \'com.android.application\'\n\n    android {\n        compileSdkVersion 22\n        buildToolsVersion "22.0.1"\n\n        defaultConfig {\n            applicationId "com.tuna.hello.androidstudioapplication"\n            minSdkVersion 9\n            targetSdkVersion 22\n            versionCode 1\n            versionName "1.0"\n        }\n...\n...\n...\n
Run Code Online (Sandbox Code Playgroud)\n