O que é o AndroidX?

255

Estou lendo sobre uma biblioteca de salas do Android. Vejo que eles mudaram o pacote androidpara androidx. Eu não entendi isso. Alguém pode explicar, por favor?

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

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

implementation "android.arch.persistence.room:runtime:$room_version"
annotationProcessor "android.arch.persistence.room:compiler:$room_version"
  • O que precisava empacotar novas bibliotecas de suporte em androidxvez de android?
  • Caso de uso e fatores afetados em projetos existentes.
Khemraj
fonte
4
Leia developer.android.com/topic/libraries/support-library/… . androidx.*é uma hierarquia de pacotes para bibliotecas de suporte. Todos eles terão o mesmo pacote que chegamos à era androidx(como componentes de arquitetura, outras bibliotecas de suporte).
ADM
3
O que você não entendeu exatamente? Por que eles mudaram o pacote?
Rohit5k2
@ADM por que eles mudaram para o androidxpacote do CORE android.
Khemraj 11/07
2
Eles apenas redesenharam a estrutura do pacote por uma questão de simplicidade. Isso também foi anunciado no IO 2018, se você quiser dar uma olhada. Thx
ADM

Respostas:

334

AndroidX - Biblioteca de extensões Android

Da documentação do AndroidX

Estamos lançando uma nova estrutura de pacotes para deixar mais claro quais pacotes estão incluídos no sistema operacional Android e quais estão incluídos no APK do seu aplicativo. A partir de agora, a hierarquia de pacotes android. * Será reservada para pacotes do Android que acompanham 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 dos pacotes mais claros. Portanto, a partir de agora, a hierarquia do Android será apenas para as classes padrão do Android, que vêm com o 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 no 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 de artefatos completos para pacotes AndroidX

AndroidX usa versão semântica

Anteriormente, support libraryusava a versão SDK, mas o AndroidX usa o Semantic-version. Ele será re-versão a partir 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 AndroidX. Isso refatora todos os pacotes automaticamente.

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

Projeto existente

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

imagem

Novo projeto

Coloque essas bandeiras no seu gradle.properties

android.enableJetifier=true
android.useAndroidX=true

Marque @ mapeamentos da biblioteca para obter o mesmo pacote AndroidX .

Verifique @ página oficial de Migrar para AndroidX

O que é o Jetifier?

Erros de migração

  • Se você criar um aplicativo e encontrar alguns erros após a migração, precisará corrigir esses erros menores. Você não ficará preso lá, porque isso pode ser facilmente corrigido.
  • Bibliotecas de terceiros não são convertidas para 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 funcionará perfeitamente.

O suporte 28.0.0 é a última versão?

Do Android Support Revisão 28.0.0

Esta será a última versão do pacote sob a embalagem android.support , e os desenvolvedores são encorajados 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

Khemraj
fonte
2
@androidmalin Fico feliz em ouvir de você - esta informação ajudou você :)
Khemraj
Sob que circunstâncias você pode / deve definir o enableJetifier como false?
Mark
1
@Mark enableJetifier=falseé o valor padrão. É falso quando você não o define. Isso significa que nenhuma das suas bibliotecas será reescrita no AndroidX.
Khemraj
4
A migração do android studio está mal funcionando. i teve para corrigir centenas manualmente dos arquivos ... i passar mais tempo ao código correção devido ao Ferramentas do Google para mudanças do que para realmente programar o código que assuntos ... suspiro
LearningPath
1
Agora é (3.3) chamadoMigrate to AndroidX
Dale
32

Com base na documentação :

androidx é uma nova estrutura de pacotes para deixar mais claro quais pacotes estão incluídos no sistema operacional Android e quais estão incluídos no APK do seu aplicativo. A partir de agora, a hierarquia de pacotes android. * Será reservada para pacotes do Android que acompanham o sistema operacional; outros pacotes serão emitidos na nova hierarquia de pacotes androidx. *.

A estrutura de pacote 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) denominadas "v7" quando o nível mínimo de SDK suportado é 14, a nova nomenclatura deixa claro o entendimento da divisão entre APIs incluídas na plataforma e as bibliotecas para desenvolvedores de aplicativos que são usadas em diferentes versões do Android. Você pode consultar o anúncio oficial para mais detalhes.

Sagar
fonte
22

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

O AndroidX é uma grande melhoria para a Biblioteca de Suporte Android original . Como a Biblioteca de suporte, o AndroidX é enviado separadamente do sistema operacional Android e oferece compatibilidade com versões anteriores nas versões do Android. O AndroidX substitui completamente 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 espaço para nome consistente, começando com a cadeia androidx. Os pacotes da Biblioteca de suporte foram mapeados para os pacotes androidx. * Correspondentes. Para um mapeamento completo de todas as classes antigas e construir artefatos para as novas, consulte a página Refatoração de Pacotes.

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

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

Usando AndroidX

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

