Ошибка [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:+'
}
Ответы
Ответ 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", а затем "Запустите снова".