¿Qué es AndroidX?

255

Estoy leyendo sobre una biblioteca de sala de Android. Veo que cambiaron el paquete androida androidx. No entendí eso. ¿Alguien puede explicar, por favor?

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

Incluso esto está disponible con el androidpaquete también.

implementation "android.arch.persistence.room:runtime:$room_version"
annotationProcessor "android.arch.persistence.room:compiler:$room_version"
  • ¿Qué necesitaba empaquetar nuevas bibliotecas de soporte en androidxlugar de android?
  • Caso de uso y factores de afecto en proyectos existentes.
Khemraj
fuente
44
Lea developer.android.com/topic/libraries/support-library/… . androidx.*es la jerarquía de paquetes para las bibliotecas de soporte. Todos vendrán en el mismo paquete que nosotros en la era de androidx(Al igual que los componentes de arquitectura, otras bibliotecas de soporte).
ADM
3
¿Qué no entendiste exactamente? ¿Por qué cambiaron el paquete?
Rohit5k2
@ADM por qué cambiaron al androidxpaquete de CORE android.
Khemraj
2
Simplemente rediseñaron la estructura del paquete por simplicidad. Esto también se anunció en IO 2018 si quieres echar un vistazo. Thx
ADM

Respuestas:

334

AndroidX - Biblioteca de extensiones de Android

De la documentación de AndroidX

Estamos implementando una nueva estructura de paquetes para aclarar qué paquetes se incluyen con el sistema operativo Android y cuáles se incluyen con el APK de su aplicación. En adelante, la jerarquía de paquetes de Android. * Se reservará para los paquetes de Android que se envían con el sistema operativo. Se emitirán otros paquetes en la nueva jerarquía de paquetes androidx. * Como parte de la biblioteca de AndroidX.

Necesidad de AndroidX

AndroidX es una biblioteca rediseñada para aclarar los nombres de los paquetes. Entonces, a partir de ahora, la jerarquía de Android será solo para las clases predeterminadas de Android, que viene con el sistema operativo Android y otras bibliotecas / dependencias serán parte de Androidx (tiene más sentido). Entonces, a partir de ahora, todo el nuevo desarrollo se actualizará en 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

Completar asignaciones de artefactos para paquetes de AndroidX

AndroidX usa la versión semántica

Anteriormente, support libraryusaba la versión SDK pero AndroidX usa el Semantic-version. Va a volver a versionar desde 28.0.0 → 1.0.0.

Cómo migrar el proyecto actual

En Android Studio 3.2 (septiembre de 2018), hay una opción directa para migrar un proyecto existente a AndroidX. Este refactoriza todos los paquetes automáticamente.

Antes de migrar, se recomienda hacer una copia de seguridad de su proyecto.

Proyecto existente

  • Android Studio> Menú Refactor> Migrar a AndroidX ...
  • Analizará y abrirá la ventana Refractor en la parte inferior. Aceptar los cambios a realizar.

imagen

Nuevo proyecto

Pon estas banderas en tu gradle.properties

android.enableJetifier=true
android.useAndroidX=true

Verifique las asignaciones de @ Library para obtener el mismo paquete de AndroidX .

Consulte @ Página oficial de Migrar a AndroidX

¿Qué es el chorro de agua?

Errores de migrar

  • Si crea una aplicación y encuentra algunos errores después de la migración, debe corregir esos errores menores. No se quedará atrapado allí, porque eso se puede solucionar fácilmente.
  • Las bibliotecas de terceros no se convierten a AndroidX en el directorio, pero Jetifier las convierte en tiempo de ejecución , así que no se preocupe por los errores de tiempo de compilación, su aplicación se ejecutará perfectamente.

Soporte 28.0.0 es la última versión?

Desde la revisión de soporte de Android 28.0.0

Esta será la última versión de la función bajo el paquete android.support , y se alienta a los desarrolladores a migrar a AndroidX 1.0.0

Así que vaya con AndroidX, porque Android actualizará solo el paquete androidx a partir de ahora.

Otras lecturas

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

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

Khemraj
fuente
2
@androidmalin Me alegra saber de usted - esta información lo ayudó :)
Khemraj
¿En qué circunstancias puede / debe establecer enableJetifier en falso?
Mark
1
@Mark enableJetifier=falsees el valor predeterminado. Es falso cuando no lo configura. Eso significa que ninguna de sus bibliotecas será reescrita en AndroidX.
Khemraj
44
La migración de Android Studio está funcionando mal. tuve que manualmente fix cientos de archivos ... Paso más tiempo para código del arreglo debido a cambios de Google herramientas que realmente programar el código que asuntos ... suspiro
LearningPath
1
Ahora se llama (3.3)Migrate to AndroidX
Dale
32

