Ошибка слияния манифеста: use-sdk:minSdkVersion 10 не может быть меньше, чем версия L, объявленная в библиотеке com.android.support:appcompat-v7:21.0.0-rc1

Получил указанную выше ошибку после загрузки версии предварительного просмотра L в Android Studio, когда в моем проекте было minSdkVersion 19.

Кроме того, при настройке mindSdkVersion, как показано ниже:

defaultConfig {
....
          minSdkVersion 'L'
....
    }

Я получаю десятки ошибок, как показано ниже, относительно ресурсов из AppCompat-v7-21:

/home/user/workspace/project/build/intermediates/exploded-aar/com.android.support/appcompat-v7/21.0.0-rc1/res/values-v21/values.xml
Error:Error retrieving parent for item: No resource found that matches the given name '@android:TextAppearance.Material.SearchResult.Subtitle'.

Итак, у меня есть 2 вопроса:

  1. Почему AS жалуется на minSdkVersion? Я предполагаю, потому что AppCompat-v7 21 поддерживает только выпуск L; но почему ? Кроме того, будет ли он поддерживать только выпуск L, когда он будет официально выпущен осенью? Потому что это было бы проблемой... Или это просто временное ограничение для того, чтобы приложения не загружались в Play Store, как указано в Keynote Google I/O 2014?
  2. Почему AppCompat-v7 21 жалуется на эти ошибки, поскольку я уже установил для mindSdkVersion значение L?

person Bogdan Zurac    schedule 26.06.2014    source источник
comment
включите номер версии также с библиотекой поддержки... в build.gradle compile 'com.android.support:appcompat-v7:19.+'   -  person deniz    schedule 14.08.2014


Ответы (6)


Ответ, указанный здесь, может работать неправильно, так как ваше приложение будет работать только для Android L.

Чтобы сохранить обратную совместимость со старыми версиями ОС Android, измените зависимость gradle

От:

compile 'com.android.support:appcompat-v7:+'

To:

compile 'com.android.support:appcompat-v7:20.+'

Обратите внимание, что ошибка жалуется на com.android.support:appcompat-v7:21.0.0-rc1, причина этого в том, что использование appcompat-v7:+ скажет gradle импортировать последнюю зависимость библиотеки appcompat-v7, к сожалению, эта последняя версия работает только для Android L, поэтому мы должны указать на предыдущую версию.

Надеюсь, Google исправит это в ближайшем будущем.

person David_E    schedule 26.06.2014
comment
Эта проблема в коде Google: code.google.com/p/android/ issue/detail?id=72991 , помеченный как выпущенный 28 июля 2012 г. - person Mixaz; 29.10.2014

Способ, который сработал для меня, заключался в установке бета-версии Android Studio (не предварительной версии, бета-версия была запущена сегодня как часть IO).

Удалите предварительную версию, установите бета-версию и откройте свой проект. Вам будет предложено использовать SDK проекта или Studio SDK, используйте SDK Android Studio.

Перейдите в файл local.properties ваших проектов и убедитесь, что sdk.dir удваивает любые обратные косые черты (), например. \.

Перейдите в раздел «Структура проекта» > «SDK» и убедитесь, что это указывает на Android SDK на моем компьютере: C:\Program Files (x86)\Android\android-studio\SDK.

Затем в ваших проектах и ​​любых библиотеках у вас есть файлы build.gradle, где у вас есть

compile 'com.android.support:support-v4 Измените его на compile 'com.android.support:support-v4:20+

Повторно синхронизируйте файлы gradle и все исправлено

person Boardy    schedule 26.06.2014
comment
Android Studio Beta 0.8.1 доступна здесь: tools.android.com/recent/androidstudiobetareleased. - person Stuartsoft; 27.06.2014

Чтобы заставить работать с рабочей версией, просто измените зависимости gradle следующим образом:

dependencies {
    compile 'com.android.support:gridlayout-v7:19.0.1'
    compile 'com.android.support:appcompat-v7:19+'
    ...
}

был:

compile 'com.android.support:appcompat-v7:+'

N.B.

Я обновил Tools & Extras в диспетчере SDK.

после того, как проект был сломан, я исправил его, как показано выше.

