jetpack O que é o AndroidX?



jetpack architecture components (5)

AndroidX - Biblioteca de extensão Android

Da documentação do AndroidX

Estamos lançando uma nova estrutura de pacotes para deixar mais claro quais pacotes são empacotados com o sistema operacional Android e quais são fornecidos com o APK do aplicativo. A partir de agora, a hierarquia de pacotes do android. * Será reservada para pacotes do Android fornecidos com o sistema operacional. Outros pacotes serão emitidos na nova hierarquia de pacotes androidx. * Como parte da biblioteca AndroidX.

Necessidade do AndroidX

O AndroidX é uma biblioteca reprojetada para tornar os nomes de pacotes mais claros. Então, a partir de agora hierarquia android será apenas para classes padrão do Android, que vem com sistema operacional Android. e outras bibliotecas / dependências farão parte do androidx (faz mais sentido). Então, a partir de agora todo o novo desenvolvimento será atualizado em androidx.

com.android.support. **: androidx.
com.android.support:appcompat-v7: androidx.appcompat: appcompat com.android.support:recyclerview-v7: androidx.recyclerview: recyclerview com.android.support:design: com.google.android.material: material

Mapeamentos completos de artefatos para pacotes do AndroidX

AndroidX usa Semantic-version

Anteriormente, a support library usava a versão do SDK, mas o AndroidX usava a Semantic-version . Vai re-versão de 28.0.0 → 1.0.0.

Como migrar o projeto atual

No Android Studio 3.2 (setembro de 2018), há uma opção direta para migrar o projeto existente para o AndroidX . Isso refrata todos os pacotes automaticamente.

Antes de migrar, é altamente recomendável fazer backup de seu projeto.

Projeto existente

  • Android Studio> Menu Refatorar> Migrar para o AndroidX ...
  • Ele fará a análise e abrirá a janela Refractor na parte inferior. Aceite as alterações a serem feitas.

Novo projeto

Coloque estes sinalizadores em seu gradle.properties

android.enableJetifier=true
android.useAndroidX=true

Verifique os mapeamentos da Biblioteca @ para um pacote AndroidX igual .

Verifique na página oficial do @Migrate para AndroidX

O que é o Jetifier?

Bugs da migração

  • Se você criar um aplicativo e encontrar alguns erros após a migração, será necessário corrigir esses erros menores. Você não vai ficar preso lá, porque isso pode ser facilmente corrigido.
  • As bibliotecas de terceiros não são convertidas para o AndroidX no diretório, mas são convertidas em tempo de execução pelo Jetifier , portanto, não se preocupe com erros de tempo de compilação, seu aplicativo será executado perfeitamente.

Suporte 28.0.0 é o último lançamento?

Da revisão de suporte do Android 28.0.0

Esta será a última versão do recurso sob o pacote android.support , e os desenvolvedores são incentivados a migrar para o AndroidX 1.0.0

Então vá com o AndroidX, porque o Android atualizará apenas o pacote androidx a partir de agora.

Leitura Adicional

https://developer.android.com/topic/libraries/support-library/androidx-overview

https://android-developers.googleblog.com/2018/05/hello-world-androidx.html

Eu estou lendo sobre a biblioteca do quarto do Android. Eu vejo que eles mudaram o pacote android para androidx . Eu não entendi isso. Alguém explique por favor.

implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"

Mesmo isso está disponível com o pacote android também.

implementation "android.arch.persistence.room:runtime:$room_version"
annotationProcessor "android.arch.persistence.room:compiler:$room_version"
  • Qual era a necessidade de empacotar novas bibliotecas de suporte em androidx invés de android .
  • Caso de uso e fatores de influência em projetos existentes.

Answer #1

Apenas alguns bits de adição do meu lado para todas as respostas disponíveis

Necessidade do AndroidX

  1. Como disse em resposta surpreendente por @KhemRaj,

Com a convenção de nomenclatura atual, não está claro quais pacotes são empacotados com o sistema operacional Android e quais são fornecidos com o APK do aplicativo ( Kit de pacote do Android ). Para esclarecer essa confusão, todas as bibliotecas desagregadas serão movidas para o namespace androidx. * Do AndroidX, enquanto a hierarquia de pacotes android. * Será reservada para pacotes que acompanham o sistema operacional Android.

  1. Mais do que isso,

    Inicialmente, o nome de cada pacote indicava o nível mínimo de API suportado por esse pacote, por exemplo, support-v4 . No entanto, a versão 26.0.0 da Biblioteca de suporte aumentou a API mínima para 14 , portanto, hoje, muitos dos nomes de pacotes não têm nada a ver com o nível mínimo de API suportado. Quando os pacotes support-v4 e support-v7 possuem uma API mínima de 14, é fácil entender por que as pessoas ficam confusas. Portanto, agora com o AndroidX, não há dependência no nível da API.

