Android Dev Summit, October 23-24: two days of technical content, directly from the Android team. Sign-up for livestream updates.

Biblioteca de Suporte

Observação: com o lançamento do Android 9.0 (API de nível 28), há uma nova versão da biblioteca de suporte chamada AndroidX, que faz parte do Jetpack. A AndroidX contém a biblioteca de suporte existente e inclui os componentes mais recentes do Jetpack.

Você pode continuar usando a biblioteca de suporte. Os artefatos históricos (da versão 27 e anteriores, empacotados como android.support.*) permanecerão disponíveis no Maven do Google. No entanto, todo o desenvolvimento da nova biblioteca ocorrerá na biblioteca AndroidX.

Recomendamos o uso das bibliotecas AndroidX em todos os novos projetos. Considere também migrar os projetos existentes para a AndroidX.

Ao desenvolver apps compatíveis com várias versões da API, você pode querer uma maneira padrão de fornecer recursos mais novos a versões anteriores do Android ou de retornar a uma funcionalidade equivalente. Em vez de criar código para lidar com versões anteriores da plataforma, use essas bibliotecas para fornecer essa camada de compatibilidade. Além disso, as bibliotecas de suporte fornecem classes de conveniência adicionais e recursos não disponíveis na API de framework padrão para facilitar o desenvolvimento e a compatibilidade com mais dispositivos.

Originalmente uma única biblioteca binária para apps, a Biblioteca de Suporte do Android evoluiu para um conjunto de bibliotecas para o desenvolvimento de apps. Muitas dessas bibliotecas são agora uma parte altamente recomendável, se não essencial, do desenvolvimento de apps.

Este documento fornece uma visão geral da biblioteca de suporte para ajudar você a entender os componentes e como usá-la efetivamente no seu app.

Cuidado: a partir da versão 26.0.0 (julho de 2017) da Biblioteca de Suporte, o nível mínimo de API compatível com a maioria das bibliotecas de suporte aumentou para o Android 4.0 (API de nível 14) para a maioria dos pacotes de bibliotecas. Para mais informações, consulte Compatibilidade com versões e nomes de pacotes neste documento.

Usos para as bibliotecas de suporte

Existem alguns usos distintos para as bibliotecas de suporte. Classes de compatibilidade para versões anteriores da plataforma são apenas uma delas. Veja uma lista mais completa de maneiras de usar as bibliotecas de suporte no seu app:

  • Compatibilidade retroativa para APIs mais recentes: uma grande quantidade de bibliotecas de suporte fornece compatibilidade com versões anteriores para classes e métodos de estrutura mais recentes. Por exemplo, a classe de suporte Fragment fornece suporte para fragmentos em dispositivos com versões anteriores ao Android 3.0 (API de nível 11).
  • Conveniência e classes auxiliares: as bibliotecas de suporte fornecem várias classes auxiliares, especialmente para o desenvolvimento da interface com o usuário. Por exemplo, a classe RecyclerView fornece um widget de interface do usuário para exibir e gerenciar listas muito longas, utilizáveis em versões do Android a partir da API de nível 7.
  • Depuração e utilitários: há vários recursos que fornecem utilidade além do código que você incorpora ao app, incluindo a biblioteca support-annotations para verificações aprimoradas de código em entradas de método e suporte Multidex para configurar e distribuir apps com mais de 65.536 métodos.

Uso de suporte em comparação a APIs de framework

As bibliotecas de suporte fornecem classes e métodos que se assemelham às APIs da estrutura do Android. Ao descobrir isso, você pode se perguntar se precisa usar a versão de estrutura da API ou o equivalente da biblioteca de suporte. Aqui estão as diretrizes sobre quando usar classes de biblioteca de suporte, em vez das APIs de framework:

  • Compatibilidade com um recurso específico: se você quer oferecer compatibilidade com um recurso de plataforma recente em dispositivos que executam versões anteriores da plataforma, use as classes e métodos equivalentes da biblioteca de suporte.
  • Compatibilidade com recursos de biblioteca relacionados: classes de biblioteca de suporte mais sofisticadas podem depender de uma ou mais classes de biblioteca de suporte adicionais, portanto, use-as para essas dependências. Por exemplo, é necessário usar a classe de suporte ViewPager com as classes de suporte FragmentPagerAdapter ou FragmentStatePagerAdapter.
  • Compatibilidade geral com dispositivos: mesmo que você não tenha um recurso de plataforma específico que pretenda usar com seu app de forma compatível com versões anteriores, ainda é uma boa ideia usar as classes da biblioteca de suporte no seu app. Por exemplo, talvez você queira usar ActivityCompat no lugar da classe de estrutura Activity, para que possa usar os recursos mais recentes posteriormente, como incorporar o novo modelo de permissões introduzido no Android 6.0 (API de nível 23).

