Android Studio вступает в неправильный источник sdk
У меня есть следующие настройки build.gradle.
compileSdkVersion 21
buildToolsVersion '21.1.1'
defaultConfig {
minSdkVersion 18
targetSdkVersion 21
}
Проблема заключается в том, что, когда я вхожу в источник Android SDK на устройстве KitKat (19 на Genymotion или Device), он по-прежнему настаивает на вступлении в источник Android-21 вместо 19.
Изменение любого из приведенных выше параметров просто разбивает компиляцию моего приложения, так как у меня есть код v21. Все 19 вызовов защищены должным образом, а код работает на 19, только ссылка на исходный код неверна.
Приветствую вас, братья и сестры!
Ответы
Ответ 1
Изменить (7/1/2016):
Android Studio 2.2 исправляет это и переходит к источникам уровня API, который соответствует устройству, на котором вы на самом деле работаете (пока у вас установлены эти источники). Было объявлено здесь.
Для меня работало следующее обходное решение:
- Скомпилируйте приложение без каких-либо изменений.
- Запустите приложение в режиме отладки (и, возможно, перерыв в точке останова).
- Перейдите к
File
> Project Structure
, найдите свой модуль app
(или/и, возможно, любые другие модули) и измените Compile Sdk Version
на тот, который соответствует устройству, от которого вы отлаживаете (например, 19).
- Вставьте код рамки - он должен войти в SDK 19 источников.
Ответ 2
Что произойдет, если вы попытаетесь отладить исходный код на эмуляторе, который запускает изображение Android Lollipop для Android версии 5.0.x? Означает ли он правильный источник? Я тоже борюсь с этим, и я пришел к выводу, что проблема связана с настройками источника android поставщиком оборудования.
Я пытаюсь выполнить исходный код Android на устройстве samsung, работающем на 4.4.2 KitKat. Некоторые файлы выстраиваются хорошо, некоторые отключены несколькими строками, а остальные - из-за удара. Instrumentation.java - это тот, к которому я обычно попадаю. Он выключен на 5 строк.
Итак, почему я думаю, что поставщик настроил источник android? Я прошел через запуск приложения в ActivityThread.java и Instrumentation.java. Отладчик по-прежнему будет правильно работать, даже если источник не выстраивается в линию. Я перекрестно ссылаюсь на рутину, в которой я находился с исходным кодом Android на grepcode.com. В конце концов я вижу шаг отладчика в вызове функции, который отсутствует в любой версии java файла, опубликованной на grepcode.
Вот пример: ActivityThread.HandleLaunchActivity. Я был свидетелем отладчика, делающего эти вызовы
unscheduleGcIdler : present in android source
intent.getWindowStyle : not present. Samsung customization?
handleConfigurationChanged : present
Если я прав, тогда отладчик должен правильно выполнить эмулированное изображение, так как он не будет содержать настроенный код поставщика.
Ответ 3
Как уже упоминалось в другом ответе, он был исправлен в Android Studio 2.2 (отчет об ошибке).
Однако он все еще не работал у меня даже в Android Studio 3.0
Он начал работать только после того, как я проверил "Показывать альтернативный коммутатор источника" в настройках.
скриншот