01/05/2022
En el vertiginoso mundo del desarrollo de aplicaciones móviles, la eficiencia y la reutilización de código son pilares fundamentales. Android Studio, la plataforma de desarrollo por excelencia para Android, nos brinda una herramienta poderosa para lograrlo: las bibliotecas. Imagina poder empaquetar funcionalidades complejas o componentes de interfaz de usuario que has desarrollado con esmero, y reutilizarlos en múltiples proyectos o incluso compartirlos con otros desarrolladores. Esto no solo acelera el proceso de desarrollo, sino que también fomenta la consistencia y reduce la probabilidad de errores. Este artículo te guiará a través del proceso de creación, integración y uso de bibliotecas en Android Studio, además de presentarte algunas de las librerías más populares que todo desarrollador Android debería conocer.

- ¿Qué es una Biblioteca en Android Studio?
- Creando tu Propia Biblioteca Android
- Integrando tu Biblioteca: Dependencias
- Gestión de Recursos y Consideraciones Avanzadas
- Librerías Populares para el Desarrollo Android
- Preguntas Frecuentes
- ¿Qué diferencia hay entre un archivo JAR y un AAR en Android?
- ¿Por qué debería usar bibliotecas en mi proyecto Android?
- ¿Cómo evito conflictos de nombres de recursos entre mi app y una biblioteca?
- ¿Qué es ProGuard y cómo afecta a las bibliotecas?
- ¿Puedo usar una biblioteca creada en un proyecto en otro proyecto de Android Studio?
- Conclusión
¿Qué es una Biblioteca en Android Studio?
Una biblioteca de Android, en esencia, es un módulo que comparte la misma estructura que un módulo de aplicación de Android. Esto significa que contiene todo lo necesario para compilar una aplicación: código fuente (Kotlin o Java), archivos de recursos (diseños, imágenes, strings), y un manifiesto de Android. Sin embargo, la diferencia crucial radica en su salida: en lugar de compilarse en un archivo APK ejecutable, una biblioteca de Android se compila en un archivo Android ARchive (AAR).
Los archivos AAR son el formato estándar para la distribución de bibliotecas Android. A diferencia de los archivos JAR (Java ARchive), que solo contienen clases y recursos Java, los AAR son mucho más completos y están específicamente diseñados para el ecosistema Android. Sus ventajas clave incluyen:
- Pueden contener recursos de Android (como diseños, elementos de diseño, strings, etc.) y un archivo de manifiesto, lo que permite incluir recursos compartidos además de clases y métodos de Kotlin o Java.
- Pueden contener bibliotecas C o C++ para ser utilizadas por el código C o C++ del módulo de la aplicación, facilitando la integración de componentes nativos.
Los módulos de biblioteca son increíblemente útiles en diversas situaciones. Por ejemplo, si estás desarrollando varias aplicaciones que comparten componentes comunes como actividades, servicios, o diseños de interfaz de usuario, una biblioteca te permite centralizar ese código. También son ideales para aplicaciones que existen en diferentes variantes (como una versión gratuita y una versión de pago) que comparten una base de código principal. En ambos casos, el enfoque es mover los archivos reutilizables a un módulo de biblioteca y luego agregar esta biblioteca como una dependencia para cada módulo de aplicación. Esto garantiza que cualquier cambio en el componente compartido se refleje automáticamente en todas las aplicaciones que lo utilizan, sin necesidad de duplicar código.
Creando tu Propia Biblioteca Android
Crear un módulo de biblioteca en Android Studio es un proceso sencillo y directo. Sigue estos pasos para comenzar a organizar tu código de manera modular:
1. Cómo Crear un Nuevo Módulo de Biblioteca
Para añadir una nueva biblioteca a tu proyecto existente, sigue estos pasos:
- Haz clic en File > New > New Module.
- En el diálogo Create New Module que aparece, selecciona Android Library y luego haz clic en Next. (Aunque también puedes crear una biblioteca Kotlin o Java que compila un archivo JAR, esta guía se centra en las bibliotecas de Android, que son más adecuadas para la reutilización de código específico de Android al permitir la inclusión de recursos y manifiestos).
- Asigna un nombre a tu biblioteca y selecciona una versión mínima del SDK para el código de la misma. Es importante recordar que los nombres de paquetes de módulos deben ser únicos a nivel global dentro del mismo proyecto.
- Finalmente, haz clic en Finish.
Una vez que la sincronización del proyecto de Gradle se haya completado, verás el nuevo módulo de la biblioteca listado en el panel Project. Si no lo ves, asegúrate de que el panel esté mostrando la vista de Android.
2. Cómo Convertir un Módulo de Aplicación Existente en un Módulo de Biblioteca
Si ya tienes un módulo de aplicación con código que deseas reutilizar como biblioteca, puedes convertirlo fácilmente:
- Abre el archivo
build.gradlea nivel de módulo (build.gradle.ktssi usas Kotlin Script). - Elimina la línea para
applicationId. Solo un módulo de aplicación Android puede definir esto. - Busca el bloque
pluginsen la parte superior del archivo. Originalmente, se verá así (ejemplo para Groovy):plugins { id 'com.android.application' } - Cámbialo por lo siguiente:
plugins { id 'com.android.library' } - Guarda el archivo y haz clic en File > Sync Project with Gradle Files.
La estructura del módulo permanecerá igual, pero ahora funcionará como una biblioteca de Android. La compilación de este módulo generará un archivo AAR en lugar de un APK.
Para compilar el archivo AAR, selecciona el módulo de biblioteca en la ventana Project y haz clic en Build > Build APK. Aunque el menú dice APK, para un módulo de biblioteca, generará el AAR.
Integrando tu Biblioteca: Dependencias
Una vez que tienes tu biblioteca, el siguiente paso es integrarla en tus proyectos. Android Studio y Gradle ofrecen varias formas de gestionar las dependencias.
1. Usando tu Biblioteca dentro del Mismo Proyecto
La forma más común de usar una biblioteca que acabas de crear es dentro del mismo proyecto de Android Studio. Para ello, añade una dependencia a nivel de proyecto:
- Ve a File > Project Structure > Dependencies.
- Selecciona el módulo de la aplicación (o de otra biblioteca) al que deseas añadir la dependencia.
- En la pestaña Declared Dependencies, haz clic en el signo + y selecciona Module Dependency en el menú.
- En el diálogo Add Module Dependency, selecciona tu módulo de biblioteca.
- Selecciona la configuración que requiere esta dependencia (generalmente
implementation, si se aplica a todas las configuraciones) y haz clic en OK.
Android Studio editará automáticamente el archivo build.gradle de tu módulo para añadir la dependencia. Por ejemplo, en Groovy, verás una línea similar a:
implementation project(path: ":nombre-de-tu-libreria")2. Usando tu Biblioteca en Otros Proyectos (Repositorios Maven)
La forma recomendada de compartir dependencias (tanto JARs como AARs) entre diferentes proyectos es a través de un repositorio de Maven. Esto puede ser un servicio público como Maven Central o un repositorio privado en tu disco local o en un servidor.

