स्थापना त्रुटि: INSTALL_FAILED_OLDER_SDK


88

मैं एंड्रॉइड डेवलपमेंट के लिए नया हूं और मैं चाहता हूं कि सबसे पहले Hello Worldएप्लिकेशन चल रहा हो। मैं ग्रहण आईडीई और एंड्रॉइड 4.0.3 संस्करण 15 एसडीके का उपयोग कर रहा हूं। मैंने एक ट्यूटोरियल साइट से सब कुछ कॉपी किया, लेकिन जब मैं एप्लिकेशन को चलाने की कोशिश करता 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पैकेज में मेरी कक्षा है : पैकेज 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

समस्या क्या है?

संपादित करें: एप्लिकेशन वर्चुअल डिवाइस पर नहीं चल रहा है: यहां मुझे लॉगकैट (कुछ पंक्तियों) पर मिलेगा:

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"में उल्लेख किया गया है। क्या यह एक टाइपो है?
कार्तिक

@ कार्तिक नहीं, यह टाइपो नहीं है। वह है जो विज़ार्ड उत्पन्न करता है।
ड्रैगोस

जवाबों:


113

यह android:targetSdkVersion="@string/app_name"आपकी मैनिफ़ेस्ट फ़ाइल में होने के कारण है ।
इसे इसमें बदलें:

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

targetSdkVersionएक पूर्णांक होना चाहिए, लेकिन @string/app_nameएक स्ट्रिंग होगा। मुझे लगता है कि यह त्रुटि का कारण है।

संपादित करें:
आपको गतिविधि के लिए intent-filterअपनी manifiestफ़ाइल में एक डिफ़ॉल्ट जोड़ना होगा । तब केवल एंड्रॉइड गतिविधि लॉन्च कर सकता है। अन्यथा आपको अपनी कंसोल विंडो में नीचे की त्रुटि मिलेगी।

[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। क्या मुझे इसे किसी तरह शुरू करना होगा? यदि हाँ, तो कैसे? यदि नहीं, तो यह काम क्यों नहीं कर रहा है?
ड्रैगोस

यदि आप ग्रहण से चलते हैं, तो इंस्टॉलेशन के बाद ऐप अपने आप शुरू हो जाएगा। तो गतिविधि AVD स्क्रीन पर दिखनी चाहिए। जब AVD शुरू होता है, तो यह लॉक की हुई स्थिति (स्क्रीन लॉक) में होगा, एक बार स्क्रीन को अनलॉक करने के बाद आप Hello Androidटेक्स्ट को देख सकते हैं ।
कार्तिक

हां, यह लॉक स्थिति में शुरू होता है, लेकिन जब मैं इसे अनलॉक करता हूं, तो यह मुझे वॉलपेपर और नीचे कुछ आइकन दिखाता है। नहीं है Hello Android
ड्रैगोस

Logcat पर कोई त्रुटि? आप onCreate () में कुछ लॉग स्टेटमेंट जोड़ सकते हैं और देख सकते हैं कि क्या वे लॉगकैट विंडो में दिखाए गए हैं।
कार्तिक

यदि Logcatआप Consoleग्रहण से मतलब रखते हैं , तो उत्तर नहीं है। मुझे कोई त्रुटि नहीं मिली। यदि आप लॉगकट द्वारा ऐसा नहीं करते हैं, तो कृपया मुझे बताएं कि मैं इसे कहां पा सकता हूं।
ड्रैगोस

26

इसका मतलब है कि आपके एवीडी के एंड्रॉइड का संस्करण कोड को संकलित करने के लिए उपयोग किए जा रहे संस्करण से पुराना है


आप AVD's (एंड्रॉइड वर्चुअल डिवाइसेस) का निर्माण करते हैं, जो कुछ निश्चित सुविधाओं (स्क्रीन आकार, कोड संस्करण, कैमरा स्थिति) को देखते हुए बनाया जाता है। एक बनाएँ जो आपके लक्ष्य एपीआई संस्करण के समान है। संगतता परीक्षण के लिए एक पुराना भी बनाएं।
ब्रज

15

यह त्रुटि तब होती है जब आपके डिवाइस पर स्थापित sdk-version (वास्तविक या वर्चुअल डिवाइस) android:minSdkVersionआपके Android मेनिफ़ेस्ट की तुलना में छोटा होता है।

आपको या तो अपनी कमी करनी होगी android:minSdkVersionया आपको अपने AVD के लिए एक उच्च एपीआई-संस्करण निर्दिष्ट करना होगा।

ध्यान रखें, यह हमेशा कम करने के लिए तुच्छ नहीं है android:minSdkVersionक्योंकि आपको यह सुनिश्चित करना है कि आपका ऐप वास्तविक स्थापित एपीआई के बारे में परवाह करता है और सही तरीकों का उपयोग करता है:

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!");
}

