설치 오류 : INSTALL_FAILED_OLDER_SDK


88

저는 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"언급되어 있습니다. 오타입니까?
Karthik

@Karthik 아니요, 오타가 아닙니다. 이것이 마법사가 생성 한 것입니다.
Dragos

답변:


113

그것은 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>

감사합니다! 이제 더 이상 오류가 발생하지 않습니다. 하지만 가상 장치가 시작되고 표시되지 않습니다 Hello Android. 어떻게 든 시작해야합니까? 그렇다면 어떻게? 그렇지 않다면 왜 작동하지 않습니까?
Dragos

eclipse에서 실행하면 설치 후 앱이 자동으로 시작됩니다. 따라서 활동이 AVD 화면에 표시되어야합니다. AVD가 시작되면 잠금 상태 (화면 잠금)가되고 화면 잠금을 해제하면 Hello Android텍스트를 볼 수 있습니다 .
Karthik

예, 잠금 상태에서 시작되지만 잠금을 해제하면 하단에 배경 화면과 일부 아이콘 만 표시됩니다. 없습니다 Hello Android.
Dragos

Logcat에 오류가 있습니까? onCreate ()에 일부 Log 문을 추가 하고 Logcat 창에 표시되는지 확인할 수 있습니다.
Karthik

Eclipse에서 Logcat의미하는 경우 Console대답은 아니오입니다. 오류가 발생하지 않습니다. Logcat이 의미하는 것이 아니라면 어디서 찾을 수 있는지 알려주세요.
Dragos

26

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


특정 기능 세트 (화면 크기, 코드 버전, 카메라 상태)를 고려하여 AVD (Android Virtual Devices)를 빌드합니다. 대상 API 버전과 동일한 것을 빌드하십시오. 또한 호환성 테스트를 위해 이전 버전을 빌드하십시오.
Bryce

15

이 오류는 기기 (실제 또는 가상 기기)에 설치된 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 과 같은 라이브러리 를 사용하면 특히 이전 버전의 위젯을 처리하는 데 도움이됩니다.


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


3

여기에 설명 된 모든 응답을 시도했지만 내 프로젝트의 일부 라이브러리가 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"
        }
...
...
...

이것은 포함 된 라이브러리의 최소 SDK가 9로 변환되는 것처럼 들립니다.
methodsignature

1

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

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

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

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

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

도움이 되었기를 바랍니다


1

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

android : minSdkVersion = "16"

AVD와 일치합니다.


1

다음을 사용하여 빌드 된 APK를 설치하려고하면 동일한 오류가 표시됩니다.

compileSdkVersion "android-L"

Android 5.0 최종 버전을 실행하는 장치에서도 마찬가지입니다. 간단히 변경하십시오.

compileSdkVersion 21

1

새로운 Android 6.0 Marshmallow에 대한 수정 다음과 같이 빌드 도구 버전을 23.0.0으로 업데이트하여 API 23 (Android 6.0 Marshmallow)으로 업데이트 할 때 발생하는 문제를 수정했습니다.

android {
    buildToolsVersion '23.0.0'
...

그리고 File> Project Structure 로 이동하여 Properties 탭을 선택한 다음 Compile Sdk 버전 을 "API 23 : Android 5.X (MNC)"로 업데이트하고 빌드 도구 버전 을 "23.0.0"으로 업데이트했습니다.


0

저는 Android Studio에 있습니다. min / targetSDKVersion이 17로 설정되었을 때이 오류가 발생했습니다.이 스레드를 살펴 보는 동안 minSDKVersion을 변경하려고했습니다. voila..problem이 수정되었습니다. 그림을 이동.. :(

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

0

build.gradle을 확인하고 AVD에 설치된 것보다 최신 SDK 버전을 사용하지 않는지 확인하십시오. Android Studio를 사용하는 경우에만 해당됩니다.



0

내 솔루션 구성이 실행 변경했다 module드롭 다운 목록에서 wearable대상을 android. (내가 구글의 I / O 예정 : 오픈 소스 응용 프로그램을 실행하려고 할 때이 오류가 나에게 일어났다.) 자동 구성을 팝업 것 내가 때까지 실행하려고 할 때마다 변경 moduleandroid.

Run-> Edit Configurations...-> General탭-> 으로 이동하여 구성에 액세스 할 수 있습니다.Module: [drop-down-list-here]


0

매니페스트에서 권장 사항을 변경해도 문제가 해결되지 않는다는 것을 알았습니다.

수정 사항은 Module : app의 build.gradle 파일에있는 GradleScripts 폴더에 있습니다.

이 파일 (build.gradle) 내에서 다음 줄이 수정되었습니다. minSdkVersion 22 특정 전화기에 대해이 '22'값을 '19'로 변경했고 빌드가 오류없이 완료되었습니다.


0

Mate, 내 조언은 가상 장치를 변경하는 것입니다. 사용하기 쉬운 "Genimotion"응용 프로그램을 다운로드하고 필요한 장치가 많이 있습니다.


0

프로젝트 build.cradle파일로 이동하여

defaultConfig {
    minSdkVersion versions.minSdk

}`

이렇게하면 애플리케이션이 기기에서 실행중인 최소 SDK를 준수합니다.


-1

Ionic Android 에뮬레이터 오류 INSTALL_FAILED_OLDER_SDK

따라서 기본적으로 앱에 지정된 targetSdkVersion보다 오래된 SDK 버전이있어 설치에 실패했음을 의미합니다 (Gradle 문제). AndroidManifest.xml 파일을 편집하고 다음 코드를 추가하기 만하면됩니다.

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

솔루션을 찾는 며칠 후, 그게 다입니다.

나를 위해 잘 작동합니다!


-1

'설치 오류 : INSTALL_FAILED_OLDER_SDK'오류가 표시되면 AndroidManifest의 minSdkVersion 버전을 Android 에뮬레이터에 지정된 버전으로 변경해야합니다. 설정-> 휴대 전화 정보-> Android 버전을 참조하세요.


1
안녕하세요 @ cupoma58 님, 환영합니다. 다른 답변과 어떻게 다른가요?
Tiago Martins Peres 李大仁

-2

에서 android:minSdkVersionandroid:targetSdkVersion로 변경 18했습니다 21.

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

이제 앱을 성공적으로 설치할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.