Android Studio:失败[INSTALL_FAILED_OLDER_SDK]

时间:2014-06-28 09:04:19

标签: android gradle android-studio

今天我已经下载了Android Studio v 0.8.0 beta。我试图在SDK 17上测试我的应用程序。 Android工作室错误Failure [INSTALL_FAILED_OLDER_SDK] 这是我的android清单

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.vahe_muradyan.notes" >
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".Main_Activity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

似乎android studio在build.gradle中使用配置。这是build.gradle

    apply plugin: 'com.android.application'

android {
    compileSdkVersion 'L'
    buildToolsVersion "20.0.0"

    defaultConfig {
        applicationId "com.vahe_muradyan.notes"
        minSdkVersion 8
        targetSdkVersion 'L'
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:19.+'
}

23 个答案:

答案 0 :(得分:27)

有我的配置支持L和旧版本的android:

apply plugin: 'com.android.application'

android {
    buildToolsVersion "20.0.0"

    defaultConfig {
        applicationId "com.example.uladzimir_klyshevich.myapplication"
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }


    productFlavors {
        l {
            minSdkVersion 'android-L'
            targetSdkVersion 'android-L'
            compileSdkVersion 'android-L'
        }
        old {
            minSdkVersion 10
            targetSdkVersion 20
            //TODO comment second line if build is not compiles for "L"
            compileSdkVersion 20
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    lCompile 'com.android.support:appcompat-v7:21.+'
    oldCompile 'com.android.support:appcompat-v7:19.1.0'
}

结果你会有口味:

oldDebug
oldRelease
lDebug
lRelease

并且可以在旧版本的android上安装您的应用程序。

答案 1 :(得分:12)

在磨损模块中的build.gradle文件中进行这些更改

compileSdkVersion 20
targetSdkVersion 20

所以最终的 wear / build.gradle 内容将是:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 20
    buildToolsVersion "20.0.0"

    defaultConfig {
        applicationId "your package name"
        minSdkVersion 20
        targetSdkVersion 20
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.google.android.support:wearable:+'
    compile 'com.google.android.gms:play-services-wearable:+'
}

答案 2 :(得分:6)

我使用Android Studio Beta版本0.8.1,我遇到了同样的问题。我现在通过将AVD(我使用Genymotion)更改为API 19来解决我的问题。 这是我的build.gradle文件

apply plugin: 'com.android.application'

android {
    compileSdkVersion 19
    buildToolsVersion "19.1.0"

    defaultConfig {
        applicationId "com.example.daroath.actionbar"
        minSdkVersion 14
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
}

enter image description here

希望这有帮助!

答案 3 :(得分:4)

我遇到了同样的问题并通过使用sdk管理器下载api level 20并更改指向 android-L 的每个字符串来解决它。我这样做是因为我没有kitkat设备而且不想使用模拟器。 请参阅图像下载标记的图像。

这是我的构建配置:

apply plugin: 'com.android.application'

android {
compileSdkVersion 20//changed this from default
buildToolsVersion "20.0.0"

defaultConfig {
    applicationId "com.example.subash.test"
    minSdkVersion 12//changed this from default
    targetSdkVersion 20//changed this from default
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        runProguard false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
}

答案 4 :(得分:2)

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

AndroidManifest.xml在Android Studio(Beta)0.8.2上为我工作。

答案 5 :(得分:2)

经过大量研究后,我找到了解决这个巨大错误的解决方案,我正在奋斗2天。

而不是改变minSdkVerison&amp; build.gradle中的targetSdkVersion

只需打开清单文件并使用此

即可
<uses-sdk 
android:minSdkVersion="17" 
android:targetSdkVersion="21"/

答案 6 :(得分:2)

AndroidManifest.xml文件中的

将user-sdk更改为旧版本  <uses-sdk android:minSdkVersion="19"/>

答案 7 :(得分:2)

  

失败[INSTALL_FAILED_OLDER_SDK]

基本上意味着安装失败,原因是目标位置(AVD / Device)的SDK版本低于应用中指定的targetSdkVersion

发件人

apply plugin: 'com.android.application'

android {

compileSdkVersion 'L' //Avoid String change to 20 without quotes
buildToolsVersion "20.0.0"

defaultConfig {
    applicationId "com.vahe_muradyan.notes"
    minSdkVersion 8
    targetSdkVersion 'L' //Set your correct Target which is 17 for Android 4.2.2
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        runProguard false
        proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
    }
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])

compile 'com.android.support:appcompat-v7:19.+' // Avoid Generalization 
// can lead to dependencies issues remove +

}

apply plugin: 'com.android.application'

android {
compileSdkVersion 20 
buildToolsVersion "20.0.0"

defaultConfig {
    applicationId "com.vahe_muradyan.notes"
    minSdkVersion 8
    targetSdkVersion 17
    versionCode 1
    versionName "1.0"
}
buildTypes {
    release {
        runProguard false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 
'proguard-rules.pro'
    }
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])

compile 'com.android.support:appcompat-v7:19.0.0'
}

这是从eclipse到现在的Android Studio 0.8-.8.6

的常见错误

Android Studio中要避免的事情(目前为止)

  • 避免使用字符串来设置API级别/数字
  • 避免概括依赖性+具体

答案 8 :(得分:2)

如前所述,切换到构建19之前是建议的路由,直到v20“固定”。这个帖子帮助我解决了这个问题,但似乎这里也发布了类似的答案。 https://code.google.com/p/android/issues/detail?id=72840

答案 9 :(得分:1)

真正的问题是,使用vanilla Android Studio v 0.8 beta,它只会安装/识别SDK 20,即android L.为了定位另一个complieSDK,您需要通过SDK管理器安装它。设置完成后,您可以将compileSDK更改为较低版本,它应该可以正常工作。

您可能还想限制兼容性库,需要限制它使用最新版本的库,因此请将依赖性更改为:

compile('com.android.support:appcompat-v7:19.1.0') {
    // really use 19.1.0 even if something else resolves higher
    force = true
}

答案 10 :(得分:1)

只需转到build.gradle(Module:App)并将minSdkVersion更改为您使用模拟器的任何内容。

示例:

defaultConfig {
        applicationId "com.example.raghu.sample"
        // Change the version in following line
        minSdkVersion 10 // <-- Whatever you are using with Emulator
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }

答案 11 :(得分:1)

我解决了这个问题。 我刚刚将androidS的compileSdk版本修改为19 定位我的nexus 4.4.4。

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.12.2'
    }
}
apply plugin: 'com.android.application'