Outra mudança importante é que os artefatos do AndroidX serão atualizados independentemente, para que você possa atualizar bibliotecas AndroidX individuais em seu projeto, em vez de precisar alterar todas as dependências de uma só vez. Essas frustrantes " Todas as bibliotecas com.android.support devem usar exatamente a mesma especificação de versão " devem se tornar uma coisa do passado!


Answer #2

O AndroidX é o projeto de código aberto que a equipe do Android usa para desenvolver, testar, empacotar, versão e lançar bibliotecas no Jetpack .

O AndroidX é uma grande melhoria para a biblioteca original de suporte do Android . Como a Biblioteca de suporte, o AndroidX é fornecido separadamente do sistema operacional Android e oferece compatibilidade com versões anteriores dos lançamentos do Android. O AndroidX substitui totalmente a Biblioteca de Suporte, fornecendo paridade de recursos e novas bibliotecas.

O AndroidX inclui os seguintes recursos:

  • Todos os pacotes no AndroidX vivem em um namespace consistente, começando com a string androidx. Os pacotes da Support Library foram mapeados nos pacotes androidx. * Correspondentes. Para um mapeamento completo de todas as classes antigas e construir artefatos para os novos, consulte a página de Refatoração de Pacotes.

  • Ao contrário da Biblioteca de suporte, os pacotes do AndroidX são mantidos e atualizados separadamente. Os pacotes androidx usam versões Semantic Versioning estritas a partir da versão 1.0.0. Você pode atualizar as bibliotecas do AndroidX em seu projeto de forma independente.

  • Todo novo desenvolvimento da Biblioteca de Suporte ocorrerá na biblioteca do AndroidX. Isso inclui a manutenção dos artefatos originais da Biblioteca de suporte e a introdução de novos componentes do Jetpack.

Usando o AndroidX

Consulte Migrando para o AndroidX para saber como migrar um projeto existente.

Se você quiser usar o AndroidX em um novo projeto, precisará definir o SDK de compilação para o Android 9.0 (nível de API 28) ou superior e definir os dois seguintes flags de plug-in do Android Gradle como true em seu arquivo gradle.properties .

  • android.useAndroidX : quando definido como true, o plug-in do Android usa a biblioteca AndroidX apropriada em vez de uma biblioteca de suporte. O sinalizador é falso por padrão, se não for especificado.

  • android.enableJetifier : Quando definido como true, o plug-in do Android migra automaticamente as bibliotecas de terceiros existentes para usar o AndroidX, reescrevendo seus binários. O sinalizador é falso por padrão, se não for especificado.

Para mapeamentos de artefatos, veja this


Answer #3

Baseado na developer.android.com/topic/libraries/support-library/… :

O androidx é uma nova estrutura de pacotes para tornar mais claro quais pacotes são empacotados com o sistema operacional Android e quais são fornecidos com o APK do seu aplicativo. De agora em diante, a hierarquia de pacotes do android. * Será reservada para pacotes Android fornecidos com o sistema operacional; outros pacotes serão emitidos na nova hierarquia de pacotes androidx. *.

A estrutura de pacotes reprojetada é incentivar bibliotecas menores e mais focadas. Você encontra detalhes sobre os mapeamentos de artefatos aqui .

Existem bibliotecas de suporte (contendo componentes e pacotes para compatibilidade com versões anteriores) chamadas "v7" quando o nível mínimo do SDK é 14, a nova nomenclatura deixa claro para entender a divisão entre APIs empacotadas com a plataforma e as bibliotecas para desenvolvedores de aplicativos que são usados em diferentes versões do android. Você pode consultar o https://android-developers.googleblog.com/2018/05/hello-world-androidx.html para mais detalhes.


Answer #4

É o mesmo que as versões de suporte do AppCompat, mas tem menos confusão das versões v4 e v7, por isso é de grande ajuda usar os diferentes componentes dos elementos XML do Android.





androidx