De acuerdo con la documentación :

androidx es una nueva estructura de paquetes para aclarar qué paquetes se incluyen con el sistema operativo Android y cuáles se incluyen con el APK de su aplicación. En adelante, la jerarquía de paquetes de Android. * Estará reservada para los paquetes de Android que se envían con el sistema operativo; se emitirán otros paquetes en la nueva jerarquía de paquetes androidx. *.

La estructura del paquete rediseñado es para fomentar bibliotecas más pequeñas y más enfocadas. Aquí encontrará detalles sobre las asignaciones de artefactos .

Hay bibliotecas de soporte (que contienen componentes y paquetes para compatibilidad con versiones anteriores) llamadas "v7" cuando el nivel mínimo de SDK admitido es 14, el nuevo nombre deja en claro la división entre las API incluidas en la plataforma y las bibliotecas para desarrolladores de aplicaciones que se utilizan en diferentes versiones de Android. Puede consultar el anuncio oficial para más detalles.

Sagar
fuente
22

AndroidX es el proyecto de código abierto que el equipo de Android utiliza para desarrollar, probar, empaquetar, versionar y lanzar bibliotecas dentro de Jetpack .

AndroidX es una mejora importante para la biblioteca original de soporte de Android . Al igual que la Biblioteca de soporte, AndroidX se envía por separado del sistema operativo Android y ofrece compatibilidad con versiones anteriores de Android. AndroidX reemplaza completamente la Biblioteca de soporte al proporcionar paridad de funciones y nuevas bibliotecas.

AndroidX incluye las siguientes características:

  • Todos los paquetes en AndroidX viven en un espacio de nombres consistente que comienza con la cadena androidx. Los paquetes de la biblioteca de soporte se han mapeado en los correspondientes paquetes androidx. *. Para obtener una asignación completa de todas las clases antiguas y crear artefactos con las nuevas, consulte la página Refactorización de paquetes.

  • A diferencia de la Biblioteca de soporte, los paquetes de AndroidX se mantienen y actualizan por separado. Los paquetes de Androidx usan estrictamente a Semantic Versioningpartir de la versión 1.0.0. Puede actualizar las bibliotecas de AndroidX en su proyecto de forma independiente.

  • Todo el nuevo desarrollo de la biblioteca de soporte se realizará en la biblioteca de AndroidX. Esto incluye el mantenimiento de los artefactos originales de la Biblioteca de soporte y la introducción de nuevos componentes de Jetpack.

Usando AndroidX

Consulte Migrar a AndroidX para obtener información sobre cómo migrar un proyecto existente.

Si desea usar AndroidX en un nuevo proyecto, debe configurar el SDK de compilación en Android 9.0 (nivel de API 28) o superior y establecer los siguientes indicadores del complemento Android Gradle en true en su gradle.propertiesarchivo.

  • android.useAndroidX: Cuando se establece en verdadero, el complemento de Android utiliza la biblioteca de AndroidX adecuada en lugar de una biblioteca de soporte. El indicador es falso de forma predeterminada si no se especifica.

  • android.enableJetifier: Cuando se establece en verdadero, el complemento de Android migra automáticamente las bibliotecas de terceros existentes para usar AndroidX reescribiendo sus archivos binarios. El indicador es falso de forma predeterminada si no se especifica.

Para las asignaciones de artefactos, vea esto

Basi
fuente
14

Este artículo Android Jetpack: ¿Qué significan los anuncios recientes para la Biblioteca de soporte de Android? lo explica bien

Hoy, muchos consideran que la Biblioteca de soporte es una parte esencial del desarrollo de aplicaciones de Android, hasta el punto de que es utilizada por el 99 por ciento de las aplicaciones en la tienda Google Play. Sin embargo, a medida que la Biblioteca de soporte ha crecido, se han deslizado inconsistencias en torno a la convención de nomenclatura de la biblioteca.

Inicialmente, el nombre de cada paquete indicaba el nivel mínimo de API admitido por ese paquete, por ejemplo, support-v4. Sin embargo, la versión 26.0.0de la Biblioteca de soporte aumentó la API mínima a 14, por lo que hoy en día muchos de los nombres de paquetes no tienen nada que ver con el nivel mínimo de API compatible. Cuando los paquetes support-v4 y support-v7 tienen una API mínima de 14, ¡es fácil ver por qué la gente se confunde!

Para aclarar esta confusión, Google está refactorizando la Biblioteca de soporte en una nueva estructura de paquete de la biblioteca de extensiones de Android (AndroidX). AndroidX presentará nombres de paquetes simplificados, así como los ID de grupo y de artefactos de Maven que reflejan mejor el contenido de cada paquete y sus niveles de API compatibles.

