2012-02-01 81 views
76

我是Android开发新手,我首先需要运行Hello World应用程序。 我正在使用Eclipse IDE和Android 4.0.3版本15 SDK。我从一个教程网站复制一切,但是当我尝试运行在virtual device应用我得到这个错误:安装错误:INSTALL_FAILED_OLDER_SDK

[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 
+0

在您的唯一文件中,提到'android:targetSdkVersion =“@ string/app_name”'。这是一个错字吗? – Karthik 2012-02-01 09:50:49

+0

@Karthik不,这不是一个错字。这是向导生成的。 – Dragos 2012-02-01 10:12:13

+0

这可能也适用于某人[此工作适用于我](http://stackoverflow.com/a/24438395/754485) – b729sefc 2014-08-01 14:10:23

回答

100

这是由于android:targetSdkVersion="@string/app_name"在您的播音文件中。
将其更改为:

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

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

编辑:
你必须在你的manifiest文件为活动添加默认intent-filter。然后只有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> 
+0

谢谢!现在我不再有错误了。但虚拟设备启动,它不会显示我'你好Android'。我必须以某种方式启动它吗?如果是,如何?如果没有,为什么它不工作? – Dragos 2012-02-01 10:48:12

+0

如果你从eclipse运行,应用程序将在安装后自动启动。所以这个活动应该显示在AVD屏幕上。当AVD开始时,它将处于锁定状态(屏幕锁定),一旦你解锁屏幕,你可以看到“Hello Android”文本。 – Karthik 2012-02-01 11:19:41

+0

是的,它开始于锁定状态,但当我解锁它时,它只显示底部的壁纸和一些图标。没有'Hello Android'。 – Dragos 2012-02-01 11:31:58

21

这意味着你的AVD的Android版本较旧比用于编译代码的版本要高。

+3

是的,这听起来是正确的,但我该如何解决它? – Dragos 2012-02-01 10:12:49

+0

根据一定的功能(屏幕尺寸,代码版本,相机状态),您可以构建AVD(Android虚拟设备)。构建一个与您的目标API版本相同的构件。还要构建一个较旧的兼容性测试。 – Bryce 2013-06-13 17:20:33

0

我在Android Studio上。当min/targetSDKVersion被设置为17时,我得到了这个错误。当看到这个线程时,我试图改变minSDKVersion,瞧...问题修复。去图.. :(

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

在我来说,我编辑在AndroidManifest.xml文件中有这样的项目,而这是我ginving上面的错误,在运行时:

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

我。就是这样做,是改变的minSdkVersion =“17”,来的minSdkVersion =“16”我得到的标签是:

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

现在我不再得到错误..

希望这有助于

14

当您的Android清单安装设备(真实或虚拟设备)上的SDK版本小于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支持图书馆和/或类似actionbar-sherlock等图书馆将帮助您特别处理较旧版本的小部件。

1

接收到同样的错误,问题是AVD使用的Android SDK版本和AndroidManifest文件版本存在差异。我可以通过纠正

的Android解决这个问题:的minSdkVersion = “16”

,以配合AVD。

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)。 它的工作。

0

请确保检查您的build.gradle,并且它没有使用比您的AVD上安装的更新的SDK版本。这只是如果你使用Android Studio。

0

你会看到相同的错误,如果你正在试图安装使用

compileSdkVersion "android-L" 
即使是运行Android 5.0的最终版本设备

内置的APK。 只需将其更改为

compileSdkVersion 21 
3

我想在这里描述的所有答复,但我的解决办法改变我的build.gradle文件minSdkVersion内从8到9,因为一些图书馆在我的项目不容工作,API 8,that's在该消息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" 
     } 
... 
... 
... 
0

我的解决办法是从wearable改变运行配置module下拉列表android.(发生在我身上这个错误,当我试图运行谷歌的I/O章附表开源美联社p)每次尝试运行时它都会自动弹出配置,直到我将module更改为android。 >Edit Configurations... - - >General标签 -

您可以通过给Run访问配置>Module: [drop-down-list-here]

1

修正了全新的Android 6.0棉花糖 修正我的问题,当我更新到API 23(安卓6.0棉花糖)通过更新生成工具版本23.0.0如下:

android { 
    buildToolsVersion '23.0.0' 
... 

后赴文件>项目结构,选择属性选项卡,然后更新编译SDK版本到“API 23:Android的5.X(MNC)”和构建工具版本为“23.0.0”

0

我发现,做的推荐变化清单并没有解决我的问题。

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

在此文件(build.gradle)中修改了以下行。 minSdkVersion 22 我改变了这个'22'值为'19'为我的特定的手机和生成完成没有错误。

0

伙伴,我的建议是改变虚拟设备。下载“Genimotion”的应用程序,其易于使用,有很多你需要

-2

任何设备的我已经改变了我android:minSdkVersionandroid:targetSdkVersion1821

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

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

0

离子Android模拟器错误INSTALL_FAILED_OLDER_SDK

所以,基本上就意味着安装失败,由于具有较早SDK版本比你的应用程序(这是一个摇篮问题)指定的targetSdkVersion。 只需编辑AndroidManifest即可。XML文件,并添加以下代码:

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

后寻找解决方案天,仅此而已。

适合我!