2016-10-26 2 views
3

Что такое надежный процесс для поддержания проекта, разработанного в Android Studio в актуальном состоянии, когда Google выпускает обновления для Android SDK?Определение новейшего стабильного Android SDK

Я только хочу обновить до последних стабильных выпусков, а не бета-версий. Например, в настоящее время меня не интересует SDK Android 7.1.1 (API 25), поскольку он все еще находится в режиме предварительного просмотра. Точно так же я не хочу бета-версию любой библиотеки поддержки Android, даже если lint скажет, что она доступна.

В частности, как определить, какие пакеты установить из диспетчера SDK, и как определить, какие версии указать в build.gradle для объявлений, таких как следующее?

compileSdkVersion xxx 
... 
targetSdkVersion xxx 
... 
compile 'com.android.support:support-v4:xxx' 

Обновление: Для дальнейшего фона, увидеть новый выпуск Android Studio, Lint prompts upgrade to partially distributed SDKs, движимый комментарию обсуждения.

+1

Установите 'compileSdkVersion' на самый высокий уровень API для производства (в настоящее время 24). Установите «targetSdkVersion» на то, что имеет смысл для вашего приложения (24, если вы готовы к этому, ниже, если вы этого не сделаете). Основная версия библиотек поддержки должна соответствовать вашей 'compileSdkVersion' и использовать в ней последний минимальный/patchlevel. – CommonsWare

+0

Я ищу независимый от версии процесс, а не конкретные ответы только на сегодня. Например, как быстро определить, что уровень API 24 является последним стабильным в наши дни? Есть ли каноническая веб-страница, которая публикует это? Библиотеки поддержки имеют незначительные выпуски. Как определить их последние стабильные версии? –

+0

«Например, как быстро определить, что уровень API 24 является последним стабильным в наши дни?» - потому что Android 7.0 отправлен, а Android 7.0 - это API-уровень 24 (см. 'Build.VERSION_CODES'). «Есть ли каноническая веб-страница, которая публикует это?«- Релизы ОС Android покрываются многими крупными новостными новостями:« Как определить их последние стабильные версии? »- это самое высокое число, если предположить, что не добавлено« -альфа »или аналогичного суффикса. – CommonsWare

ответ

0

Я только хочу обновить до последних стабильных выпусков, а не бета-версий.

Что касается библиотек поддержки, альфа и бета-версии рекламируются как таковые с точки зрения версий артефакта. Например, библиотеки ConstraintLayout в настоящее время составляют -beta1, IIRC.

Что касается Android SDK, то правило в течение последних трех лет заключается в том, что если он называется «предварительный просмотр разработчика», это не то, что вы считаете стабильным выпуском. Если у него есть обычный номер версии Android (например, 7.0), он является стабильной версией.

Вы выражаете озабоченность по поводу Android 7.1, и это несколько исключение из предыдущего правила. ИМХО, Google прикрутил это, по-видимому, из-за типичного исполнительного идиотизма. Фактически, API-уровень 25 является окончательным, поскольку они уже являются устройствами доставки (Pixel), имеющими Android 7.1, а исходный код находится в репозиториях AOSP. Поскольку они описывают the APIs as final, я также считаю их окончательными и чувствовать себя комфортно, рекомендуя людям скомпилировать их. «Предварительный просмотр» этого аспекта в большей степени зависит от доступности для другого оборудования, и это, по-видимому, является главным способом попытаться удержать собак в страхе «почему у нас нет 7.1 для такого-то устройства Nexus все же?" Вы можете не соглашаться и считаете, что API-уровень 25 «еще не испечен», но тогда вам нужно будет придумать свою эвристику для того, что вы считаете «еще не испеченным» или нет.

До появления L Developer Preview в 2014 году для большинства выпусков Android, если SDK был отправлен, он был окончательным. Иногда он отправлялся после того, как ОС была доступна для пользователей.

Кроме того, я не хочу бета-версию любой библиотеки поддержки Android, даже если lint сообщает мне, что один из них доступен.

