Примечание. С выпуском Android 9.0 (уровень API 28) появилась новая версия библиотеки поддержки AndroidX , которая является частью Jetpack . Библиотека AndroidX содержит существующую библиотеку поддержки, а также новейшие компоненты Jetpack.
Вы можете продолжать использовать библиотеку поддержки. Исторические артефакты (версии 27 и более ранних, упакованные как android.support.*
) останутся доступными в Google Maven. Однако разработка всех новых библиотек будет происходить в библиотеке AndroidX .
Мы рекомендуем использовать библиотеки AndroidX во всех новых проектах. Вам также следует рассмотреть возможность переноса существующих проектов на AndroidX.
При разработке приложений, поддерживающих несколько версий API, вам может потребоваться стандартный способ предоставления новых функций в более ранних версиях Android или плавный возврат к эквивалентным функциям. Вместо создания кода для работы с более ранними версиями платформы вы можете использовать эти библиотеки для обеспечения уровня совместимости. Кроме того, библиотеки поддержки предоставляют дополнительные удобные классы и функции, недоступные в стандартном API Framework, для упрощения разработки и поддержки на большем количестве устройств.
Библиотека поддержки Android, изначально представлявшая собой единую двоичную библиотеку для приложений, превратилась в набор библиотек для разработки приложений. Многие из этих библиотек теперь являются настоятельно рекомендуемой, если не обязательной, частью разработки приложений.
В этом документе представлен обзор библиотеки поддержки, который поможет вам понять ее компоненты и способы эффективного ее использования в вашем приложении.
Внимание: начиная с версии библиотеки поддержки 26.0.0 (июль 2017 г.) минимальный поддерживаемый уровень API в большинстве библиотек поддержки увеличен до Android 4.0 (уровень API 14) для большинства пакетов библиотек. Дополнительные сведения см. в разделе Поддержка версий и имена пакетов на этой странице.
Использование библиотек поддержки
Есть несколько различных применений вспомогательных библиотек. Классы обратной совместимости для более ранних версий платформы — лишь один из них. Вот более полный список способов использования вспомогательных библиотек в вашем приложении:
- Обратная совместимость для новых API . Большое количество вспомогательных библиотек обеспечивает обратную совместимость с новыми классами и методами платформы. Например, класс поддержки
Fragment
обеспечивает поддержку фрагментов на устройствах под управлением версий Android ниже 3.0 (уровень API 11). - Удобство и вспомогательные классы . Библиотеки поддержки предоставляют ряд вспомогательных классов, особенно для разработки пользовательского интерфейса. Например, класс
RecyclerView
предоставляет виджет пользовательского интерфейса для отображения и управления очень длинными списками, который можно использовать в версиях Android начиная с уровня API 7 и выше. - Отладка и утилиты . Существует ряд функций, которые обеспечивают полезность помимо кода, который вы включаете в свое приложение, включая библиотеку
support-annotations
для улучшенной проверки кода при вводе методов и поддержку Multidex для настройки и распространения приложений с более чем 65 536 методами.
Использование поддержки и API-интерфейсов Framework
Библиотеки поддержки предоставляют классы и методы, которые очень похожи на API в Android Framework. Обнаружив это, вы можете задаться вопросом, следует ли вам использовать версию API для платформы или эквивалент библиотеки поддержки. Вот рекомендации о том, когда следует использовать классы библиотеки поддержки вместо API-интерфейсов Framework:
- Совместимость определенной функции . Если вы хотите поддержать последнюю функцию платформы на устройствах, на которых работают более ранние версии платформы, используйте эквивалентные классы и методы из библиотеки поддержки.
- Совместимость функций связанных библиотек . Более сложные классы вспомогательной библиотеки могут зависеть от одного или нескольких дополнительных классов вспомогательной библиотеки, поэтому для этих зависимостей следует использовать классы вспомогательной библиотеки. Например, класс поддержки
ViewPager
следует использовать с классами поддержки FragmentPagerAdapter
или FragmentStatePagerAdapter
. - Общая совместимость устройств . Если у вас нет конкретной функции платформы, которую вы собираетесь использовать в своем приложении с обратной совместимостью, все равно рекомендуется использовать в своем приложении классы библиотеки поддержки. Например, вы можете использовать
ActivityCompat
вместо класса Activity
платформы, чтобы в дальнейшем воспользоваться преимуществами новых функций, таких как включение новой модели разрешений, представленной в Android 6.0 (уровень API 23).
Классы библиотеки поддержки, которые обеспечивают совместимую реализацию классов API платформы, возможно, не смогут обеспечить полный набор функций, доступных в последней версии, из-за ограничений версии платформы хост-устройства. В этих случаях классы библиотеки поддержки предназначены для постепенного снижения производительности и могут не предоставлять все функции или данные текущего API платформы. По этой причине вам следует просмотреть справочную документацию по используемым вами библиотечным классам и методам и тщательно протестировать их на устройствах, на которых установлена самая ранняя версия платформы, поддерживаемой вашим приложением.
Примечание. Библиотеки поддержки не предоставляют эквивалентные классы и методы для каждого API платформы. В некоторых случаях вам может потребоваться обернуть вызов метода платформы явной проверкой версии SDK и предоставить альтернативный код для обработки методов, недоступных на устройстве. Дополнительные сведения об использовании проверок версий в коде см. в разделе «Поддержка различных версий платформы» .
Поддержка версий и имена пакетов
Некоторые из пакетов библиотеки поддержки имеют имена пакетов, обозначающие минимальный уровень API, который они изначально поддерживали, с использованием нотации av#, например пакет support-v4. Начиная с версии библиотеки поддержки 26.0.0 (выпущенной в июле 2017 г.), минимальный поддерживаемый уровень API изменился на Android 4.0 (уровень API 14) для всех пакетов библиотеки поддержки. По этой причине при работе с любым последним выпуском библиотеки поддержки не следует предполагать, что нотация пакета v# указывает минимальный уровень поддержки API. Это изменение в последних выпусках также означает, что пакеты библиотек с версиями v4 и v7 по существу эквивалентны по минимальному уровню поддерживаемого ими API. Например, пакет support-v4 и support-v7 поддерживают минимальный уровень API 14 для выпусков библиотеки поддержки от 26.0.0 и выше.
Поддержка версий выпуска библиотеки
Версия выпуска библиотеки поддержки, например 24.2.0 или 25.0.1, отличается от минимального уровня API, поддерживаемого любой библиотекой в этом выпуске. Номер версии выпуска указывает, для какой версии API платформы она была создана, и следовательно, какие самые последние API могут быть включены в эту версию библиотек.
В частности, первый раздел номера версии выпуска, например 24 в версии 24.2.0, обычно соответствует версии API платформы, доступной на момент ее выпуска. Уровень версии версии библиотеки поддержки указывает, что она включает в себя некоторые функции этого уровня API, но не следует предполагать, что она обеспечивает совместимость со всеми функциями, выпущенными в новой версии API платформы.
Зависимости библиотеки
Большинство библиотек в пакете библиотек поддержки Android в некоторой степени зависят от одной или нескольких библиотек. Например, почти все библиотеки поддержки зависят от пакета support-compat
. В общем, вам не нужно беспокоиться о зависимостях библиотек поддержки, поскольку инструмент сборки gradle управляет зависимостями библиотек за вас, автоматически включая зависимые библиотеки.
Если вы хотите увидеть, какие библиотеки и зависимости библиотек включены в ваше приложение, выполните следующую команду в корне сборки вашего проекта разработки приложения, чтобы получить отчет о зависимостях для этого проекта, включая библиотеки поддержки Android и другие библиотеки:
gradle -q dependencies your-app-project:dependencies
Дополнительные сведения о добавлении библиотек поддержки в проект разработки с помощью Gradle см. в разделе Настройка библиотеки поддержки . Дополнительные сведения о работе с Gradle см. в разделе Настройка сборки .
Обратите внимание, что все библиотеки поддержки Android также зависят от некоторого базового уровня платформы для последних выпусков, то есть Android 4.0 (уровень API 14) или выше.
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-01-10 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2025-01-10 UTC."],[],[],null,["# Support Library\n\n**Note:** With the release of Android 9.0 (API level 28) there is\na new version of the support library called\n[AndroidX](/jetpack/androidx) which is part of [Jetpack](/jetpack).\nThe AndroidX library\ncontains the existing support library and also includes the latest Jetpack components.\n\n\u003cbr /\u003e\n\n\nYou can continue to use the support library.\nHistorical artifacts (those versioned 27 and earlier, and packaged as `android.support.*`) will\nremain available on Google Maven. However, all new library development\nwill occur in the [AndroidX](/jetpack/androidx) library.\n\n\u003cbr /\u003e\n\n\nWe recommend using the AndroidX libraries in all new projects. You should also consider\n[migrating](/jetpack/androidx/migrate) existing projects to AndroidX as well.\n\n\nWhen developing apps that support multiple API versions, you may want a\nstandard way to provide newer features on earlier versions of Android or\ngracefully fall back to equivalent functionality. Rather than building code\nto handle earlier versions of the platform, you can leverage these libraries\nto provide that compatibility layer. In addition, the Support Libraries\nprovide additional convenience classes and features not available in the\nstandard Framework API for easier development and support across more\ndevices.\n\n\nOriginally a single binary library for apps, the Android Support Library has\nevolved into a suite of libraries for app development. Many of these\nlibraries are now a strongly recommended, if not essential, part of app\ndevelopment.\n\n\nThis document provides an overview of the support library to help you\nunderstand its components and how to use it effectively in your app.\n\n\n**Caution:** Starting with Support Library release 26.0.0\n(July 2017), the minimum supported API level across most support libraries\nhas increased to Android 4.0 (API level 14) for most library packages. For\nmore information, see [Version Support and Package\nNames](#api-versions) on this page.\n\nUses for the Support Libraries\n------------------------------\n\n\nThere are a few distinct uses for the support libraries. Backward\ncompatibility classes for earlier versions of the platform is just one of\nthem. Here is a more complete list of ways you can use the support libraries\nin your app:\n\n- **Backward Compatibility for newer APIs** - A large amount of the support libraries provide backward compatibility for newer framework classes and methods. For example, the [Fragment](/reference/androidx/fragment/app/Fragment) support class provides support for fragments on devices running versions earlier than Android 3.0 (API level 11).\n- **Convenience and Helper Classes** - The support libraries provides a number of helper classes, particularly for user interface development. For example the [RecyclerView](/reference/androidx/recyclerview/widget/RecyclerView) class provides a user interface widget for displaying and managing very long lists, useable on versions of Android from API level 7 and up.\n- **Debugging and Utilities** - There are a number of features that provide utility beyond code you incorporate into your app, including the [`support-annotations`](/studio/write/annotations) library for improved code lint checks on method inputs and [Multidex support](/studio/build/multidex) for configuring and distributing apps with over 65,536 methods.\n\nUsing Support versus Framework APIs\n-----------------------------------\n\n\nSupport Libraries provide classes and methods that closely resemble APIs in\nthe Android Framework. Upon discovering this, you may wonder if you should\nuse the framework version of the API or the support library equivalent. Here\nare the guidelines for when you should use support library classes in place\nof Framework APIs:\n\n- **Compatibility for a Specific Feature** - If you want to support a recent platform feature on devices that are running earlier versions of the platform, use the equivalent classes and methods from the support library.\n- **Compatibility for Related Library Features** - More sophisticated support library classes may depend on one or more additional support library classes, so you should use support library classes for those dependencies. For example, the [ViewPager](/reference/androidx/viewpager/widget/ViewPager) support class should be used with [FragmentPagerAdapter](/reference/androidx/fragment/app/FragmentPagerAdapter) or the [FragmentStatePagerAdapter](/reference/androidx/fragment/app/FragmentStatePagerAdapter) support classes.\n- **General Device Compatibility** - If you do not have a specific platform feature you intend to use with your app in a backward compatible way, it is still a good idea to use support library classes in your app. For example, you may want to use [ActivityCompat](/reference/androidx/core/app/ActivityCompat) in place of the framework [Activity](/reference/android/app/Activity) class, so you can take advantage of newer features later on, such as incorporating the new permissions model introduced in Android 6.0 (API level 23).\n\n\nSupport Library classes that provide a compatible implementation of platform\nAPI classes may not be able to provide the full set of functionality\navailable in the latest release, due to the limitations of the host device\nplatform version. In these cases, Support Library classes are designed to\ndegrade gracefully, and may not provide the all the functionality or data of\nthe current, platform API. For this reason, you should review the reference\ndocumentation for the library classes and methods you use, and thoroughly\ntest on devices running the earliest version of the platform supported by\nyour app.\n\n\n**Note:** The support libraries do not provide equivalent\nclasses and methods for each framework API. In some cases, you may need to\nwrap a framework method call with an explicit SDK version check and provide\nalternative code to handle methods not available on a device. For more\ninformation on using version checks in your code, see [Supporting Different\nPlatform Versions](/training/basics/supporting-devices/platforms).\n\nVersion Support and Package Names\n---------------------------------\n\n\nSome of the Support Library packages have package names to indicate the\nminimum level of the API they originally supported,\nusing a v# notation, such as the\nsupport-v4 package. Starting with Support Library version 26.0.0 (released in\nJuly 2017), the minimum supported API level has changed to Android 4.0 (API\nlevel 14) for all support library packages. For this reason, when working with\nany recent release of the support library, you should not assume that the\nthe *v#* package notation indicates a minimum API support level.\nThis change in recent releases also means that library packages with the v4\nand v7 are essentially equivalent in the minimum level of API they support.\nFor example, the support-v4 and the support-v7 package both support a minimum\nAPI level of 14, for releases of the Support Library from 26.0.0 and higher.\n\n### Support Library Release Versions\n\n\nThe [release version](/topic/libraries/support-library/revisions) of the Support Library, such as 24.2.0 or 25.0.1, is\ndifferent from the minimum API level supported by any library in that\nrelease.The release version number indicates which version of the platform\nAPI it was built against, and therefore, what the most recent APIs *may be\nincluded* in this version of the libraries.\n\n\nSpecifically, the first section of the release version number, for example\nthe 24 in version 24.2.0, generally corresponds with the version of the\nplatform API available when it was released. The release version level of the\nsupport library indicates it incorporates *some* features of that API\nlevel, but you should not assume it provides compatibility with *all*\nfeatures released in the new platform API version.\n\nLibrary Dependencies\n--------------------\n\n\nMost libraries in the Android Support Library suite have some dependency on\none or more libraries. For example, nearly all support libraries have a\ndependency on the `support-compat` package. In general, you do not\nneed to worry about support library dependencies, because the gradle build\ntool manages library dependencies for you, by automatically including\ndependent libraries.\n\n\nIf you want to see what libraries and library dependencies are included in\nyour app, run the following command at the build root of your app development\nproject to get a report of the dependencies for that project, including\nAndroid Support Libraries and other libraries: \n\n```\ngradle -q dependencies your-app-project:dependencies\n```\n\n\nFor more information about adding support libraries to your development\nproject using Gradle, see [Support\nLibrary Setup](/topic/libraries/support-library/setup). For more information about working with Gradle, see\n[Configure\nYour Build](/studio/build).\n\n\nNote that *all* Android Support Libraries also depend on some base level\nof the platform, for recent releases, that is Android 4.0 (API level 14) or\nhigher."]]