【问题标题】:Android Studio : Failure [INSTALL_FAILED_OLDER_SDK]Android Studio:失败 [INSTALL_FAILED_OLDER_SDK]
【发布时间】:2014-06-28 09:04:19
【问题描述】:

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

    <?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.+'
}

【问题讨论】:

  • 将此代码添加到您的 AndroidManifest.xml
  • 同样的错误。 pkg: /data/local/tmp/com.vahe_muradyan.notes 失败 [INSTALL_FAILED_OLDER_SDK]
  • 你测试了哪台设备?
  • SDK 版本 17 , Android 4.2.1
  • Eclipse 在我的设备上很好地测试了应用程序。今天我已经下载了 Android Studio,我现在遇到了这个错误。

标签: android gradle android-studio


【解决方案1】:

有我的配置支持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上安装你的应用程序。

【讨论】:

  • 感谢您提供这个:)
  • 嗯……对我来说,这个新信息让我更加困惑。我什至还没有消化“Android-L”是什么。也许最终我可能想要各种“产品风味”,但现在,我只想将一个或任何一组值加载到运行 v4.4.4 的 Nexus-7 中。我的想法是,谷歌现在不鼓励在清单中继续使用旧的“”信息,因为当我把它放在那里时,当使用 Android-Studio 0.8.1 时,它会在屏幕上闪烁它打算忽略该信息,因为据推测,它现在正在其他地方。
  • 这是针对 mobile/build.gradle 还是 wear/build.gradle?两者似乎都不起作用,因为 IDE 抱怨“无法解析符号 'compileSdkVersion'”
  • 这适用于 mobile/build.gradle。 Wear 是另一个项目,你可以用任何其他 sdk 编译他。
  • 它给出的错误无法解析产品风格中的符号'compileSdkVersion'。
【解决方案2】:

在wear 模块中的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:+'
}

【讨论】:

  • 谢谢,我遇到了类似的问题。似乎在这个神秘的 build.gradle 文件中将“L”更改为 20 可以解决问题。没想到我会这么说,但我发现自己错过了 Eclipse...
  • sdk 20和'android-L'有什么区别?
  • 可以在Build.VERSION_CODES中找到如下: public static final int KITKAT = 19;公共静态最终 int KITKAT_WATCH = 20;公共静态最终 int L = 10000;
【解决方案3】:

我使用的是 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'])
}

希望对您有所帮助!

【讨论】:

  • 当您说更改avd时,您是指android清单文件中的版本吗?你在文本编辑器中编辑过它吗?以前是什么?
  • 不,在android studio中,您更改“android sdk”的方式不再是在清单文件中,而是您在“gradle.build”文件中更改它。因为我的错误经验是当我将我的 gradle.build 文件设置为 defaultConfig { applicationId "com.example.daroath.actionbar" minSdkVersion 14 targetSdkVersion 19 versionCode 1 versionName "1.0" } 我需要选择具有 API19 或更高版本的 AVD 来运行它。
【解决方案4】:

我遇到了同样的问题,并通过使用 sdk 管理器下载 api 级别 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'])
}

【讨论】:

  • 这些配置可以使用 Material 主题吗?
  • 为此,您将需要模拟器或具有材料主题的设备
  • 啊哈!现在我明白了(盲人说)!所以,现在无论我在新布局中添加什么值,对于“targetSdkVersion”,Android Studio 都会弹出一个错误,要求我首先安装该版本的 SDK,然后重新同步项目。 SO:问题是,即使我的 SDK 经理说所有这些不同的 SDK 都已安装(它们一直都是),突然间,这个新的 Android-Studio 必须在不同的地方寻找,才能找到它们。 (我还不知道修复。不建议将我的所有 SDK 从 10 删除到 20,所以我会静静地坐着,直到其他人发现需要的调整。)
  • @Dave 你能准确解释你的问题吗? targetsdkversion 和 compilesdk 版本都需要根据您拥有的内容进行更改(无需在 AS 的清单中指定应用程序版本)。我没有 android 4.4L 设备所以我改变了它。以上对我有用,所以它也应该对你有用
  • 对不起......所以今天,我按照你的食谱,摆脱了我的“Android-L”废话,并返回放入编号的 sdk 值。这导致了另一个问题,在那个现在构建不再工作......它说它找不到我之前安装的任何数字sdk。所以,我认为它只能找到新添加的 Android-L sdk,所以当我要求更旧的东西时,我遇到了另一个问题。 (叹气。)