एंड्रॉइड-सपोर्ट-लाइब्रेरी और / या एक्शनबार-शरलॉक जैसी लाइब्रेरी का उपयोग करने से आपको विशेष रूप से पुराने संस्करणों के विजेट से निपटने में मदद मिलेगी।


13

मैं एंड्रॉइड स्टूडियो 0.8.1 का उपयोग कर रहा हूं। मेरे पास नीचे की तरह एक परियोजना की फ़ाइल है:

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

मेरा एमुलेटर एंड्रॉयड 4.0 था। इसलिए मैंने अपने एमुलेटर को संशोधित किया और एपीआई स्तर 4.0.3 (एपिलेवल 15) बनाया। इसने काम कर दिया।


3

मैंने यहां वर्णित सभी प्रतिक्रियाओं की कोशिश की, लेकिन मेरा समाधान 8 से 9 तक मेरी build.gradleफ़ाइल के अंदर बदल रहा था, minSdkVersionक्योंकि मेरे प्रोजेक्ट में कुछ पुस्तकालयों ने एपीआई 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"
        }
...
...
...

ऐसा लगता है कि यह कुछ शामिल है पुस्तकालय
मंत्री के

1

मेरे मामले में मैंने AndroidManifest.xml फ़ाइल में इस प्रोजेक्ट को संपादित किया, और जो मुझे रनटाइम के दौरान उपरोक्त त्रुटि दे रहा था:

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

जो मैंने अभी किया, वह था minSdkVersion = "17", को minSdkVersion = "16" में बदलना। मेरा परिणामी टैग यह था:

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

अब मुझसे त्रुटि नहीं हो रही है।

उम्मीद है की यह मदद करेगा


1

एक ही त्रुटि प्राप्त हुई, समस्या एंड्रॉइड एसडीके के संस्करण में अंतर थी जो एवीडी उपयोग कर रहा था और एंड्रॉइड मैनफ़ेस्ट फ़ाइल में संस्करण। मैं इसे सही करके हल कर सकता था

एंड्रॉयड: minSdkVersion = "16"

AVD के साथ मैच करने के लिए


1

यदि आप एक एपीके को स्थापित करने का प्रयास कर रहे हैं, तो आपको वही त्रुटि दिखाई देगी जिसका उपयोग करके बनाया गया था

compileSdkVersion "android-L"

यहां तक ​​कि Android 5.0 के अंतिम संस्करण को चलाने वाले उपकरणों के लिए भी। बस इसे बदलने के लिए

compileSdkVersion 21

1

नए एंड्रॉइड 6.0 मार्शमैलो के लिए फिक्स मेरा मुद्दा तब बना जब मैंने एपीआई 23 (एंड्रॉइड 6.0 मार्शमैलो) को बिल्ड टूल्स संस्करण को अपडेट करके 23.0.0 तक अपडेट किया:

