Gradle es un poco confuso para mí, y también para cualquier desarrollador de Android nuevo. ¿Alguien puede explicar qué es Gradle en Android Studio y cuál es su propósito? ¿Por qué está incluido en Android Studio?
Gradle es un poco confuso para mí, y también para cualquier desarrollador de Android nuevo. ¿Alguien puede explicar qué es Gradle en Android Studio y cuál es su propósito? ¿Por qué está incluido en Android Studio?
Respuestas:
Gradle es un sistema de construcción.
Antes de Android Studio, usabas Eclipse para tus propósitos de desarrollo y, lo más probable es que no supieras cómo construir tu APK de Android sin Eclipse.
Puede hacer esto en la línea de comando, pero debe aprender qué hace cada herramienta (dx, aapt) en el SDK. Eclipse nos salvó a todos de estos bajos pero importantes detalles fundamentales al darnos su propio sistema de compilación.
Ahora, ¿alguna vez te has preguntado por qué la res
carpeta está en el mismo directorio que tu src
carpeta?
Aquí es donde el sistema de compilación entra en escena. El sistema de compilación toma automáticamente todos los archivos de origen ( .java
o .xml
), luego aplica la herramienta adecuada (por ejemplo, toma java
los archivos de clase y los convierte en dex
archivos), y los agrupa a todos en un archivo comprimido, nuestro querido APK.
Este sistema de compilación utiliza algunas convenciones: un ejemplo es especificar el directorio que contiene los archivos de origen (en Eclipse es una \src
carpeta) o archivos de recursos (en Eclipse es una \res
carpeta).
Ahora, para automatizar todas estas tareas, tiene que haber un script; Puede escribir su propio sistema de compilación utilizando scripts de shell en Linux o sintaxis de archivos por lotes en Windows. ¿Entendido?
Gradle es otro sistema de compilación que toma las mejores características de otros sistemas de compilación y las combina en una sola. Se mejora en función de sus deficiencias. Es un sistema de compilación basado en JVM , lo que eso significa es que puede escribir su propio script en Java, que Android Studio utiliza.
Una cosa interesante sobre gradle es que es un sistema basado en complementos . Esto significa que si tiene su propio lenguaje de programación y desea automatizar la tarea de construir algún paquete (salida como un JAR para Java) desde las fuentes, entonces puede escribir un complemento completo en Java o Groovy (o Kotlin, consulte aquí ), y distribuirlo al resto del mundo.
Google vio uno de los sistemas de compilación más avanzados del mercado y se dio cuenta de que podía escribir sus propios scripts con poca o ninguna curva de aprendizaje, y sin aprender Groovy ni ningún otro idioma nuevo. Entonces escribieron el complemento de Android para Gradle.
Debe haber visto build.gradle
archivos en su proyecto. Ahí es donde puede escribir scripts para automatizar sus tareas. El código que vio en estos archivos es el código Groovy. Si escribe System.out.println("Hello Gradle!");
, se imprimirá en su consola.
Un ejemplo simple es que debe copiar algunos archivos de un directorio a otro antes de que ocurra el proceso de compilación real. Un script de compilación de Gradle puede hacer esto.
Es la nueva herramienta de compilación que Google quiere usar para Android. Se está utilizando debido a que es más extensible y útil que la hormiga. Está destinado a mejorar la experiencia del desarrollador.
Puede ver una charla de Xavier Ducrohet del Equipo de desarrolladores de Android en Google I / O aquí.
También hay otra charla sobre Android Studio por Xavier y Tor Norbye, también durante Google I / O aquí .
Gradle es un sistema de compilación que se ejecuta en Android Studio .
En otros idiomas, por ejemplo:
Gradle
es similar a make
, acabo de recibir su concepto
Aquí hay una explicación detallada sobre qué Gradle
es y cómo usarlo en Android Studio.
Explorando los archivos de Gradle
Gradle Build Files
Los archivos de compilación de Gradle utilizan a Domain Specific Language or DSL
para definir la lógica de compilación personalizada y para interactuar con los elementos específicos de Android del complemento de Android para Gradle.
Los proyectos de Android Studio constan de 1 o más módulos, que son componentes que puede compilar, probar y depurar de forma independiente. Cada módulo tiene su propio archivo de compilación, por lo que cada proyecto de Android Studio contiene 2 tipos de archivos de compilación de Gradle.
Archivo de compilación de nivel superior: aquí encontrará las opciones de configuración que son comunes a todos los módulos que conforman su proyecto.
Archivo de compilación a nivel de módulo : cada módulo tiene su propio archivo de compilación Gradle que contiene configuraciones de compilación específicas del módulo. Pasará la mayor parte de su tiempo editando archivos de compilación de nivel de módulo en lugar del archivo de compilación de nivel superior de su proyecto.
Para ver estos build.gradle
archivos, abra el panel Proyecto de Android Studio (seleccionando la pestaña Proyecto) y expanda la carpeta Gradle Scripts. Los primeros dos elementos en la carpeta Gradle Scripts son los archivos de compilación de Gradle a nivel de proyecto y a nivel de módulo
Archivo de compilación Gradle de nivel superior
Cada proyecto de Android Studio contiene un único archivo de compilación de Gradle de nivel superior. Este build.gradle
archivo es el primer elemento que aparece en la carpeta Gradle Scripts y está claramente marcado como Proyecto.
La mayoría de las veces, no necesitará realizar ningún cambio en este archivo, pero sigue siendo útil para comprender su contenido y el papel que desempeña en su proyecto.
Archivos de compilación Gradle a nivel de módulo
Además del archivo de compilación de Gradle a nivel de proyecto, cada módulo tiene un archivo de compilación de Gradle propio. A continuación se muestra una versión anotada de un archivo de compilación básico de Gradle a nivel de módulo.
Otros archivos de Gradle
Además de los archivos build.gradle, su carpeta Gradle Scripts contiene algunos otros archivos Gradle. La mayoría de las veces no tendrá que editar manualmente estos archivos, ya que se actualizarán automáticamente cuando realice cambios relevantes en su proyecto. Sin embargo, es una buena idea comprender el papel que juegan estos archivos dentro de su proyecto.
gradle-wrapper.properties (Versión Gradle)
Este archivo permite a otras personas construir su código, incluso si no tienen instalado Gradle en su máquina. Este archivo verifica si está instalada la versión correcta de Gradle y descarga la versión necesaria si es necesario.
settings.gradle
Este archivo hace referencia a todos los módulos que componen su proyecto.
gradle.properties (Propiedades del proyecto)
Este archivo contiene información de configuración para todo su proyecto. Está vacío de forma predeterminada, pero puede aplicar una amplia gama de propiedades a su proyecto agregándolas a este archivo.
local.properties (ubicación del SDK)
Este archivo le dice al complemento Android Gradle dónde puede encontrar su instalación de Android SDK.
Nota: local.properties
contiene información específica de la instalación local del SDK de Android. Esto significa que no debe mantener este archivo bajo control de origen.
Lectura sugerida - Tutorial de Tutsplus
Tengo una clara comprensión de gradle de esto.
Gradle es un tipo de herramienta de compilación que construye el código fuente del programa. Por lo tanto, es una parte importante de Android Studio y debe instalarse antes de comenzar a desarrollar su aplicación.
No tenemos que instalarlo por separado, porque Android Studio lo hace por nosotros cuando hacemos nuestro primer proyecto.
DEFINICIÓN :: Gradle se puede describir como un mecanismo de construcción estructurado en el que proporciona al desarrollador las herramientas y la flexibilidad para administrar los recursos de un proyecto para crear compilaciones que son smaller in size
, targeting specific requirements
para ciertos dispositivos de ciertas configuraciones
Configuraciones Básicas
minimumSdk
maximumSdk
targettedSdk
versionCode
versionName
BIBLIOTECAS :: Podemos agregar bibliotecas de Android o cualquier otra biblioteca de terceros, además, según los requisitos fáciles, que era una tarea tediosa anteriormente. Si la biblioteca no se ajusta al proyecto existente, se muestra al desarrollador un registro en el que la persona puede encontrar una solución adecuada para realizar cambios en el proyecto y poder agregar la biblioteca. Es solo una línea de dependencia
GENERANDO VARIEDADES DE EDIFICIOS
Combinando tipos de compilación con sabores de compilación para obtener variedades de variantes de compilación
==================== ====================
| BuildTypes | | ProductFlavours |
-------------------- ====================== --------------------
| Debug,Production | || || | Paid,Free,Demo,Mock|
==================== || || ====================
|| ||
VV VV
=================================================================
| DebugPaid, DebugFree, DebugDemo, DebugMock |
| ProductionPaid, ProductionFree, ProductionDemo, ProductionMock |
=================================================================
TAMAÑO REDUCIDO
Gradle ayuda a reducir el tamaño de la compilación generada al eliminar los recursos no utilizados y también los elementos no utilizados de las bibliotecas integradas
PERMISOS DE GESTIÓN
Podemos especificar ciertos permisos para ciertas compilaciones agregando ciertos permisos en ciertos escenarios según los requisitos
CONSTRUYE PARA DETERMINADOS DISPOSITIVOS
Podemos administrar la generación de generación para ciertos dispositivos que incluyen ciertas densidades y ciertos niveles de API. Esto ayuda en la implementación de productos en la tienda de aplicaciones de acuerdo con los requisitos en múltiples tipos de dispositivos
BUENA REFERENCIA
Puede encontrar todo lo que necesita saber sobre Gradle aquí: Guía del usuario de Gradle Plugin
Objetivos del nuevo sistema de compilación
Los objetivos del nuevo sistema de construcción son:
- Facilite la reutilización de código y recursos.
- Facilite la creación de varias variantes de una aplicación, ya sea para distribución multi-apk o para diferentes sabores de una aplicación
- Facilite la configuración, extensión y personalización del proceso de compilación
- Buena integración IDE
¿Por qué gradle?
Gradle es un sistema de compilación avanzado, así como un kit de herramientas de compilación avanzado que permite crear una lógica de compilación personalizada a través de complementos.
Estas son algunas de sus características que nos hicieron elegir Gradle:
- Lenguaje específico de dominio (DSL) para describir y manipular la lógica de compilación
- Los archivos de compilación están basados en Groovy y permiten mezclar elementos declarativos a través del DSL y usar código para manipular los elementos DSL para proporcionar una lógica personalizada.
- Gestión de dependencias incorporada a través de Maven y / o Ivy.
- Muy flexible. Permite usar las mejores prácticas pero no obliga a su propia manera de hacer las cosas.
- Los complementos pueden exponer su propio DSL y su propia API para que los archivos de compilación los utilicen.
- Buena API de herramientas que permite la integración IDE
Me refiero a dos tutoriales para escribir la Respuesta uno , dos
Gradle es una herramienta de construcción declarativa de uso general. Es de propósito general porque puede usarse para construir casi cualquier cosa que desee implementar en el script de compilación. Es declarativo ya que no desea ver mucho código en el archivo de compilación, que no es legible y menos mantenible. Entonces, si bien Gradle proporciona la idea de convenciones y una construcción simple y declarativa, también hace que la herramienta sea adaptable y los desarrolladores puedan ampliarla. También proporciona una manera fácil de personalizar el comportamiento predeterminado y diferentes ganchos para agregar características de terceros.
Gradle combina las partes buenas de ambas herramientas y proporciona características adicionales y utiliza Groovy como un lenguaje específico de dominio (DSL). Tiene el poder y la flexibilidad de la herramienta Ant con características de Maven, como el ciclo de vida de construcción y la facilidad de uso.
¿Por qué gradle? ¿Porqué ahora?
La respuesta de la herramienta de compilación es agregar funcionalidad de secuencias de comandos a través de mecanismos de extensión no estándar. Terminas mezclando código de scripting con XML o invocando scripts externos desde tu lógica de compilación. Es fácil imaginar que necesitará agregar más y más código personalizado con el tiempo. Como resultado, inevitablemente introduce una complejidad accidental, y la facilidad de mantenimiento desaparece.
Supongamos que desea copiar un archivo en una ubicación específica cuando está creando la versión de lanzamiento de su proyecto. Para identificar la versión, marque una cadena en los metadatos que describen su proyecto. Si coincide con un esquema de numeración específico (por ejemplo, 1.0-RELEASE), copie el archivo del punto A al punto B. Desde una perspectiva externa, esto puede sonar como una tarea trivial. Si tiene que confiar en XML, el lenguaje de construcción de muchas herramientas tradicionales, expresar esta lógica simple se vuelve bastante difícil.
Evolución de las herramientas de compilación de Java
La lógica de compilación de Java debe describirse en XML. XML es excelente para describir datos jerárquicos, pero no alcanza a expresar el flujo del programa y la lógica condicional. A medida que el script de compilación crece en complejidad, mantener el código de construcción se convierte en una pesadilla.
En Ant , haces que el objetivo JAR dependa del objetivo de compilación. Ant no da ninguna guía sobre cómo estructurar su proyecto. Aunque permite la máxima flexibilidad, Ant hace que cada script de compilación sea único y difícil de entender. Las bibliotecas externas requeridas por su proyecto generalmente se registran en el control de versiones porque no existe un mecanismo automatizado para extraerlas de una ubicación central.
Maven 1 , lanzado en julio de 2004, trató de facilitar ese proceso. Proporcionó un proyecto estandarizado y una estructura de directorios, así como la gestión de dependencias. Desafortunadamente, la lógica personalizada es difícil de implementar
Gradle encaja perfectamente en esa generación de herramientas de compilación y satisface muchos requisitos de las herramientas de compilación modernas (Figura 1). Proporciona un DSL expresivo, una convención sobre el enfoque de configuración y una potente gestión de dependencias. Realiza el movimiento correcto para abandonar XML e introducir el lenguaje dinámico Groovy para definir su lógica de compilación. Suena convincente, ¿no?
Gradle combina las mejores características de otras herramientas de compilación.
Conjunto de características convincentes de Gradle
¿Por qué construir sus proyectos Java con Gradle en lugar de Ant o Maven?
La herramienta de compilación predeterminada para Android (y la nueva estrella de herramientas de compilación en la JVM) está diseñada para facilitar la creación de scripts de compilaciones complejas en varios idiomas. Sin embargo, ¿debería cambiarlo si está usando Ant o Maven?
La clave para desbloquear las potentes funciones de Gradle dentro de su script de construcción radica en descubrir y aplicar su modelo de dominio, como se muestra en la imagen a continuación.
Gradle no puede conocer todos los requisitos específicos para la construcción de su empresa. Al exponer los ganchos en las fases del ciclo de vida, Gradle permite monitorear y configurar el comportamiento de ejecución del script de compilación.
Gradle establece un vocabulario para su modelo al exponer un DSL implementado en Groovy. Cuando se trata de un dominio de problemas complejos, en este caso, la tarea de crear software, poder usar un lenguaje común para expresar su lógica, puede ser una herramienta poderosa.
Otro ejemplo es la forma en que puede expresar dependencias a bibliotecas externas, un problema muy común resuelto por las herramientas de compilación. Gradle listo para usar le proporciona dos bloques de configuración para su script de compilación que le permiten definir las dependencias y repositorios de los que desea recuperarlos. Si los elementos DSL estándar no se ajustan a sus necesidades, incluso puede introducir su propio vocabulario a través del mecanismo de extensión de Gradle.
Integración con otras herramientas de compilación
Gradle juega bien con Ant, Maven e Ivy de sus predecesores, como se muestra en la imagen a continuación.
Automatizando su proyecto desde la compilación hasta la implementación
En imagen: etapas de una tubería de implementación.
Compilando el código
Ejecución de pruebas unitarias y de integración
Realizar análisis de código estático y generar cobertura de prueba
Creando la distribución
Aprovisionamiento del entorno objetivo
Desplegando el entregable
Realización de humo y pruebas funcionales automatizadas.
Me refiero a dos tutoriales para escribir la Respuesta uno , dos
Gradle es un sistema de construcción . Los sistemas de compilación son herramientas de software diseñadas para automatizar el proceso de compilación de programas. Los sistemas de compilación vienen en varias formas y se utilizan para una variedad de tareas de compilación de software. Si bien su objetivo principal es crear ejecutables de manera eficiente.
Otro término relacionado es Automatización de compilación, que es el proceso de automatizar la creación de una compilación de software y los procesos asociados que incluyen: compilar el código fuente de la computadora en código binario, empaquetar el código binario y ejecutar pruebas automatizadas.
Pocos sistemas de compilación similares para otros idiomas son (ver la lista completa aquí ):
A riesgo de ser discursivo, creo que detrás de esto está la cuestión de por qué la experiencia Android Studio / Gradle es tan mala.
Experiencia típica de Clojure:
Experiencia típica de Android Studio / Gradle:
No estoy seguro de que esto sea culpa de Gradle exactamente. Pero la "importación del proyecto Eclipse" parece bastante escamosa. A pesar de la supuesta sofisticación de Gradle y las virtudes de un sistema de compilación, Android Studio simplemente no parece importar muy bien las dependencias de compilación o el proceso de compilación de Eclipse.
No le indica cuándo no se pudo importar un gráfico de dependencia completo. Android Studio no ofrece ayuda o consejos útiles sobre cómo resolver el problema. No le dice dónde puede buscar manualmente en las carpetas de Eclipse. No te dice qué biblioteca parece faltar. O ayudarlo a buscar Maven, etc. para ellos.
En 2016, cosas como Leiningen / Clojars, o npm del nodo, o pip de Python, o el paquete Debian (y estoy seguro de que muchos administradores de paquetes similares para otros lenguajes y sistemas) funcionan perfectamente ... las dependencias faltantes son cosa del pasado.
Excepto con Android. Android Studio es ahora el único lugar donde todavía parece experimentar un infierno de dependencia perdida.
Me inclino a decir que esto es culpa de Google. Rompieron el ecosistema de Android (y miles de proyectos existentes de Android / tutoriales en línea) cuando decidieron cambiar de Eclipse a Android Studio / Gradle sin producir un proceso de conversión robusto. Las personas cuyos proyectos funcionan en Eclipse no los están adaptando a AS (presumiblemente porque es un dolor para ellos). Y las personas que intentan utilizar esos proyectos en AS están enfrentando los mismos problemas.
Y de todos modos, si Gradle es este sistema de construcción súper potente, ¿por qué sigo administrando muchas otras dependencias en el administrador de SDK? ¿Por qué no puede un proyecto que necesita, por ejemplo, el ndk especificar esto en su archivo Gradle para que se instale y cree automáticamente cuando sea necesario? ¿Por qué es especial NDK? Del mismo modo para las plataformas de destino? ¿Por qué los estoy instalando explícitamente en el IDE en lugar de simplemente verificar mi proyecto contra ellos y tener todo esto resuelto para mí detrás de escena?
Gradle
es un sistema de compilación avanzado, así como un kit de herramientas de compilación avanzado que permite crear lógica de compilación personalizada a través de complementos.
Ventajas:
Entradas manifiestas
A través del DSL es posible configurar las siguientes entradas de manifiesto:
Construir variante
De manera predeterminada, el complemento de Android configura automáticamente el proyecto para crear una versión de depuración y una versión de lanzamiento de la aplicación.
Dependencias
Si tiene archivos binarios en su sistema de archivos local de los que depende un módulo, como archivos JAR, puede declarar estas dependencias en el archivo de compilación para ese módulo.
Primero, el repositorio debe agregarse a la lista, y luego la dependencia debe declararse de manera que Maven o Ivy declaren sus artefactos.
Gradle es para el lenguaje Groovy JVM lo que Ant es para Java. Básicamente, es la herramienta de compilación de Groovy. A diferencia de Ant, se basa en el lenguaje Groovy completo. Puede, por ejemplo, escribir el código de secuencia de comandos Groovy en la secuencia de comandos Gradle para hacer algo en lugar de depender de un idioma de dominio específico.
No conozco la integración específica de IntelliJ, pero imagina que puedes "extender" Groovy de tal manera que puedas escribir primitivas específicas de lenguaje "build" y que simplemente se vuelvan parte del lenguaje Groovy. (La metaprogramación de Groovy es una discusión completa en sí misma). IntelliJ / Google podría usar Gradle para construir un lenguaje de compilación de muy alto nivel, sin embargo, es una compilación de lenguaje en un estándar abierto y expandible.
Gradle es un kit de herramientas de compilación avanzado para Android que gestiona dependencias y le permite definir una lógica de compilación personalizada. las características son como
Personalice, configure y amplíe el proceso de compilación.
Cree múltiples APK para su aplicación con diferentes características usando el mismo proyecto.
Reutilizar código y recursos.
Gradle es un kit de herramientas de construcción automatizado que puede integrarse en muchos entornos diferentes, no solo para proyectos de Android.
Aquí hay algunas cosas que puedes hacer con gradle.
Configuración mínima requerida para nuevos proyectos porque Gradle tiene configuraciones predeterminadas para sus proyectos de estudio de Android.
Declaración de dependencia. Puede declarar archivos jar de dependencia o archivos de biblioteca alojados en un servidor local o remoto.
Gradle genera automáticamente un directorio de prueba y un APK de prueba a partir de la fuente de su proyecto.
Si agrega toda la información necesaria, como keyPassword
y keyAlias
, a su archivo de compilación de Gradle, puede usar Gradle para generar APK firmados.
Gradle puede generar múltiples APK con diferentes paquetes y configuraciones de compilación desde un solo módulo.
En Android Studio, Gradle es una herramienta de compilación personalizada que se utiliza para compilar paquetes de Android (archivos apk) administrando dependencias y proporcionando una lógica de compilación personalizada.
El archivo APK (paquete de aplicación de Android) es un archivo zip especialmente formateado que contiene
Un archivo apk se firma y se envía al dispositivo usando ADB (Android Debug Bridge) donde se ejecuta.
Gradle es una herramienta de compilación personalizada y utilizada para compilar APK o conocido como kit de paquete de aplicación.
por @Brian Gardner:
Gradle es una herramienta de construcción extensa y un administrador de dependencias para proyectos de programación. Tiene un lenguaje específico de dominio basado en Groovy. Gradle también ofrece soporte de construcción por convención para muchos tipos de proyectos, incluidos Java, Android y Scala.
Característica de Gradle:
Gradle es lo que hace posible automatizar la construcción de proyectos complejos de Android que involucran cientos de miles de líneas de código de múltiples fuentes, proyectos, bibliotecas, etc. Puede generar condicionalmente múltiples APK optimizados basados en una gran cantidad de especificaciones de configuración, si usted es interesado, las otras respuestas proporcionan más detalles de este aspecto de Gradle.
Sin embargo, si eres nuevo en el desarrollo de Android, Gradle en el 99% de los casos es lo que detiene la construcción de tu proyecto. Es un sistema complejo e inescrutable que ofusca efectivamente el proceso de compilación de Android y esencialmente lo hace no disponible para desarrolladores sin experiencia, es decir, para construir una aplicación de Android de nivel de entrada simple, el novato desprevenido podría necesitar estudiar y comprender muchas cosas por las que no negociaron. como:
Todas estas cosas son interesantes y útiles para los desarrolladores de Android, pero están lejos de ser fáciles y presentan una barrera de entrada formidable. Sospecho que lo que inspiró al OP para hacer esta pregunta es la sensación de frustración que inevitablemente golpea al desarrollador neófito después de pasar demasiado tiempo tratando de obtener una aplicación simple para construir y ser continuamente frustrado por Gradle. El problema se exacerba perversamente por la abrumadora cantidad de documentación altamente técnica que está disponible para todas estas tecnologías. También para una gran cantidad de necesidades de desarrollo, Gradle es excesivo.
Una alternativa es escribir un script de shell que construya su proyecto mediante la automatización de las herramientas disponibles en el SDK de Android. Las virtudes de este enfoque son muchas, para empezar es probablemente la mejor manera de estudiar y comprender el proceso de compilación y el ecosistema de Android, y le permite controlar completamente cómo se construye su aplicación. Sin embargo, este enfoque es más adecuado para los fanáticos de la tecnología profundamente irremediables que para los novatos sin experiencia que prueban Android.
Lo que destaca por su ausencia (por favor infórmeme si existe tal cosa) es un IDE de nivel de entrada, liviano con un conjunto de características reducidas que simplifica simultáneamente el proceso de compilación sin ocultarlo (por lo tanto, no es un frijol o eclipse). usa Gradle (lo que estaba mal con Ant). Debería facilitar la generación de APK que se ajusten a algunas configuraciones comunes y usar una estructura de proyecto que pueda evolucionar a un proyecto completo de Android Studio si decide tomarlo de esa manera.
En términos simples, Gradle es una herramienta proporcionada por Android Studio para implementar dos procesos importantes:
Resultados de búsqueda Fragmento destacado de la web Android | construir. Gradle Gradle es un sistema de compilación (código abierto) que se utiliza para automatizar la compilación, las pruebas, la implementación, etc. ... Por ejemplo, la secuencia de comandos de compilación de Gradle puede realizar la tarea simple de copiar algunos archivos de un directorio a otro El proceso sucede.
En Android Studio, Gradle se usa para construir nuestros proyectos de aplicaciones de Android, por lo tanto, desempeña el papel de un sistema de construcción. Antes de Android Studio, en Eclipse solíamos compilar y compilar las aplicaciones usando la herramienta de línea de comandos que pronto se hizo cargo de los pasos basados en GUI para construir y ejecutar aplicaciones de Android en eclipse usando ANT. Cada herramienta de desarrollo de aplicaciones de Android tiene que compilar recursos, código fuente de Java, bibliotecas externas y combinarlas en un APK final.
Gradle es un sistema de compilación, que es responsable de la compilación, prueba, implementación y conversión del código en archivos .dex y, por lo tanto, ejecuta la aplicación en el dispositivo.
Como Android Studio viene con el sistema Gradle preinstalado, no es necesario instalar softwares de tiempo de ejecución adicionales para construir nuestro proyecto. Cada vez que hace clic en el botón en Android Studio, una tarea de Gradle se activa automáticamente y comienza a construir el proyecto y, una vez que Gradle completa su tarea, la aplicación comienza a ejecutarse en AVD o en el dispositivo conectado.
Un sistema de compilación como Gradle no es un compilador, un enlazador, etc., pero controla y supervisa la operación de compilación, vinculación de archivos, ejecución de casos de prueba y, finalmente, agrupa el código en un archivo apk para su aplicación de Android.
Hay dos archivos build.gradle para cada proyecto de estudio de Android, uno para aplicaciones y otro para archivos de compilación de nivel de proyecto (nivel de módulo) .
En el proceso de compilación, el compilador toma el código fuente, recursos, archivos JAR bibliotecas externas y AndroidManifest.xml (que contiene los meta-datos sobre la aplicación) y convertirlos en .dex (archivos ejecutables) Dalvik archivos, que incluye el código de bytes . Ese código de bytes es compatible con todos los dispositivos Android para ejecutar su aplicación. Luego, APK Manager combina los archivos .dex y todos los demás recursos en un solo archivo apk. APK Packager firma el apk de depuración o lanzamiento usando el almacén de claves de depuración o lanzamiento correspondiente.
El apk de depuración generalmente se usa con fines de prueba o podemos decir que se usa solo en la etapa de desarrollo. Cuando su aplicación esté completa con las funciones deseadas y esté listo para publicar su aplicación para uso externo, entonces necesitará un apk de lanzamiento firmado con un almacén de claves de lanzamiento.
Ahora vamos a arrojar algo de luz sobre los archivos gradle.
setting.gradle El setting.gradle archivo (Gradle ajuste) se utiliza para especificar todos los módulos utilizados en su aplicación.
build.gradle (nivel de proyecto) El archivo build.gradle de nivel superior (módulo) es un archivo de compilación de nivel de proyecto, que define las configuraciones de compilación a nivel de proyecto. Este archivo aplica configuraciones a todos los módulos en el proyecto de aplicación de Android.
build.gradle (nivel de aplicación) El archivo de nivel de aplicación build.gradle se encuentra en cada módulo del proyecto de Android. Este archivo incluye el nombre de su paquete como ID de aplicación, nombre de versión (versión apk), código de versión, sdk mínimo y objetivo para un módulo de aplicación específico. Cuando incluye bibliotecas externas (no los archivos jar), debe mencionarlo en el archivo gradle de nivel de aplicación para incluirlas en su proyecto como dependencias de la aplicación.
Nota: Si una determinada aplicación se desarrolla en variaciones para módulos individuales como, por ejemplo, Smart Phone, Tablet o TV, se deben crear archivos gradle separados para todos. Incluso puede iniciar su sistema gradle a través de la herramienta de línea de comandos. Los siguientes comandos se utilizan para ello:
./gradlew build - (proyecto de construcción)
./gradlew clean build - (proyecto de construcción completo desde cero)
./gradlew clean build - (ejecuta la prueba)
./gradlew wrapper - (para ver todas las tareas disponibles)
Gradle = Groovy + Cradle Comentario del foro Hans Dockter
La confusión es un poco innecesaria cuando podría haberse llamado "Build" o algo así en Android Studio.
Nos gusta hacernos las cosas difíciles a nosotros mismos en la comunidad de Desarrollo.