Подтвердить что ты не робот

Ошибка [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:+'
}
4b9b3361

Ответ 1

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

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

Ответ 2

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

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>

Ответ 3

Изменить

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

к

android {
  compileSdkVersion 21
  buildToolsVersion '21.0.2'

Примечание android-L находится в одинарных кавычках, но 21 - нет. 21 - целое число, а не строка.

Ответ 4

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

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

compile 'com.twotoasters.RecyclerViewLib:library:[email protected]'

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

Ответ 5

Я столкнулся с этой проблемой. Это может произойти, если ваша версия min sdk и встроенные цели установлены на более высокий уровень API/ОС, чем ваш телефон работает. Если вы используете Android Studio, перейдите в раздел "Файл" > "Структура проекта" и отредактируйте настройки "relavent", а затем "Запустите снова".