Пока не обновляю андроид L&4.4W (на сегодня хватит багов :-( )

person BubbaGum    schedule 28.06.2014

Спасибо Давид за ответ!

я должен был изменить

compile 'com.android.support:support-v13:+'

To:

compile 'com.android.support:support-v13:20.+'

И теперь все работает идеально.

person user3091593    schedule 16.07.2014

Просто в дополнение: другие ответы здесь не решили проблему для меня, но я нашел альтернативный способ исправить проблему android-l в Android Studio 0.8.0. После того, как я изменил зависимости в build.gradle, проблема, к сожалению, продолжала возникать, что код будет говорить OLD_SKD. Я использую Galaxy S2.

Помимо изменения всего на :19+:

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

Это все равно не сработало, поэтому мне пришлось вернуться везде, где только можно:

android {
    compileSdkVersion 19
    buildToolsVersion '19.1'
    defaultConfig {
        minSdkVersion 11
        targetSdkVersion 19
        versionCode 1
        versionName '1.0'
    }

Теперь приложение снова работает на телефоне. Я, вероятно, должен получить новый мобильный телефон, но пока я надеюсь, что это может помочь кому-то.

person Oakenwind    schedule 27.06.2014
comment
Причина, по которой у вас все еще была проблема, заключалась в том, что у одной из ваших зависимостей была подзависимость, которая захватывала последнюю версию библиотеки поддержки. - person Jason Robinson; 14.07.2014

person    schedule
comment
Итак, я могу скомпилировать L SDK и настроить Android 4.X? - person Dimillian; 30.06.2014
comment
по-прежнему сбой [INSTALL_FAILED_OLDER_SDK]:/ на устройствах Android 4.2 - person Dimillian; 30.06.2014
comment
О, дерьмо, я неправильно прочитал, извините. Нет, я пробовал это перед обновлением своего N5, и это не сработало. Но меня больше интересовало, чтобы мое приложение работало во всех версиях, а не предназначалось и не компилировалось для L. Я думаю, это именно то, что они описали в ключевом докладе (вы пока не можете использовать L-приложения в Play). - person Bogdan Zurac; 30.06.2014
comment
Итак, что я сделал, так это вернулся к 19, и теперь я больше не получаю увеличенную ошибку, и она запускается как на Android L, так и на предыдущей версии. Похоже на ошибку кеша или что-то в этом роде. - person Dimillian; 30.06.2014
comment
Вы также можете использовать 20. См. выше, обновил мой ответ, чтобы отразить все изменения. - person Bogdan Zurac; 30.06.2014
comment
То же самое. Он не позволит мне развернуть API 19 и 16. - person somerandomusername; 30.06.2014
comment
Как получилось, что я даже удалил sdk и собрал инструменты 21 - Android Studio имеет только 19 доступных в репозитории поддержки, и это все еще происходит? - person Michal; 30.06.2014
comment
@Andrew Эндрю, я заметил, что вы поместили еще один раздел Android {} в свой раздел зависимостей {}. Это ошибка или я тоже должен туда поставить? В основном у меня сейчас есть зависимости android {...} {...}. Но, согласно вашему сообщению, мне нужно добавить еще один раздел android {...} внутри зависимостей, верно? Извините, я все еще новичок в Gradle. - person Ashok SoThree; 30.06.2014
comment
@AshokSoThree нет, внутри зависимостей {} нет Android{}. Браслеты действительно сбивают с толку, но проверьте еще раз. - person Bogdan Zurac; 30.06.2014
comment
Есть новости о том, когда Google исправит com.android.support:appcompat-v7:21.0.0-rc1? А если нет, то где искать эту информацию, когда она доступна? Заранее спасибо! - person Forrest Bice; 03.07.2014
comment
Я могу строить только с использованием compileSdkVersion 'android-L'. Но тогда я не могу развернуть ни одну более старую версию. Другие исправления не работают. Возможно, некоторые из моих библиотек ссылаются на v4+. Как это исправить? Я не могу изменить библиотеки. Никакие обходные пути не работают! - person User; 04.08.2014
comment
Отличное, простое и идеальное решение. Просто измените compileSdkVersion 21 на «android-L», т.е. compileSdkVersion «android-L» - person sandeepmaaram; 14.01.2015