repositories {
    jcenter()
}

android {
    **compileSdkVersion 'android-L'** modified to 19
    buildToolsVersion "20.0.0"

    defaultConfig {
        applicationId "com.antwei.uiframework.ui"
        minSdkVersion 14
        targetSdkVersion 'L'
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    **compile 'com.android.support:support-v4:21.+'** modified to compile 'com.android.support:support-v4:20.0.0'
}

如何通过ide修改值。

选择文件 - &gt;项目结构 - &gt;方面 - &gt; android-gradle然后将编译的Sdk版本从android_L修改为19

抱歉,我没有足够的声誉来添加图片

答案 12 :(得分:1)

我最初进入SDK Manager并更新了它设置为更新的所有内容。

我还在SDK版本中添加了我在Droid上安装的Android版本......版本2.3.4(10)

我认为没有真正解决任何问题,并且在安装SDK后按照建议重新启动Android Studio后,我在build.gradle文件中将minSdkVersion更改为8

然后我就可以将应用程序下载到我的Droid。

defaultConfig {
    applicationId "com.cmcjr.chuck.droid_u"
    minSdkVersion 8
    targetSdkVersion 20
    versionCode 1
    versionName "1.0"
}

这是安装在Ubuntu 12.04上的Android Studio

答案 13 :(得分:0)

在build.gradle中更改minSdkVersion 17或更高版本。

答案 14 :(得分:0)

您需要更新。

这是我目前的解决方案(09/2015)。

在Android Studio搜索中。

Menu --> Help --> check for update

Upate和问题解决了!!

祝你好运

答案 15 :(得分:0)

检查build.gradle(module:app)[gradle脚本内部]内的最低API级别。 它应该等于或低于您使用的设备

答案 16 :(得分:0)

minSdkVersion更有意义的另一个地方是味道:

productFlavors {
    dev {
        minSdkVersion 22
    }
    prod {
        minSdkVersion 9
    }
}

minSdkVersion(22)将不会安装在API级别低于22的开发设备上。

答案 17 :(得分:0)

您的设备早于minSDK,请在build.gradle

中修改minSdkVersion

答案 18 :(得分:0)

检查&#39; minSdkVersion&#39;在build.gradle中

默认项目使用最新的API创建它,因此如果您的手机尚未更新(例如 minSdkVersion 21 ),这可能就是您的情况。

确保 minSdkVersion 值与设备API版本匹配,或者设备的版本是否更高。

示例:

defaultConfig {
    applicationId 'xxxxxx'
    minSdkVersion 16
    targetSdkVersion 21
    versionCode 1
    versionName "1.0"
}

答案 19 :(得分:0)

尝试更改你的sdk min版本

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

答案 20 :(得分:0)

支持Android L的另一种方法是为Gradle使用自定义lpreview属性。例如:

lpreview = hasProperty('lpreview')

apply plugin: 'com.android.application'

android {
    compileSdkVersion lpreview ? "android-L" : 19
    buildToolsVersion "20.0.0"

    productFlavors { lpreview ? lpreview{} : classic{} }

    defaultConfig lpreview ? {} : {
        minSdkVersion 14
        targetSdkVersion 19
    }

现在,您可以使用以下内容构建应用程序:

./gradlew clean
./gradlew -Plpreview assembleDebug

./gradlew -Plpreview installLpreviewDebug

通过这种方式,您可以使用适用于Android L的lpreview属性构建应用,而不使用以前版本的应用。

答案 21 :(得分:0)

类似于之前的一些帖子 - 我去了SDK Manager并卸载了v20和版本L.然后我安装了版本19,这个问题解决了,我可以使用我的Android设备进行调试,没有错误。

答案 22 :(得分:0)

刚刚安装了Android Studio v 0.8.1 beta并遇到了针对SDK 19的同样问题。

从adt-bundle复制到android-studio,将build.gradle更改为:

compileSdkVersion 19 targetSdkVersion 19

然后项目 - &gt; app - &gt;打开模块设置(又名项目结构):将编译sdk版本更改为19。

现在工作正常。