Cuando una biblioteca de Android se publica en un repositorio de Maven, incluye los metadatos necesarios para que las dependencias transitivas de la biblioteca también se incluyan en la compilación que la usa, evitando duplicados. Para añadir una dependencia de una biblioteca ya publicada en Maven a otro proyecto:
- Asegúrate de que el repositorio Maven esté configurado en el bloque
dependencyResolutionManagement { repositories {...}}de tu archivosettings.gradleosettings.gradle.kts. - Ve a File > Project Structure > Dependencies.
- En la pestaña Declared Dependencies, haz clic en el signo + y selecciona Library Dependency.
- En el diálogo Add Library Dependency, usa el cuadro de búsqueda para encontrar la biblioteca que deseas añadir.
- Selecciona la configuración (normalmente
implementation) y haz clic en OK.
Tu archivo build.gradle de la aplicación mostrará una declaración similar a:
implementation 'com.ejemplo:nombre-libreria:1.0.0'3. Añadiendo tu AAR o JAR Directamente como Dependencia
Si no puedes publicar tu biblioteca en un repositorio Maven, puedes añadir el archivo AAR o JAR directamente a tu proyecto. Sin embargo, en este caso, deberás gestionar manualmente las dependencias transitivas de ese AAR.
- Ve a File > Project Structure > Dependencies.
- En la pestaña Declared Dependencies, haz clic en el signo + y selecciona Jar Dependency.
- En el diálogo Add Jar/Aar Dependency, ingresa la ruta de acceso a tu archivo AAR o JAR, y luego selecciona la configuración a la que se aplica la dependencia (
implementationpara todas las configuraciones).
La declaración en tu build.gradle será similar a:
implementation files('ruta/a/mi_libreria.aar')Para importar una dependencia en la compilación de Gradle que se ejecuta fuera de Android Studio, puedes añadir una ruta de acceso a la dependencia en el archivo build.gradle de tu aplicación. Por ejemplo, para incluir todos los archivos JAR y AAR de una carpeta libs:
dependencies { implementation fileTree(dir: "libs", include: ["*.jar", "*.aar"]) }Gestión de Recursos y Consideraciones Avanzadas
El desarrollo con bibliotecas implica ciertas consideraciones adicionales para asegurar un comportamiento óptimo y evitar conflictos.
Declarando un Recurso Público
Por defecto, todos los recursos dentro del directorio res/ de tu proyecto de biblioteca son considerados públicos. Sin embargo, para tener un control más granular y evitar que los usuarios de tu biblioteca accedan a recursos internos, puedes definir explícitamente qué recursos son públicos. Esto se hace añadiendo una declaración <public> al archivo public.xml de tu biblioteca, que debe crearse en el directorio res/values/ si no existe.
Por ejemplo, para hacer públicos dos recursos de cadena específicos:
<resources> <public name="mylib_app_name" type="string"/> <public name="mylib_public_string" type="string"/> </resources>Al declarar al menos un recurso público, todos los demás recursos se vuelven privados implícitamente. Esto es útil porque evita que los desarrolladores reciban sugerencias de autocompletado para recursos internos y te permite cambiar o eliminar esos recursos privados sin afectar a los clientes de la biblioteca. Los recursos privados se filtran en el autocompletado y la herramienta Lint muestra una advertencia si intentas referenciarlos. Para hacer que todos los recursos sean privados, puedes añadir una etiqueta <public /> vacía.
Consideraciones de Desarrollo para Módulos de Biblioteca
Al trabajar con módulos de biblioteca y aplicaciones dependientes, ten en cuenta los siguientes comportamientos y limitaciones:
- Prioridad de Combinación de Bibliotecas: Las bibliotecas se combinan con la aplicación de menor a mayor prioridad durante el tiempo de compilación. Si existen recursos con el mismo nombre en la aplicación y en una biblioteca, o entre varias bibliotecas, el recurso de la aplicación tiene prioridad. En caso de conflictos entre varias bibliotecas AAR, se utiliza el recurso de la biblioteca que aparece primero en la lista de dependencias. Para evitar conflictos, es una buena práctica usar un prefijo o un esquema de nombres consistente y único para los recursos de tu biblioteca.
- Dependencias JAR Transitivas: Cuando una dependencia JAR se añade a un proyecto de biblioteca que genera un AAR, el módulo de la biblioteca empaqueta el JAR con su AAR. Sin embargo, si el proyecto incluye un módulo de biblioteca que es consumido por un módulo de aplicación, el módulo de aplicación trata la dependencia JAR local de la biblioteca como una dependencia transitiva. Esto significa que el JAR local es procesado por el módulo de la aplicación consumidora, no por el módulo de la biblioteca, lo que acelera las compilaciones incrementales.
- Dependencia de Bibliotecas JAR Externas: Un módulo de biblioteca puede depender de una biblioteca JAR externa. En este caso, tanto el módulo de biblioteca como la aplicación dependiente deben declarar la biblioteca externa en sus archivos de manifiesto usando un elemento
<uses-library>. - Compatibilidad con
minSdkVersion: El valor deminSdkVersiondel módulo de la aplicación debe ser igual o mayor que la versión definida por la biblioteca. Esto se debe a que la biblioteca se compila como parte del módulo de la aplicación dependiente, y las APIs utilizadas en la biblioteca deben ser compatibles con la versión de la plataforma que soporta la aplicación. - Clases
RSeparadas: Cada módulo de biblioteca crea su propia claseR. Cuando se compilan los módulos de aplicación dependientes, los módulos de biblioteca se compilan en un archivo AAR y se añaden al módulo de la aplicación. Por lo tanto, cada biblioteca tiene su propia claseRcuyo nombre corresponde al nombre del paquete de la biblioteca. - Configuración de ProGuard: Si estás desarrollando una biblioteca que será publicada como AAR, puedes incluir un archivo de configuración de ProGuard dentro de la biblioteca. Esto asegura que las reglas de ofuscación y optimización se apliquen consistentemente cuando la biblioteca se incorpore a una aplicación. Las herramientas de compilación incorporan este archivo en el AAR generado. Cuando la biblioteca se añade a un módulo de aplicación, el archivo ProGuard de la biblioteca se añade al archivo de configuración ProGuard (
proguard.txt) del módulo de aplicación. Para especificar un archivo ProGuard en tu biblioteca, usa la propiedadconsumerProguardFilesdentro del bloquedefaultConfigdel archivobuild.gradlede la biblioteca. Por ejemplo:android { defaultConfig { consumerProguardFiles 'lib-proguard-rules.txt' } }Si la biblioteca es parte de una compilación de varios módulos que se compila en un APK (y no genera un AAR), la reducción de código debe ejecutarse solo en el módulo de la aplicación que consume la biblioteca.
- Pruebas de Módulos de Biblioteca: Probar un módulo de biblioteca es muy similar a probar una aplicación. La principal diferencia es que la biblioteca y sus dependencias se incluyen automáticamente como dependencias del APK de prueba. El APK de prueba incluye no solo su propio código, sino también el AAR de la biblioteca y todas sus dependencias. La tarea
androidTestinstala y desinstala solo el APK de prueba.
Anatomía de un Archivo AAR
Un archivo AAR es esencialmente un archivo ZIP con la extensión .aar y el tipo de artefacto de Maven aar. La única entrada obligatoria dentro de este ZIP es /AndroidManifest.xml. Además, un archivo AAR puede incluir una o más de las siguientes entradas opcionales:
/classes.jar: Contiene las clases compiladas de Java/Kotlin./res/: Directorio que contiene todos los recursos./R.txt: Mapeo de IDs de recursos./public.txt: Lista de recursos declarados como públicos./assets/: Directorio para activos./libs/: Directorio para bibliotecas JAR privadas./jni/: Directorio para bibliotecas nativas (.so)./proguard.txt: Reglas de ProGuard para la biblioteca./lint.jar: Configuraciones de Lint para la biblioteca.
Librerías Populares para el Desarrollo Android
Más allá de crear tus propias bibliotecas, el ecosistema Android está repleto de librerías de terceros que pueden acelerar drásticamente tu proceso de desarrollo. Estas librerías son conjuntos de implementaciones de comportamientos escritos en un lenguaje de programación con interfaces bien definidas, y a menudo incluyen documentación, archivos de configuración y código preescrito. Aquí te presentamos algunas de las más influyentes:
Inyección de Dependencias
- Dagger 2: Esta es una de las librerías de inyección de dependencia más potentes y eficientes. Dagger 2 se basa en anotaciones Java en tiempo de compilación para analizar y resolver dependencias, lo que le permite evitar las penalizaciones de rendimiento en el inicio o problemas de validación en tiempo de ejecución que otras soluciones pueden sufrir. Simplifica el acceso a instancias compartidas, permitiendo declarar campos con una simple anotación.
Conexión a Internet
- Retrofit: Un cliente REST para Android y Java mantenido por Square, que mapea de forma inteligente una API a una interfaz utilizando anotaciones. Retrofit simplifica enormemente las peticiones de red, permitiendo manipular encabezados, endpoints, parámetros y cuerpos de petición con facilidad. Además, se encarga del análisis de objetos POJO (Plain Old Java Objects) mediante convertidores, haciendo que el manejo de datos de API sea mucho más sencillo y legible.
Carga de Imágenes
La carga y gestión eficiente de imágenes es crucial para el rendimiento de las aplicaciones Android.
- Picasso: También mantenida por Square, Picasso es una librería de carga de imágenes ampliamente utilizada y muy confiable. Se encarga automáticamente del reciclaje de
ImageView, la cancelación de descargas en adaptadores y facilita transformaciones de imagen complejas con un uso mínimo de memoria. Detecta la reutilización del adaptador y permite transformaciones personalizadas para efectos avanzados. - Glide: Otra excelente opción recomendada directamente por Google. Glide es un cargador de imágenes gestionado por Bumptech que proporciona soporte para GIFs animados y un robusto almacenamiento en caché de imágenes. Su API flexible permite conectar cualquier pila de red (la predeterminada es HttpUrlConnection). Su objetivo principal es asegurar un scroll fluido en listas de imágenes y es muy efectivo para manipular imágenes remotas.
Escaneo
Para funcionalidades de escaneo de códigos de barras y QR:
- ZXing (Zebra Crossing): Una biblioteca de procesamiento de imágenes de código de barras implementada en Java, con ports a otros lenguajes. Google utiliza ZXing para indexar millones de códigos de barras en la web y es la base de la aplicación de escáner de código de barras de Android.
- CAMView: Una alternativa eficaz a ZXing, CAMView es una biblioteca de cámara Android de fácil acceso con un escáner QR integrado basado en ZXing. Proporciona componentes que se pueden colocar en archivos de diseño, dando acceso inmediato a la vista previa en streaming de la cámara, escaneo de códigos de barras y procesamiento de datos personalizado.
View Binding
Estas librerías eliminan el código repetitivo asociado con la asignación de vistas a variables, mejorando la legibilidad y reduciendo errores.
- ButterKnife: Desarrollado por Jake Wharton, ButterKnife es una biblioteca reconocida que ayuda a asignar identificadores a las vistas sin esfuerzo, evitando el uso excesivo de
findViewById(). Utiliza anotaciones para vincular vistas de manera eficiente. - Android Databinding: Integrada en la biblioteca de soporte de Android (requiere Android Studio 1.3+). A diferencia de ButterKnife, no usa anotaciones. Permite vincular componentes de la interfaz de usuario a fuentes de datos en la aplicación utilizando un formato declarativo en lugar de programación explícita, lo que resulta en un código más limpio y modular.
Depuración de Errores
La depuración es un paso imprescindible en el desarrollo de apps. Estas librerías pueden ser de gran ayuda:
- Stetho: Descrito como un "puente de depuración sofisticado para aplicaciones de Android". Stetho permite la inspección de red, la base de datos, la consola de JavaScript y otras funciones de las Herramientas para Desarrolladores de Chrome directamente en tu aplicación Android. Ofrece una potente interfaz de línea de comandos para las aplicaciones internas.
Programación Reactiva
- RxJava2: Si buscas implementar la programación reactiva, RxJava2 es una elección excelente. Es una biblioteca para desarrollar aplicaciones basadas en eventos asíncronamente usando secuencias de "observables". Simplifica el encadenamiento de operaciones asíncronas, ofrece una forma más explícita de gestionar operaciones concurrentes y facilita la detección de errores.
Gráficos
Para visualizar datos de manera efectiva en tu aplicación:
- MPAndroidChart: Una librería impecable para imprimir gráficos en Android. Soporta una amplia variedad de tipos de gráficos (barras, radar, líneas, burbujas, tarta, velas, etc.), añadiendo opciones de animaciones, escalado y arrastre.
- Holo Graph Library: Otra biblioteca gráfica popular, ideal para añadir gráficos y cuadros bien diseñados a las aplicaciones de Android. Incluye diagramas de líneas, barras, tarta y el innovador "MultiSeriesDonutGraph".
Componentes Gráficos
- Gravity View: Una biblioteca que utiliza los sensores de movimiento del dispositivo para la inclinación de imágenes. Permite a los usuarios realizar ciertas funciones girando su dispositivo, creando experiencias de usuario inmersivas. Requiere Android 3.0 o superior, y puede usar el acelerómetro si el dispositivo no tiene giroscopio.
Testing
Asegurar la calidad de tu aplicación es vital, y las pruebas son clave.

