2012-02-01 92 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"/>

後尋找解決方案天,僅此而已。

適合我!