android {
    buildToolsVersion '23.0.0'
...

और फ़ाइल> प्रोजेक्ट स्ट्रक्चर में गए , प्रॉपर्टीज टैब को चुना और फिर कंपाइल Sdk वर्जन को "API 23: Android 5.X (MNC)" और बिल्ड टूल्स वर्जन को "23.0.0" में अपडेट किया।


0

मैं एंड्रॉइड स्टूडियो पर हूं। मुझे यह त्रुटि तब हुई जब min / targetSDKVersion को 17 पर सेट किया गया था। इस थ्रेड को देखते हुए, मैंने minSDKVersion, voila..problem को बदलने का प्रयास किया। जाओ पता लगाओ.. :(

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

0

अपने build.gradle की जाँच करना सुनिश्चित करें और यह कि आपके AVD पर स्थापित की तुलना में एक नए SDK संस्करण का उपयोग नहीं करता है। हालाँकि, यदि आप Android Studio का उपयोग करते हैं तो ही।


0

यदि आप मेरी तरह बिल्कुल नए हैं, तो आपको सबसे पहले न्यूनतम एसडीके स्थापित करना होगा। लिंक की जाँच करें।

इसने मेरे लिए पूरी तरह से काम किया:

एक अच्छा समाधान के साथ एक ही समस्या अन्य पोस्ट

सादर,

खालिद।


0

मेरे समाधान रन विन्यास बदलने के लिए था moduleड्रॉप-डाउन सूची से wearableकरने के लिए android. हर बार जब मैं मैं जब तक भागने की कोशिश की है (जब मैं गूगल के आई / ओ Sched ओपन-सोर्स एप्लिकेशन चलाने का भी प्रयास यह त्रुटि मुझे क्या हुआ।) यह स्वचालित रूप से विन्यास पॉप अप होगा बदल moduleकरने के लिएandroid

Run-> Edit Configurations...-> General- टैब -> पर जाकर आप कॉन्फ़िगरेशन एक्सेस कर सकते हैंModule: [drop-down-list-here]


0

मैंने पाया कि प्रकट में अनुशंसित परिवर्तन करने से मेरी समस्या हल नहीं हुई।

यह सुधार Gradlecripts फ़ोल्डर में पाया गया था, मॉड्यूल: अनुप्रयोग के लिए build.gradle फ़ाइल में।

इस फ़ाइल के अंदर (बिल्ड.ग्रेडल) निम्नलिखित लाइन को संशोधित किया गया था। minSdkVersion 22 मैंने अपने विशेष फोन के लिए इस '22' मान को '19' में बदल दिया और बिल्ड बिना त्रुटि के पूरा हो गया।


0

मेट, मेरी सलाह वर्चुअल डिवाइस को बदलने की है। "जेनिमिशन" एप्लिकेशन डाउनलोड करें, इसका उपयोग करना आसान है और आपको किसी भी उपकरण की बहुत आवश्यकता है


0

अपने प्रोजेक्ट की build.cradleफ़ाइल में जाएं और जोड़ें

defaultConfig {
    minSdkVersion versions.minSdk

} `

इससे यह होता है कि आपका एप्लिकेशन आपके डिवाइस पर चल रहे न्यूनतम एसडीके के अनुरूप है।


-1

आयोनिक Android एमुलेटर त्रुटि INSTALL_FAILED_OLDER_SDK

तो, मूल रूप से इसका मतलब है कि आपके ऐप में निर्दिष्ट targetSdkVersion की तुलना में पुराने एसडीके संस्करण होने के कारण इंस्टॉलेशन विफल हो गया है (यह एक ग्रेडल इश्यू है)। बस AndroidManifest.xml फ़ाइल को संपादित करें और निम्नलिखित कोड जोड़ें:

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

दिनों के बाद समाधान की तलाश है, बस।

मेरे लिए ठीक काम करता है!


-1

यदि "इंस्टॉलेशन एरर: INSTALL_FAILED_OLDER_SDK" त्रुटि दिखाई देती है, तो आपको एंड्रॉइड मैन में सबसे छोटा एंड्रॉइड एमुलेटर में minSdkVersion का संस्करण बदलना होगा: सेटिंग्स देखें -> फोन के बारे में -> एंड्रॉइड वर्जन।


1
हाय @ कपोमा ५oma, स्वागत है। यह कैसे अलग है कि अन्य जवाब?
टिआगो मार्टिंस पेरेज

-2

मैं अपने को बदल दिया है android:minSdkVersionऔर android:targetSdkVersionकरने के लिए 18से 21:

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

अब मैं अपने ऐप को सफलतापूर्वक इंस्टॉल कर सकता हूं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.