Сбой [INSTALL_FAILED_OLDER_SDK] Android-L

Я пытаюсь использовать новый CardView из Android L. Я обновил все в диспетчере SDK, но продолжаю получать следующую ошибку:

Ошибка [INSTALL_FAILED_OLDER_SDK]

Это мой build.gradle файл:

apply plugin: 'android'

android {
    compileSdkVersion 'android-L'
    buildToolsVersion '20.0.0'

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

dependencies {
    // Support Libraries
    compile 'com.android.support:support-v4:19.1.0'
    compile 'com.android.support:appcompat-v7:19.1.0'
    compile 'com.android.support:gridlayout-v7:19.1.0'
    compile 'com.android.support:mediarouter-v7:19.1.0'
    // compile 'com.android.support:support-v13:19.1.0'
    compile 'com.android.support:recyclerview-v7:+'
}

person TomCB    schedule 27.06.2014    source источник


Ответы (5)


Недавно здесь был пост о несовместимости L SDK с предыдущими версиями Android. Я копался в репозиториях AOSP уже несколько часов и определил, что инструменты ведут себя таким образом, потому что они предназначены для разных платформ предварительного просмотра. Если вы компилируете предварительную версию SDK (android-L), инструменты сборки заблокируют minSdkVersion и targetSdkVersion на том же уровне API. Это приводит к тому, что созданное приложение невозможно установить на устройства с более ранними версиями Android, даже если ваше приложение не делает ничего конкретного для L. Что еще хуже, новые библиотеки поддержки (CardView, RecyclerView, Palette и т. ) также заблокированы на уровне L API, хотя, судя по именам их репозиториев, они должны прекрасно работать на уровне API 7 (и они работают!).

См. мой пост Reddit об этом здесь с обходным решением.

person Eddie    schedule 27.06.2014
comment
Спасибо за отличную статью! Теперь я полностью понимаю :) - person TomCB; 27.06.2014
comment
Хотя теоретически этот ответ может дать ответ на вопрос, лучше включить сюда основные части ответа и предоставить ссылка для ознакомления. - person hichris123; 03.07.2014
comment
поэтому вам следует следовать руководству на reddit.com/r/androiddev/comments/ 297xli/, и вы сможете установить его на старые устройства одновременно с компиляцией с Android L. - person Gabor; 22.09.2014

Как только вы решите вышеуказанные проблемы, как упоминал Эдди. Вы также можете столкнуться с другой ошибкой;;

Error:Error retrieving parent for item: No resource found that matches the given name 'android:Theme.Material.Light'.

Это будет присутствовать в вашем файле styles.xml. Быстрое исправление состоит в том, чтобы заменить его следующим:

<?xml version="1.0" encoding="utf-8"?>
 <resources>
<!--<style name="AppTheme" parent="android:Theme.Material.Light">-->
<style name="AppTheme" parent="android:Theme.Holo.Light">
</style>

person Skillachie    schedule 16.07.2014

Сдача

android {
    compileSdkVersion 'android-L'
    buildToolsVersion '20.0.0'

to

android {
  compileSdkVersion 21
  buildToolsVersion '21.0.2'

Обратите внимание, что android-L заключено в одинарные кавычки, а 21 — нет. 21 — это целое число, а не строка.

person VJ Vélan Solutions    schedule 28.10.2014

Когда вы компилируете с L, это фактически вносит изменения во время компиляции, устанавливая для minsdkversion значение L. Если вы хотите использовать RecyclerView или CardView, я бы порекомендовал проверить RecyclerViewLib. RecyclerView и CardView были перемещены в эту библиотеку, чтобы не было проблем с минимальной версией L. Автор также объяснил в своем сообщении в блоге, как весь код, связанный с L, был удален для сделать его безопасным для использования.

Чтобы добавить RecyclerViewLb в свой проект, просто добавьте следующую строку в свои зависимости в файле build.gradle:

compile 'com.twotoasters.RecyclerViewLib:library:1.0.+@aar'

Затем вы не хотите добавлять compile 'com.android.support:recyclerview-v7:+' в свой build.gradle, так как вы получите это через RecyclerViewLib.

person MinceMan    schedule 13.09.2014

Я только что столкнулся с этой проблемой. Это может произойти, если ваша минимальная версия SDK и встроенные цели установлены на более высокий уровень API/версию ОС, чем работает ваш телефон. Если вы используете Android Studio, перейдите в меню «Файл» > «Структура проекта» > и отредактируйте соответствующие настройки, а затем снова «Выполнить».

person SE13013    schedule 15.07.2015