- Espresso: Parte de la biblioteca de soporte de pruebas de Android, Espresso es un framework de prueba que permite a los desarrolladores crear pruebas de interfaz de usuario para aplicaciones Android. Simula la interacción de un usuario real con la aplicación, ejecutándose tanto en dispositivos reales como en emuladores, y permite verificar el comportamiento de los componentes de la IU.
- Robolectric: Una biblioteca de pruebas de unidades que simula el SDK de Android para las pruebas, eliminando la necesidad de otros frameworks como Mockito en muchos casos. Maneja la inflación de carga de recursos y vistas, haciendo que las pruebas sean más efectivas y potentes para realizar funciones que dependen del marco de Android sin la necesidad de un emulador o dispositivo real.
Preguntas Frecuentes
A continuación, respondemos algunas de las preguntas más comunes sobre las bibliotecas en Android Studio:
¿Qué diferencia hay entre un archivo JAR y un AAR en Android?
La principal diferencia radica en su contenido y propósito. Un archivo JAR (Java ARchive) contiene solo clases y recursos Java, y es útil para compartir código Java genérico. Un archivo AAR (Android ARchive), por otro lado, está específicamente diseñado para Android. Además de las clases Java/Kotlin, un AAR puede contener recursos de Android (como diseños, imágenes, strings), un archivo AndroidManifest.xml, activos, y bibliotecas nativas (C/C++). Esto lo hace ideal para componentes reutilizables en el ecosistema Android, ya que puede incluir todos los elementos necesarios para un módulo de interfaz de usuario o una funcionalidad completa.
¿Por qué debería usar bibliotecas en mi proyecto Android?
El uso de bibliotecas ofrece múltiples beneficios: reutilización de código (evitando la duplicación y facilitando el mantenimiento), modularidad (dividiendo una aplicación grande en componentes manejables), aceleración del desarrollo (aprovechando funcionalidades preexistentes de terceros o propias), y consistencia (asegurando que los componentes compartidos se comporten de la misma manera en todas las aplicaciones). Son esenciales para proyectos con múltiples variantes de APK o para equipos grandes que necesitan compartir código.
¿Cómo evito conflictos de nombres de recursos entre mi app y una biblioteca?
Los conflictos de recursos pueden ocurrir cuando tu aplicación y una biblioteca (o varias bibliotecas) definen recursos con el mismo nombre. Para evitar esto, es una buena práctica usar un prefijo único o un esquema de nomenclatura consistente para todos los recursos dentro de tu módulo de biblioteca. Por ejemplo, si tu biblioteca se llama "MiBiblioteca", podrías nombrar tus recursos como mylib_nombre_string o mylib_layout_principal. Esto reduce la probabilidad de colisiones de nombres con los recursos de la aplicación o de otras bibliotecas.
¿Qué es ProGuard y cómo afecta a las bibliotecas?
ProGuard es una herramienta que reduce, ofusca y optimiza el código de tu aplicación y sus dependencias. Elimina código no utilizado, renombra clases y miembros para reducir el tamaño del archivo APK, y puede hacer que la ingeniería inversa sea más difícil. Cuando incluyes un archivo ProGuard en tu biblioteca (usando consumerProguardFiles), aseguras que las reglas de optimización y ofuscación de tu biblioteca se apliquen automáticamente cuando se integre en una aplicación. Esto garantiza que tu biblioteca funcione de manera eficiente y segura, sin que los desarrolladores de la aplicación tengan que configurar manualmente las reglas de ProGuard para tu biblioteca.
¿Puedo usar una biblioteca creada en un proyecto en otro proyecto de Android Studio?
Sí, absolutamente. Esta es una de las principales ventajas de crear bibliotecas. La forma recomendada de hacerlo es publicar tu biblioteca como un archivo AAR en un repositorio de Maven (ya sea público como Maven Central o privado). Una vez publicada, puedes añadirla como una dependencia en cualquier otro proyecto de Android Studio, especificando sus coordenadas Maven (grupo, artefacto, versión). Si no puedes usar un repositorio Maven, también puedes compartir el archivo AAR directamente e incluirlo como una dependencia de archivo en el nuevo proyecto, aunque esto requiere gestionar manualmente las dependencias transitivas.
Conclusión
Las bibliotecas son un componente indispensable en el desarrollo moderno de Android. Ya sea que necesites encapsular y reutilizar tu propio código o aprovechar el vasto ecosistema de librerías de terceros, dominarlas te permitirá construir aplicaciones más robustas, eficientes y mantenibles. Desde la inyección de dependencias hasta la carga de imágenes, pasando por la programación reactiva y el testing, las herramientas disponibles te empoderan para concentrarte en la lógica de negocio única de tu aplicación, dejando que las bibliotecas manejen las tareas comunes. Al integrar estas prácticas en tu flujo de trabajo, no solo mejorarás la calidad de tu código, sino que también acelerarás significativamente el ciclo de desarrollo de tus proyectos Android.
Si quieres conocer otros artículos parecidos a El Poder de las Librerías en Android Studio puedes visitar la categoría Librerías.