As classes da Biblioteca de Suporte que fornecem uma implementação compatível das classes da API da plataforma podem não oferecer todas as funcionalidades disponíveis na última versão devido às limitações da versão da plataforma do dispositivo host. Nesses casos, as classes da Biblioteca de Suporte são projetadas para serem reduzidas normalmente e podem não fornecer todas as funcionalidades ou dados da API da plataforma atual. Por esse motivo, consulte a documentação de referência para as classes e os métodos de biblioteca que você usa e faça um teste completo em dispositivos que executam a versão mais antiga da plataforma compatível com seu app.

Observação: as bibliotecas de suporte não fornecem classes e métodos equivalentes para cada API de framework. Em alguns casos, é necessário envolver uma chamada de método de framework com uma verificação explícita da versão do SDK e fornecer um código alternativo para manipular os métodos não disponíveis em um dispositivo. Para mais informações sobre como usar verificações de versão no seu código, consulte Compatibilidade com diferentes versões da plataforma.

Compatibilidade com versões e nomes de pacotes

Alguns dos pacotes da Biblioteca de Suporte têm nomes para indicar o nível mínimo da API com compatibilidade original, usando a notação vnº, como o pacote support-v4. A partir da versão 26.0.0 da Biblioteca de Suporte (lançada em julho de 2017), o nível mínimo de API compatível foi alterado para Android 4.0 (API de nível 14) para todos os pacotes de biblioteca de suporte. Por esse motivo, ao trabalhar com qualquer versão recente da biblioteca de suporte, não presuma que a notação do pacote vnº indique um nível mínimo de compatibilidade com a API. Essa alteração nas versões recentes também significa que os pacotes de biblioteca com v4 e v7 são essencialmente equivalentes quanto ao nível mínimo de API com o qual são compatíveis. Por exemplo, os pacotes support-v4 e support-v7 são compatíveis com um nível mínimo de API de 14, para as versões da Biblioteca de Suporte 26.0.0 e posteriores.

Versões da Biblioteca de Suporte

A versão de lançamento da Biblioteca de Suporte, como 24.2.0 ou 25.0.1, é diferente do nível mínimo de API compatível com qualquer biblioteca nessa versão.O número indica em qual versão da API da plataforma ela foi criada e, portanto, quais APIs mais recentes podem ser incluídas nessa versão das bibliotecas.

Especificamente, a primeira seção do número da versão de lançamento, por exemplo, o 24 na versão 24.2.0, geralmente corresponde à versão da API de plataforma disponível quando foi lançada. O nível da versão da biblioteca de suporte indica que ela incorpora alguns recursos desse nível de API, mas não é possível presumir que ela ofereça compatibilidade com todos os recursos lançados na nova versão da API de plataforma.

Dependências de biblioteca

A maioria das bibliotecas no conjunto da Biblioteca de Suporte do Android tem alguma dependência em uma ou mais bibliotecas. Por exemplo, quase todas as bibliotecas de suporte dependem do pacote support-compat. Em geral, não é preciso se preocupar com as dependências da biblioteca de suporte, porque a ferramenta de compilação Gradle as gerencia para você, incluindo automaticamente as bibliotecas dependentes.

Se você quiser ver quais bibliotecas e dependências estão incluídas no seu app, execute o seguinte comando na raiz da compilação do projeto de desenvolvimento do app para ver um relatório das dependências desse projeto, incluindo Bibliotecas de Suporte do Android e outras:

    gradle -q dependencies your-app-project:dependencies
    

Para mais informações sobre como adicionar bibliotecas de suporte ao seu projeto de desenvolvimento usando o Gradle, consulte Configuração da Biblioteca de Suporte. Para mais informações sobre como trabalhar com o Gradle, consulte Configurar sua compilação.

Observe que todas as Bibliotecas de Suporte do Android também dependem de algum nível básico da plataforma, para versões recentes, que é o Android 4.0 (API de nível 14) ou superior.