Lint не должен делать этого; если у вас есть доказательства об обратном, укажите проблему. Опять же, «бета-версия» будет обозначена как таковая. Так, например, выпуски 25.0.0 библиотек поддержки не являются бета-версиями. Если вы хотите считать, что 25.0.0 является бета-версией, по какой-то причине вы можете это сделать, но тогда вам нужно будет придумать собственную эвристику для того, что есть и не является бета-версией.

Как определить, какие версии указать в build.gradle для объявлений, таких как следующее?

Для compileSdkVersion установите его в любое удобное для вас состояние. Прямо сейчас, это может быть 24. Это может быть 25. Это может быть 25.

Для targetSdkVersion установите его в соответствии с тем, что имеет смысл для вашего приложения. Это значение конкретно, разработанное для не строго следуйте за compileSdkVersion, для случаев, когда у вас есть существующая база кода и требуется время, чтобы адаптировать код к более новому поведению.

Для версий поддерживающих библиотек основная версия должна соответствовать вашему compileSdkVersion. Незначительные/patchlevels должны быть последними доступными для этой основной версии.

Кроме того, анализ кода Android Studio предупреждает вас, если у вас есть зависимость от библиотеки поддержки до 25.0.0, но не говоря уже о том, что 25 является просмотр

Это потому, что 25 не просмотр , Имеет смысл использовать его только после того, как вы установили compileSdkVersion на номер 25 —, который вы не сможете скомпилировать против него иначе —, но во всех остальных отношениях он является окончательным, как любое другое обновление библиотеки поддержки, которое специально не обозначено как альфа, бета, RC и т. д.

Поиск новостных изданий не идеален либо потому, что вам необходимо вручную просеять обновленные и устаревшие статьи, особенно с точечными релизами, такими как 7.1.1.

версии ОС Android объявлены на the Android Developer Blog. Например, here is the announcement about Android 7.0 starting to ship to devices.

+0

[предварительный просмотр временной шкалы и обновления] (https://developer.android.com/preview/overview.html #timeline) говорится: «Мы доставляем Develo за предварительный просмотр 1 в качестве бета-версии »с окончательным выпуском в декабре. Это довольно понятная эвристика, которая не полностью испечена, хотя она может быть достаточно близкой: «в целом сборка подходит для ежедневного использования разработчиками и ранними усыновителями». Мой личный опыт не был таким хорошим: менеджер пакетов даже не включил исходный код. Я бы предпочел придерживаться полностью стабильной версии, пока новая версия стабилизируется. –

+0

@EdwardBrey: «Это довольно понятная эвристика для не полностью испеченного» - IMHO, это относится к состоянию ОС на устройствах Nexus, а не к состоянию SDK. «в целом сборки подходят для ежедневного использования разработчиками и ранними пользователями» - термин «сборка» относится к изображениям ОС, а не к SDK. «менеджер пакетов даже не включает исходный код» - это неудивительно, поскольку это обычно отстает. – CommonsWare

+1

Спасибо за разъяснение различия статуса выпуска ОС/SDK. Похоже, что проблемы с линией, предлагающей обновить код до выпуска, разрешены, и все, что остается, это проблема, связанная с задержкой распространения. Для этого я создал [вопрос] (https://code.google.com/p/android/issues/detail?id=226469). –

0

Это лучший способ я смог найти:

  1. Используйте последнюю версию из SDK Manager, не помеченных как предварительный просмотр, который имеет все пакеты (изображения, исходный код и т.д.), важны для вас. Используйте эту версию для compileSdkVersion и targetSdkVersion, за исключением случаев, когда вам нужно сдерживать целевую версию SDK, потому что ваш код не учитывает нарушение в SDK.

  2. Используйте последнюю версию библиотеки поддержки, размещенную на library revision history для версии SDK, которую вы используете.

Это не так автоматизирована, как я хотел бы, но, по крайней мере, кажется, что мы можем доверять предварительные пакеты SDK Manager, чтобы быть помечены как таковые.

Смежные вопросы