Yükleme hatası: INSTALL_FAILED_OLDER_SDK


88

Android geliştirmede yeniyim ve önce Hello Worlduygulamayı çalıştırmak istiyorum. Eclipse IDE ve Android 4.0.3 sürüm 15 SDK kullanıyorum. Her şeyi bir eğitim sitesinden kopyaladım, ancak uygulamayı çalıştırmaya çalıştığımda virtual deviceşu hatayı alıyorum:

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

İşte com.maze.apppaketteki sınıfım: 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);

    }

}

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

İşte konfigürasyon 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

Sorun nedir?

DÜZENLEME: Uygulama Sanal Cihazda çalışmıyor: İşte LogCat'te aldığım şey (bazı satırlar):

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

Manifiest dosyanızda android:targetSdkVersion="@string/app_name"bahsedilir. bu bir yazım hatası mı?
Karthik

@Karthik Hayır, bu bir yazım hatası değil. Sihirbazın ürettiği buydu.
Dragos

Yanıtlar:


113

O kaynaklanmaktadır android:targetSdkVersion="@string/app_name"sizin Manifiest dosyasında.
Şununla değiştirin:

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

targetSdkVersionBir tamsayı olmalı, ama @string/app_namebir dize olacaktır. Bunun hataya neden olduğunu düşünüyorum.

DÜZENLEME: Etkinlik için dosyanıza
bir varsayılan eklemeniz intent-filtergerekir manifiest. Ardından etkinliği yalnızca android başlatabilir. aksi takdirde konsol pencerenizde aşağıdaki hatayı alırsınız.

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

Aşağıdakileri <activity>etiketinize ekleyin .

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

Teşekkür ederim! Şimdi artık hatayı anlamıyorum. Ama Sanal Cihaz başlıyor ve bana göstermiyor Hello Android. Bir şekilde başlatmak zorunda mıyım? Varsa nasıl? Değilse, neden çalışmıyor?
Dragos

tutulmadan çalıştırırsanız, uygulama kurulumdan sonra otomatik olarak başlatılacaktır. Bu nedenle etkinlik AVD ekranında görünmelidir. AVD başladığında, Kilitli durumda (ekran kilidi) olacaktır, ekran kilidini açtığınızda Hello Androidmetni görebilirsiniz .
Karthik

Evet, Kilit durumunda başlıyor, ancak kilidini açtığımda bana duvar kağıdını ve altta bazı simgeleri gösteriyor. Yok Hello Android.
Dragos

Logcat'te herhangi bir hata var mı? onCreate () 'e bazı Günlük ifadeleri ekleyebilir ve bunların Logcat penceresinde gösterilip gösterilmediğine bakabilirsiniz.
Karthik

Tarafından Eğer Logcatsize demek ConsoleEclipse sonra cevap hayır. Herhangi bir hata almıyorum. Logcat ile kastettiğin bu değilse, lütfen bana onu nerede bulabileceğimi söyle.
Dragos

26

Bu, avd'nizin android sürümünün kodu derlemek için kullanılan sürümden daha eski olduğu anlamına gelir.


Belirli bir dizi özellik (Ekran boyutu, kod sürümü, kamera durumu) verilen AVD'leri (Android Sanal Aygıtları) oluşturursunuz. Hedef API sürümünüzle aynı olan bir tane oluşturun. Ayrıca uyumluluk testi için daha eski bir tane oluşturun.
Bryce

16

Bu hata, cihazınızda (gerçek veya sanal cihaz) yüklü olan SDK sürümü android:minSdkVersionandroid bildiriminizden daha küçük olduğunda oluşur .

AVD'niz için android:minSdkVersionya azaltmalısınız ya da daha yüksek bir api sürümü belirlemelisiniz.

android:minSdkVersionUygulamanızın gerçek yüklü API'ye önem verdiğinden ve doğru yöntemleri kullandığından emin olmanız gerektiğinden, bunu azaltmanın her zaman önemsiz olmadığını unutmayın :

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 destek kitaplığını ve / veya eylem çubuğu-sherlock gibi kitaplıkları kullanmak, özellikle eski sürümlerin widget'larıyla ilgilenmenize yardımcı olacaktır.


13

Android Studio 0.8.1 kullanıyorum. Aşağıdaki gibi bir projenin gradle dosyam var:

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

Emülatörüm Android 4.0 idi. Bu yüzden emülatörümü değiştirdim ve api seviyesini 4.0.3 (apilevel 15) yaptım. İşe yaradı.


3

Bütün yanıtlar Burada anlatılan ama benim çözüm içim değişiyordu çalıştığımız build.gradledosyaya minSdkVersionAPI 8 ile benim proje ayrımın yapılması çalışmalarında bazı kütüphaneler, that's mesajın sebebi olduğundan 9'a 8'den 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"
        }
