Respostas:
No Google I / O deste ano (18), o Google anunciou o Jetpack que é um conjunto / coleção de bibliotecas para tornar a vida do desenvolvedor mais fácil.
O Jetpack inclui componentes de arquitetura Android introduzidos anteriormente (ViewModel, Room, Paging, LiveData etc.), bem como componentes de arquitetura recém-introduzidos como WorkManager, Navigation. Além disso, o Jetpack também possui outro conjunto de bibliotecas como AndroidX, AndroidKTX etc.
AndroidX é uma nova estrutura de pacote para bibliotecas de suporte Android, como suporte, ligação de dados, design, etc.
por exemplo, agora em wards, os desenvolvedores usarão androidx.databinding. em vez de android.databinding. ao importar bibliotecas em nossos projetos
Isso permite que o Google adicione SemVer ou Controle de versão semântica em seus pacotes de biblioteca. Para desenvolvedores, isso significa que não precisamos usar a mesma versão da biblioteca de suporte para todas as bibliotecas de suporte. Todo suporte ou melhor, a biblioteca AndroidX manterá seu próprio controle de versão.
Outra vantagem para os desenvolvedores é que não precisamos nos preocupar em manter a mesma versão para todas as bibliotecas de suporte em nosso projeto.
Sobre o Jetifier, ele converte todo o pacote de suporte de dependência em tempo de construção. De acordo com a documentação oficial do Jetifier
A ferramenta Jetifier migra bibliotecas dependentes da biblioteca de suporte para contar com os pacotes AndroidX equivalentes. A ferramenta permite migrar uma biblioteca individual diretamente, em vez de usar o plug-in gradle do Android fornecido com o Android Studio.
Para usar o AndroidX em um projeto, temos que definir targetSdkVersion para nosso projeto como 28 e adicionar as 2 linhas seguintes no arquivo gradle.properties .
android.useAndroidX=true
android.enableJetifier=true
Espero que isso responda à sua consulta.
EDITAR
Este link possui o mapeamento de todos os componentes da biblioteca de suporte com sua contraparte AndroidX.
Consulte também este blog para obter uma explicação detalhada sobre o AndroidX
Supondo que você esteja familiarizado AndroidX
. Se não, por favor veja @ este post .
Jetifier
irá convertersupport libraries
todas as suas dependências paraAndroidX
automaticamente, se você não definir comotrue
então seu projeto terá ambos, o suporte ( obsoleto após a versão 28.0.0 ) e o pacote AndroidX , que é redundante.
Se você tem PhotoView.java
em sua dependência. Que usa biblioteca de suporte AppCompatImageView
.
import android.support.v7.widget.AppCompatImageView;
Esta classe foi movida agora para o androidx
pacote, então como PhotoView
obter o androidx AppCompatImageView
? E o aplicativo ainda funciona no dispositivo.
Quem fez esta corrida?
Jetifier , que converte todo o pacote de suporte de dependência no momento da construção.
Jetifier será convertido android.support.v7.widget.AppCompatImageView
para androidx.appcompat.widget.AppCompatImageView
durante a construção do projeto.
Ativar o Jetifier é importante ao migrar das bibliotecas de suporte para o AndroidX .
Veja esta postagem para entender mais sobre o AndroidX.
Seu código pode mostrar erros de tempo de compilação após ativar o Jetifier ao usar classes de dependência. que você pode remover apagando .idea
, .gradle
e projeto de re-sincronização.
Jetifier ajuda na migração de um projeto Android para AndroidX .
Jetifier ajuda a tornar a biblioteca de terceiros compatível com seu projeto AndroidX.
Se você não estiver usando nenhuma biblioteca de terceiros em seu projeto Android, não precisa usar o Jetifier porque o Jetifier ajuda apenas a "tornar a biblioteca de terceiros" compatível com seu projeto, caso você esteja migrando para o AndroidX. Então, para fazer seu projeto usar o Jetifier, você escreve o código abaixo em gradle.properties .
android.enableJetifier=true
android.useAndroidX=true
Se você não estiver migrando para o AndroidX e usando a forma anterior de usar bibliotecas Android (por exemplo: com.android.support ), essas bibliotecas de terceiros não precisam ser compatíveis, pois essas bibliotecas de terceiros já são compatíveis com a forma anterior de usando bibliotecas Android. Nesse caso, você não precisa usar o Jetifier, então agora, você não precisa escrever as linhas fornecidas acima ou pode simplesmente escrever como abaixo para alterar os valores no futuro para mover para o androidx: -
android.enableJetifier=false
android.useAndroidX=false
Jetifier
O jetificador é uma ferramenta útil que migra automaticamente dependencies
para o AndroidX
no momento da construção. Sem ele, você precisaria de cada dependência usada para ter uma versão do AndroidX antes de poder migrar e isso provavelmente não acontecerá por algum tempo.
Há uma limitação importante a ser observada: o jetificador só funciona em artefatos embalados. Não funciona no seu código-fonte, que deve ser atualizado por conta própria
para habilitar o AndroidX, você precisa adicionar 2 sinalizadores ao seu gradle.properties
arquivo. O primeiro sinalizador diz ao plug-in do Android para usar AndroidX
pacotes em vez de AppCompat
, e o segundo sinalizador habilita Jetifier
:
android.useAndroidX=true
android.enableJetifier=true
Do doc oficial
Quando este sinalizador é definido como verdadeiro, o plug-in do Android migra automaticamente as bibliotecas existentes de terceiros para usar as dependências do AndroidX reescrevendo seus binários. O sinalizador é falso por padrão se não for especificado.
É útil para compatibilidade. Quando um consumidor usa androidX
e um produtor usa support
. Por exemplo, quando seu projeto em AndroidX
deseja usar uma dependência que usa em support library
vez de AndroidX
[Exemplo]
Adicione estas duas linhas android.useAndroidX = true
android.enableJetifier = true
em buid.gradle funcionou para mim
implementation "com.commonsware.cwac:document:0.3.0"
em seudependencies
. Essa versão da biblioteca tem uma dependência transitiva decom.android.support:support-annotations:27.0.2
. No entanto, você deseja usarandroidx.annotation:annotation
como parte do uso de outras dependências do AndroidX. Jetifier iria de alguma forma atualizarcom.commonsware.cwac:document
para usarandroidx.annotation:annotation
.