[android] 설치 오류 : INSTALL_FAILED_OLDER_SDK

저는 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패키지의 내 수업입니다 . 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);

    }

}

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



답변

그것은 android:targetSdkVersion="@string/app_name"당신의 manifiest 파일 때문입니다.
다음으로 변경하십시오.

<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>


답변

즉, avd의 android 버전이 코드를 컴파일하는 데 사용되는 버전보다 오래되었습니다.


답변

이 오류는 기기 (실제 또는 가상 기기)에 설치된 sdk 버전이 android:minSdkVersionAndroid 매니페스트 보다 작을 때 발생합니다.

당신은 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 과 같은 라이브러리 를 사용하면 특히 이전 버전의 위젯을 처리하는 데 도움이됩니다.


답변

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)을 만들었습니다. 효과가있었습니다.


답변

여기에 설명 된 모든 응답을 시도했지만 내 프로젝트의 일부 라이브러리가 API 8에서 작동하지 않기 때문에 내 솔루션이 내 build.gradle파일 내 minSdkVersion에서 8에서 9 로 변경 되었습니다. 이것이 메시지의 이유입니다 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"
        }
...
...
...


답변

제 경우에는 AndroidManifest.xml 파일에있는 프로젝트를 편집했는데 런타임에 위의 오류가 발생했습니다.

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

내가 방금 한 것은 minSdkVersion = “17”을 minSdkVersion = “16”으로 변경하는 것입니다. 내 결과 태그는 다음과 같습니다.

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

이제 더 이상 오류가 발생하지 않습니다 ..

도움이 되었기를 바랍니다


답변

동일한 오류가 발생했는데 AVD에서 사용중인 Android SDK 버전과 AndroidManifest 파일의 버전이 다릅니다. 수정하여 해결할 수 있습니다.

android : minSdkVersion = “16”

AVD와 일치합니다.