...
...
...

Bazı dahil kütüphanenin dakikaya çevirir gibi SDK 9. Bu sesleri mi
methodsignature

1

Benim durumumda, AndroidManifest.xml dosyasında bunu içeren ve çalışma zamanında bana yukarıdaki hatayı veren bir projeyi düzenledim:

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

Az önce yaptığım şey minSdkVersion = "17" yi minSdkVersion = "16" olarak değiştirmekti. Sonuç olarak ortaya çıkan etiketim şuydu:

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

Şimdi artık hatayı almıyorum ..

Bu yardımcı olur umarım


1

Aynı hatayı aldı, sorun, AVD'nin kullandığı Android SDK sürümü ile AndroidManifest dosyasındaki sürüm arasındaki farktı. Düzelterek çözebilirim

android: minSdkVersion = "16"

AVD ile eşleştirmek için.


1

Kullanılarak oluşturulmuş bir apk yüklemeye çalışıyorsanız aynı hatayı göreceksiniz.

compileSdkVersion "android-L"

Android 5.0'ın son sürümünü çalıştıran cihazlar için bile. Bunu basitçe değiştirin

compileSdkVersion 21

1

Yeni Android 6.0 Marshmallow için düzeltme Derleme araçları sürümünü 23.0.0'a güncelleyerek API 23'e (Android 6.0 Marshmallow) güncellediğimde sorunumu aşağıdaki gibi düzelttim:

android {
    buildToolsVersion '23.0.0'
...

Ve gitti Dosya> Proje Yapısı seçti Özellikler sekmesini seçin, ardından Derleme Sdk sürümünü "API 23: Android 5.X (MNC)" ve Derleme araçları sürümünü "23.0.0" olarak güncelledi


0

Android Studio'dayım. Bu hatayı min / targetSDKVersion 17'ye ayarlandığında aldım. Bu iş parçacığına bakarken minSDKVersion'ı değiştirmeye çalıştım, voila..problem düzeltildi. Şekil gidin .. :(

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

0

Build.gradle'ınızı kontrol ettiğinizden ve AVD'nizde kurulu olandan daha yeni bir SDK sürümü kullanmadığından emin olun. Bu sadece yine de Android Studio kullanıyorsanız.



0

Çözümüm, çalıştırma yapılandırmaları moduleaçılır listesini olarak wearabledeğiştirmekti android. (Google'ın I / O Planlama açık kaynak uygulamasını çalıştırmayı denediğimde bu hata bana oldu.) değişti moduleetmekandroid .

Konfigürasyonlara Run-> Edit Configurations...-> Generalsekmesine -> giderek erişebilirsiniz.Module: [drop-down-list-here]


0

Bildiride önerilen değişikliği yapmanın sorunumu çözmediğini buldum.

Düzeltme, Modül: uygulama için build.gradle dosyasındaki GradleScripts klasöründe bulundu.

Bu dosyanın (build.gradle) içinde aşağıdaki satır değiştirildi. minSdkVersion 22 Bu '22' değerini kendi telefonum için '19' olarak değiştirdim ve yapı hatasız tamamlandı.


0

Dostum, tavsiyem sanal cihazı değiştirmen. "Genimotion" uygulamasını indirin, kullanımı kolaydır ve ihtiyacınız olan pek çok cihaz vardır


0

Projenizin build.cradledosyasına gidin ve ekleyin

defaultConfig {
    minSdkVersion versions.minSdk

} '

Bu, uygulamanızın cihazınızın çalıştırdığı minimum SDK ile uyumlu olmasını sağlar.


-1

İyonik Android emülatör hatası INSTALL_FAILED_OLDER_SDK

Bu nedenle, temel olarak, uygulamanızda belirtilen targetSdkVersion'dan daha eski bir SDK sürümüne sahip olduğu için kurulumun başarısız olduğu anlamına gelir (bu bir Gradle sorunu). Sadece AndroidManifest.xml dosyasını düzenleyin ve aşağıdaki kodu ekleyin:

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

Günlerce çözüm aradıktan sonra, işte bu.

Benim için iyi çalışıyor!


-1

"Kurulum hatası: INSTALL_FAILED_OLDER_SDK" hatası görünürse, AndroidManifest'teki minSdkVersion sürümünü android öykünücüsünde belirtilenle değiştirmelisiniz: bkz. Ayarlar -> Telefon hakkında -> Android sürümü.


1
Merhaba @ cupoma58, hoş geldiniz. Bunun diğer cevaplardan ne farkı var?
Tiago Martins Peres 李大仁

-2

Yaşıyorum benim değiştirdik android:minSdkVersionve android:targetSdkVersioniçin 18gelen 21:

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

Şimdi uygulamamı başarıyla yükleyebilirim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.