Con la convención de nomenclatura actual, tampoco está claro qué paquetes se incluyen con el sistema operativo Android y cuáles se incluyen con el APK (Kit de paquete de Android) de su aplicación . Para aclarar esta confusión, todas las bibliotecas desglosadas se moverán al espacio de nombres androidx. * De AndroidX, mientras que la jerarquía de paquetes android. * Se reservará para los paquetes que se envían con el sistema operativo Android .

onmyway133
fuente
12

Solo algunas partes adicionales de mi parte a todas las respuestas disponibles

Necesidad de AndroidX

  1. Como se dijo en una respuesta sorprendente por @KhemRaj,

Con la convención de nomenclatura actual, no está claro qué paquetes se incluyen con el sistema operativo Android y cuáles se incluyen con el APK ( Kit de paquete de Android ) de su aplicación . Para aclarar esta confusión, todas las bibliotecas desglosadas se moverán al espacio de nombres androidx. * De AndroidX, mientras que la jerarquía de paquetes android. * Se reservará para los paquetes que se envían con el sistema operativo Android.

  1. Aparte de este,

    Inicialmente, el nombre de cada paquete indicaba el nivel mínimo de API admitido por ese paquete, por ejemplo, support-v4 . Sin embargo, la versión 26.0.0 de la Biblioteca de soporte aumentó la API mínima a 14 , por lo que hoy en día muchos de los nombres de paquetes no tienen nada que ver con el nivel mínimo de API admitido. Cuando los paquetes support-v4 y support-v7 tienen una API mínima de 14, es fácil ver por qué la gente se confunde. Entonces, ahora con AndroidX, no hay dependencia en el nivel de API.

Otro cambio importante es que los artefactos de AndroidX se actualizarán de forma independiente, por lo que podrá actualizar las bibliotecas de AndroidX individuales en su proyecto, en lugar de tener que cambiar cada dependencia a la vez. ¡Esos mensajes frustrantes de " Todas las bibliotecas com.android.support deben usar exactamente la misma especificación de versión " deberían ser cosa del pasado!

Abhishek Kumar
fuente
7

Conocí AndroidX a partir de este video de Android Dev Summit . El resumen es -

  1. No más biblioteca de soporte: Google nunca mantendrá la biblioteca de soporte de Android bajo el espacio de nombres de la biblioteca de soporte. Entonces, si desea encontrar soluciones a un error en la biblioteca de soporte, debe migrar su proyecto en AndroidX
  2. Mejor gestión de paquetes: para versiones estandarizadas e independientes, ya que las versiones anteriores de la biblioteca de soporte eran demasiado confusas. Le liberará el dolor del mensaje "Todas las bibliotecas com.android.support deben usar exactamente la misma especificación de versión" .
  3. Otras bibliotecas de Dios han migrado a AndroidX : los servicios de Google Play, Firebase, Mockito 2, etc., migran a AndroidX.
  4. Se publicarán nuevas bibliotecas utilizando el artefacto AndroidX: todas las bibliotecas estarán en el espacio de nombres de AndroidX como Android Jetpack
Gk Mohammad Emon
fuente
4

Es lo mismo que las versiones de soporte de AppCompat, pero tiene menos desorden de las versiones v4 y v7, por lo que es de gran ayuda el uso de los diferentes componentes de los elementos XML de Android.

raj kavadia
fuente
4

androidxreemplazará support librarydespués 28.0.0. Debes migrar tu proyecto para usarlo. androidxusos Semantic Versioning. El uso AndroidXno se confundirá con la versión que se presenta en el nombre de la biblioteca y el nombre del paquete. La vida se hace mas facil

[AndroidX y compatibilidad de soporte]

yoAlex5
fuente
3

AndroidX es el proyecto de código abierto que el equipo de Android utiliza para desarrollar, probar, empaquetar, versionar y lanzar bibliotecas dentro de Jetpack.

Después de horas de lucha, lo resolví incluyendo lo siguiente dentro de app / build.gradle:

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

Pon estas banderas en tu 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'

Al migrar en el estudio de Android, el archivo de aplicación / gradle se actualiza automáticamente con las implementaciones de la biblioteca de corrección de la biblioteca estándar

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

Kanwarpreet Singh
fuente
0

Android proporciona un par de conjuntos de bibliotecas diferentes. Una se llama Biblioteca de soporte de Android y la otra se llama AndroidX. Al seleccionar "Usar artefactos Android. *" Se indica que queremos usar AndroidX.

Patrick Cyubahiro
fuente