インストールエラー: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

あなたのmanifytファイルで、android:targetSdkVersion="@string/app_name"言及されています。それはタイプミスですか?
Karthik、2012

@Karthikいいえ、タイプミスではありません。それがウィザードが生成したものです。
Dragos

回答:


113

それはandroid:targetSdkVersion="@string/app_name"あなたのマニフェストファイルによるものです。
それを次のように変更します。

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

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!

以下を<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、2012

はい、ロック状態で開始しますが、ロックを解除すると、壁紙と下部にいくつかのアイコンが表示されます。ありませんHello Android
Dragos

Logcatにエラーがありますか?onCreate()にいくつかのLogステートメントを追加して、それらがLogcatウィンドウに表示されるかどうかを確認できます。
Karthik、2012

LogcatあなたConsoleがEclipseのことを意味しているなら、答えはノーです。エラーは発生しません。それがLogcatの意図と異なる場合は、どこにあるかを教えてください。
Dragos

26

これは、AVDのAndroidのバージョンが、コードのコンパイルに使用されているバージョンよりも古いことを意味します


特定の機能セット(画面サイズ、コードバージョン、カメラステータス)を指定してAVD(Android仮想デバイス)を構築します。ターゲットAPIバージョンと同じものを作成します。また、互換性テスト用に古いものをビルドします。
ブライス2013年

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(APIレベル15)を作りました。出来た。


3

ここで説明するすべての応答を試してみましたが、私の解決策はbuild.gradleファイル内minSdkVersionを8から9 に変更していました。プロジェクトの一部のライブラリがAPI 8で機能しないため、メッセージの理由がわかりました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'
...

とに行ってきました[ファイル]> [プロジェクトの構造、選択したプロパティのタブは、更新されたコンパイルSDKのバージョンと:「アンドロイド5.X(MNC)API 23」へのビルドツールのバージョンを「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

私のようにまったく新しい場合は、最初に最小限のSDKをインストールする必要があります。リンクを確認してください。

これは私にとって完璧にうまくいきました:

同じ問題の他の投稿と良い解決策

よろしく、

ハレド。


0

私のソリューションは、構成が実行変更したmoduleドロップダウンリストからwearableのをandroid. (私はGoogleのI / O日程オープンソースのアプリケーションを実行しようとしたときにこのエラーが私に起こった。)それは自動的に設定をポップアップします、私は私まで実行しようとしたたびにをに変更しmoduleましたandroid

Run-> Edit Configurations...-> Generalタブ->に移動すると、構成にアクセスできます。Module: [drop-down-list-here]


0

マニフェストに推奨されている変更を行っても問題が解決しないことがわかりました。

この修正は、Module:appのbuild.gradleファイルのGradleScriptsフォルダーにありました。

このファイル(build.gradle)内で、次の行が変更されました。minSdkVersion 22特定の電話でこの「22」の値を「19」に変更し、ビルドはエラーなしで完了しました。


0

メイト、私のアドバイスは、仮想デバイスを変更することです。「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:targetSdkVersion18からに変更しました21

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

これで、アプリを正常にインストールできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.