Se você deseja usar o AndroidX em um novo projeto, defina o SDK de compilação como Android 9.0 (nível de API 28) ou superior e defina os dois sinalizadores de plug-in do Android Gradle a seguir como verdadeiros em seu gradle.propertiesarquivo.

  • android.useAndroidX: Quando definido como true, o plug-in 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, consulte este

Basi
fonte
14

Este artigo Android Jetpack: o que significam os anúncios recentes para a Biblioteca de suporte do Android? explica bem

Hoje, muitos consideram a Biblioteca de suporte uma parte essencial do desenvolvimento de aplicativos Android, a ponto de ser usada por 99% dos aplicativos na loja Google Play. No entanto, à medida que a Biblioteca de Suporte cresceu, surgiram inconsistências em torno da convenção de nomes da biblioteca.

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.0da Biblioteca de suporte aumentou a API mínima para 14; 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 têm uma API mínima de 14, é fácil ver por que as pessoas ficam confusas!

Para esclarecer essa confusão, o Google está refatorando a Biblioteca de suporte em uma nova estrutura de pacote da Android Extension Library (AndroidX). O AndroidX apresentará nomes de pacotes simplificados, bem como IDs de grupos e artefatos do Maven que refletem melhor o conteúdo de cada pacote e seus níveis de API suportados.

Com a convenção de nomenclatura atual, também não está claro quais pacotes estão incluídos no sistema operacional Android e quais estão incluídos no APK do seu aplicativo (Kit de Pacotes Android) . Para esclarecer essa confusão, todas as bibliotecas desagrupadas serão movidas para o espaço de nome androidx. * Do AndroidX, enquanto a hierarquia de pacotes android. * Será reservada para pacotes fornecidos com o sistema operacional Android .

onmyway133
fonte
12

Apenas alguns bits do meu lado para todas as respostas disponíveis

Necessidade do AndroidX

  1. Como dito na incrível resposta de @KhemRaj,

Com a convenção de nomenclatura atual, não está claro quais pacotes estão incluídos no sistema operacional Android e quais estão incluídos no APK do seu aplicativo ( Kit de Pacotes Android ). Para esclarecer essa confusão, todas as bibliotecas desagrupadas serão movidas para o espaço para nome androidx. * Do AndroidX, enquanto a hierarquia de pacotes android. * Será reservada para pacotes fornecidos com 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 , então 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 têm uma API mínima de 14, é fácil ver 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 de forma independente, para que você possa atualizar bibliotecas AndroidX individuais em seu projeto, em vez de precisar alterar todas as dependências de uma só vez. As mensagens frustrantes de “ Todas as bibliotecas com.android.support devem usar exatamente a mesma especificação de versão ” devem se tornar uma coisa do passado!

Abhishek Kumar
fonte
7

Eu conheci o AndroidX neste vídeo do Android Dev Summit . A sumarização é -

  1. Não há mais biblioteca de suporte: a biblioteca de suporte do Android nunca será mantida pelo Google no namespace da biblioteca de suporte. Portanto, se você deseja encontrar as correções de um bug na biblioteca de suporte, é necessário migrar seu projeto no AndroidX
  2. Melhor gerenciamento de pacotes: para versões padronizadas e independentes.Por causa da versão anterior da biblioteca de suporte, era muito confusa. Ele liberará a você a mensagem “Todas as bibliotecas com.android.support devem usar exatamente a mesma especificação de versão” .
  3. Outras bibliotecas God migraram para o AndroidX : os serviços Google Play, Firebase, Mockito 2, etc. são migrados para o AndroidX.
  4. Novas bibliotecas serão publicadas usando o artefato AndroidX: todas as bibliotecas estarão no espaço para nome AndroidX como o Android Jetpack
Gk Mohammad Emon
fonte
4

É o mesmo que as versões de suporte AppCompat, mas possui menos confusão das versões v4 e v7, portanto, é de muita ajuda o uso dos diferentes componentes dos elementos XML do Android.

raj kavadia
fonte
4

androidxirá substituir support librarydepois 28.0.0. Você deve migrar seu projeto para usá-lo. androidxusos Semantic Versioning. O uso AndroidXnão será confundido pela versão apresentada no nome da biblioteca e no nome do pacote. A vida se torna mais fácil

[AndroidX e compatibilidade de suporte]

yoAlex5
fonte
3

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

Após horas de luta, resolvi incluindo o seguinte em app / build.gradle:

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

Coloque essas bandeiras em seu gradle.properties

android.enableJetifier=true
android.useAndroidX=true

Changes in gradle:

implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.android.material:material:1.1.0-alpha04'

Ao migrar no Android studio, o arquivo app / gradle é atualizado automaticamente com as implementações da biblioteca de correções da biblioteca padrão

Consulte: https://developer.android.com/jetpack/androidx/migrate

Kanwarpreet Singh
fonte
0

O Android fornece alguns conjuntos de bibliotecas diferentes. Um é chamado de Biblioteca de suporte Android e o outro é chamado AndroidX. Selecionar "Usar artefatos android. *" Indica que queremos usar o AndroidX.

CYUBAHIRO Patrick
fonte