【解决方案5】:

如前所述,切换到 build 19 是此处的建议路线,直到 v20 “修复”。该线程帮助我解决了这个问题,但似乎也已在此处发布了类似的答案。 https://code.google.com/p/android/issues/detail?id=72840

【讨论】:

  • 第二个。我删除了 v20 和 L 的构建工具和 android 映像,并替换为 19.1 构建工具和 Level 19。然后我删除了项目并重新创建它,现在我可以运行我的程序了。
【解决方案6】:
<uses-sdk android:minSdkVersion="19"/>

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

【讨论】:

    【解决方案7】:

    在 AndroidManifest.xml 文件中将 user-sdk 更改为旧版本 &lt;uses-sdk android:minSdkVersion="19"/&gt;

    【讨论】:

      【解决方案8】:

      更改文件 AndroidManifest.xml

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

      【讨论】:

        【解决方案9】:

        经过大量研究,我找到了解决这个我苦苦挣扎 2 天的巨大错误的方法。

        而不是更改 build.gradle 中的 minSdkVerison 和 targetSdkVersion

        只需打开 Manifest 文件并使用它

        &ltuses-sdk 安卓:m​​inSdkVersion="17" android:targetSdkVersion="21"/

        【讨论】:

          【解决方案10】:

          失败 [INSTALL_FAILED_OLDER_SDK]

          基本上意味着安装失败,因为目标位置(AVD/设备)的 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 级别/编号
          • 避免泛化依赖关系+具体化

          【讨论】:

            【解决方案11】:

            真正的问题是,使用 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
            }
            

            【讨论】:

              【解决方案12】:

              我解决了这个问题。 我刚刚将 compileSdk 版本从 android_L 修改为 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 修改值。

              选择文件->Project Structure -> Facets -> android-gradle 然后将compile Sdk Version从android_L修改为19

              对不起,我没有足够的声誉来添加图片

              【讨论】:

                【解决方案13】:

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

                我还为我在 Droid 上的 Android 版本添加了 SDK 版本...版本 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

                【讨论】:

                  【解决方案14】:

                  只需转到 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"
                      }
                  

                  【讨论】:

                    【解决方案15】:

                    刚刚安装了 Android Studio v 0.8.1 测试版并遇到了针对 SDK 19 的相同问题。

                    从adt-bundle复制19到android-studio,把build.gradle改成:

                    compileSdkVersion 19 targetSdkVersion 19

                    然后项目 -> 应用程序 -> 打开模块设置(又名项目结构):将 compile sdk 版本更改为 19。

                    现在可以正常工作了。

                    【讨论】:

                      【解决方案16】:

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

                      【讨论】:

                        【解决方案17】:

                        另一种支持 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 属性构建您的应用,而在以前的版本中不使用它。

                        【讨论】:

                          【解决方案18】:

                          检查 build.gradle 中的“minSdkVersion”

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

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

                          例子:

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

                          【讨论】:

                            【解决方案19】:

                            您的设备早于 minSDK ,在 build.gradle 中编辑 minSdkVersion

                            【讨论】:

                              【解决方案20】:

                              尝试更改您的 sdk min 版本

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

                              【讨论】:

                                【解决方案21】:

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

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

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

                                【讨论】:

                                  【解决方案22】:

                                  你需要更新。

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

                                  在 Android Studio 中搜索。

                                  Menu --> Help --> check for update
                                  

                                  更新并解决问题!

                                  祝你好运

                                  【讨论】:

                                    【解决方案23】:

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

                                    【讨论】:

                                      【解决方案24】:

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

                                      【讨论】:

                                        猜你喜欢
                                        • 1970-01-01
                                        • 1970-01-01
                                        • 1970-01-01
                                        • 1970-01-01
                                        • 1970-01-01
                                        • 2014-01-04
                                        • 1970-01-01
                                        • 1970-01-01
                                        • 1970-01-01
                                        相关资源
                                        最近更新 更多