para - update gradle android studio




¿Qué es Gradle en Android Studio? (15)

Respuesta corta

Gradle es un sistema de compilación.

Respuesta larga

Antes de Android Studio, estaba usando Eclipse para sus propósitos de desarrollo y, lo más probable es que no supiera cómo construir su APK de Android sin Eclipse.

Puede hacer esto en la línea de comandos, pero debe aprender qué hace cada herramienta (dx, aapt) en el SDK. Eclipse nos salvó a todos de estos detalles de bajo nivel, pero importantes y fundamentales, al darnos su propio sistema de compilación.

Ahora, ¿alguna vez te has preguntado por qué la carpeta res está en el mismo directorio que tu carpeta src ?

Aquí es donde el sistema de construcción entra en la imagen. El sistema de compilación toma automáticamente todos los archivos de origen ( .java o .xml ), luego aplica la herramienta adecuada (por ejemplo, toma los archivos de clase java y los convierte en archivos dex ), y los agrupa en un archivo comprimido, nuestro querido APK.

Este sistema de compilación usa algunas convenciones: un ejemplo de uno es especificar el directorio que contiene los archivos de origen (en Eclipse es la carpeta \src ) o los archivos de recursos (en Eclipse es la carpeta de \res ).

Ahora, para automatizar todas estas tareas, tiene que haber un script; puede escribir su propio sistema de compilación utilizando shell scripting en linux o sintaxis de archivos por lotes en Windows. ¿Lo tengo?

Gradle es otro sistema de compilación que toma las mejores características de otros sistemas de compilación y las combina en uno. Se ha mejorado en base a sus deficiencias. Es un sistema de compilación basado en JVM , lo que significa que puedes escribir tu propio script en Java, que Android Studio utiliza.

Una cosa interesante acerca de gradle es que es un sistema basado en plugin . Esto significa que si tiene su propio lenguaje de programación y desea automatizar la tarea de compilar algún paquete (salida como un JAR para Java) desde las fuentes, puede escribir un complemento completo en Java o Groovy (o Kotlin, consulte here ), y Distribúyelo al resto del mundo.

¿Por qué lo usó Google?

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 o cualquier otro idioma nuevo. Así que escribieron el plugin de Android para Gradle.

Debe haber visto los archivos de build.gradle en su proyecto. Ahí es donde puede escribir scripts para automatizar sus tareas. El código que viste en estos archivos es el código Groovy. Si escribe System.out.println("Hello Gradle!"); entonces se imprimirá en su consola.

¿Qué puedes hacer en un script de compilación?

Un ejemplo simple es que tiene que copiar algunos archivos de un directorio a otro antes de que ocurra el proceso de construcción real. Un script de compilación de Gradle puede hacer esto.

Gradle es un poco confuso para mí y también para el nuevo desarrollador de Android. ¿Alguien puede explicar qué es Gradle en Android Studio y cuál es su propósito? ¿Por qué se incluye Gradle en Android Studio?


A riesgo de ser discursivo, creo que detrás de esto está la pregunta de por qué la experiencia de Android Studio / Gradle es tan mala.

Experiencia típica de Clojure:

  • descargar proyecto con las dependencias enumeradas en project.clj.
  • Leiningen obtiene las dependencias gracias a Clojars y Maven.
  • Proyecto compila.

Experiencia típica de Android Studio / Gradle:

  • "Importar mi proyecto Eclipse".
  • OK proyecto importado.
  • Gradle lo está haciendo, es ... espera ... espera ... espera ... Gradle ha terminado.
  • Compilar ... no se puede compilar porque no sé qué es una X y no puedo encontrar la biblioteca Y.

No estoy seguro de que esto sea culpa de Gradle exactamente. Pero la "importación desde el proyecto Eclipse" parece bastante escamosa. A pesar de toda la supuesta sofisticación de Gradle y las virtudes de un sistema de compilación, Android Studio no parece importar muy bien las dependencias de compilación o el proceso de compilación de Eclipse.

No le dice cuándo falló al importar un gráfico de dependencia completo. Android Studio no ofrece ayuda útil ni consejos sobre cómo resolver el problema. No le indica dónde puede buscar manualmente 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 node npm, Python's pip, o Debian apkg (y estoy seguro de que muchos gestores de paquetes similares para otros idiomas y sistemas) funcionan a la perfección ... las dependencias que faltan son cosa del pasado.

Excepto con Android. Android Studio es ahora el único lugar en el que todavía parece experimentar un infierno de dependencias perdidas.

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 sólido. Las personas cuyos proyectos trabajan en Eclipse no los están adaptando a AS (probablemente porque es un dolor para ellos). Y las personas que intentan usar esos proyectos en AS están teniendo los mismos problemas.

Y de todos modos, si Gradle es este súper poderoso sistema de compilación, ¿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 automáticamente y se construya en contra cuando sea necesario? ¿Por qué es especial el NDK? Del mismo modo para las plataformas de destino? ¿Por qué los estoy instalando explícitamente en el IDE en lugar de solo comparar mi proyecto con ellos y tener todo esto arreglado para mí entre bambalinas?


El sistema de compilación Gradle está diseñado para admitir escenarios complejos en la creación de aplicaciones de Android:

Multidistribución : la misma aplicación debe personalizarse para varios clientes o empresas.

Multi-apk: admite la creación de múltiples apk para diferentes tipos de dispositivos mientras reutiliza partes del código


En Android Studio, Gradle es una herramienta de compilación personalizada que se utiliza para crear paquetes de Android (archivos apk) mediante la gestión de dependencias y el suministro de lógica de compilación personalizada.

El archivo APK (paquete de aplicación de Android) es un archivo zip especialmente formateado que contiene

  • Código de byte
  • Recursos (imágenes, IU, xml, etc.)
  • Archivo de manifiesto

Un archivo apk se firma y se empuja al dispositivo utilizando ADB (Android Debug Bridge) donde se ejecuta.


Gradle es lo que hace posible automatizar la construcción de proyectos complejos de Android que involucran 10s de miles de líneas de código de múltiples fuentes, proyectos, bibliotecas, etc. Puede generar múltiples APKs optimizados condicionalmente basados ​​en una gran cantidad de especificaciones de configuración, si 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 inescrutable y complejo que confunde eficazmente el proceso de compilación de Android y, esencialmente, hace que no esté disponible para desarrolladores inexpertos, es decir, para crear una aplicación de Android de nivel de entrada simple. como:

  • Android APK estructura y ecosistema
  • Android Studio
  • Java Classpaths y dependencias
  • Maravilloso
  • Scripts de construcción de Gradle
  • Muchas otras tecnologías complejas e interesantes.

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 a hacer esta pregunta es el sentimiento 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 frustrado continuamente por Gradle. El problema se ve exacerbado perversamente por la abrumadora cantidad de documentación altamente técnica disponible para todas estas tecnologías. También para una gran cantidad de necesidades de desarrollo, Gradle es una exageración.

Una alternativa es escribir un script de shell que genere su proyecto mediante la automatización de las herramientas disponibles en el SDK de Android.Las ventajas de este enfoque son muchas, para empezar, probablemente sea la mejor manera de estudiar y comprender el proceso de construcción y el ecosistema de Android, y le permite controlar completamente cómo se crea su aplicación. Sin embargo, este enfoque es más adecuado para los jefes de tecnología profundamente irredimibles que para los noobs inexpertos que prueban Android.

Lo que llama la atención por su ausencia (por favor, infórmeme si hay algo así) es un IDE liviano de nivel de entrada con un conjunto de características reducido que simplifica el proceso de compilación al mismo tiempo que no lo oculta (por lo tanto, no es posible utilizar netbeans o eclipse) Utilice Gradle (lo que estaba mal con Ant). Debería facilitar la generación de archivos APK que se ajusten a algunas configuraciones comunes y usar una estructura de proyecto que pueda evolucionar a un proyecto completo de Android Studio en caso de que decida tomarlo de esa manera.


Gradle es para el lenguaje Groovy JVM lo que ant es para Java. Básicamente, es la herramienta de construcción de Groovy. A diferencia de Ant, se basa en el lenguaje completo Groovy. Por ejemplo, puede escribir el código del script Groovy en el script Gradle para hacer algo en lugar de confiar en un idioma de dominio específico.

No conozco la integración específica de IntelliJ, pero imagina que puedes "extender" Groovy de forma que puedas escribir primitivos de lenguaje "de construcción" específicos y que se conviertan en parte del lenguaje de Groovy. (La metaprogramación de Groovy es toda una discusión en sí misma). IntelliJ / Google podría usar Gradle para construir un lenguaje de compilación de muy alto nivel, sin embargo, es un lenguaje de compilación en un estándar abierto y ampliable.


Gradle es un kit de herramientas de compilación automatizada que puede integrarse en muchos entornos diferentes, no solo para proyectos de Android.

Aquí hay algunas cosas que puedes hacer con Gradle.

  • Se requiere una configuración mínima para nuevos proyectos porque Gradle tiene configuraciones predeterminadas para sus proyectos de Android Studio.

  • Declaración de dependencia. Puede declarar los archivos jar de dependencia o los archivos de biblioteca alojados en un servidor local o remoto.

  • Gradle genera automáticamente un directorio de prueba y un APK de prueba desde 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 archivos APK firmados.

  • Gradle puede generar múltiples APK con diferentes paquetes y crear configuraciones desde un solo módulo.


Gradle es un kit de herramientas de compilación avanzada para Android que administra las dependencias y le permite definir la lógica de compilación personalizada. las características son como 1. Personalizar, configurar y extender el proceso de compilación. 2. Cree múltiples APKs para su aplicación con diferentes características usando el mismo proyecto. 3. Reutilizar código y recursos. Consulte este enlace http://developer.android.com/sdk/installing/studio-build.html


Gradle es una herramienta de compilación personalizada y utilizada para crear APK o conocida como paquete de paquetes de aplicaciones.


Puede encontrar todo lo que necesita saber sobre Gradle aquí: Guía del usuario del complemento Gradle

Objetivos del nuevo sistema de construcción.

Los objetivos del nuevo sistema de construcción son:

  • Facilita la reutilización de código y recursos.
  • Facilita la creación de varias variantes de una aplicación, ya sea para la distribución multi-apk o para diferentes versiones de una aplicación.
  • Facilita la configuración, ampliación y personalización del proceso de construcción.
  • Buena integración de IDE

¿Por qué Gradle?

Gradle es un sistema de compilación avanzado, así como un kit de herramientas de compilación avanzada 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:

  • Dominio específico del lenguaje (DSL) para describir y manipular la lógica de compilación
  • Los archivos de compilación se basan en Groovy y permiten la mezcla de elementos declarativos a través del DSL y el uso de código para manipular los elementos del DSL para proporcionar una lógica personalizada.
  • Gestión de dependencias incorporada a través de Maven y / o Ivy.
  • Muy flexible. Permite utilizar las mejores prácticas, pero no obliga a su propio modo de hacer las cosas.
  • Los complementos pueden exponer su propio DSL y su propia API para que los archivos de compilación puedan usar.
  • Buena API de herramientas que permite la integración de IDE

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 proporciona compatibilidad con la creación de convenciones para muchos tipos de proyectos, incluidos Java, Android y Scala.

Característica de Gradle:

  1. Gestión de la dependencia
  2. Usando la hormiga de Gradle
  3. Plugins Gradle
  4. Plugin de Java
  5. Plugin de Android
  6. Construcciones multiproyecto

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!

Ventajas:

  • Dsl - Lenguaje específico de dominio, basado en groovy
  • DAG - Gráfico Acíclico Dirigido
  • Construcciones incrementales
  • Modelo de dominio extensible
  • Gradle está siempre al día.
  • Antes de que se ejecute una tarea, Gradle toma una instantánea de la entrada y salida de su tarea.
  • En caso de que la instantánea haya cambiado o no exista, Gralde volverá a ejecutar esta tarea.

Entradas de manifiesto

A través del DSL es posible configurar las siguientes entradas de manifiesto:

Variante de construcción

De forma predeterminada, el complemento de Android configura automáticamente el proyecto para crear tanto una versión de depuración como una versión de lanzamiento de la aplicación.

Dependencias

  1. Dependencias locales:

Si tiene archivos binarios en su sistema de archivos local del que depende un módulo, como los archivos JAR, puede declarar estas dependencias en el archivo de compilación para ese módulo.

  1. Dependencias remotas:

Primero se debe agregar el repositorio a la lista, y luego se debe declarar la dependencia de manera que Maven o Ivy declaren sus artefactos.


Gradle es un sistema de compilación que se ejecuta en Android Studio .

En otros idiomas por ejemplo:


Me refiero a dos tutoriales para escribir la respuesta one , two

Gradel es una herramienta de construcción declarativa de propósito general. Es de propósito general porque puede usarse para compilar casi cualquier cosa que quiera 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, mientras que Gradle proporciona la idea de convenciones y una construcción simple y declarativa, también hace que la herramienta sea adaptable y que los desarrolladores puedan ampliarla. También proporciona una forma 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 funciones adicionales y utiliza Groovy como lenguaje específico de dominio (DSL). Tiene la potencia y flexibilidad de la herramienta Ant con características de Maven como el ciclo de vida de la construcción y la facilidad de uso.

¿Por qué Gradle? ¿Porqué ahora?

La respuesta de la herramienta de construcción es agregar funcionalidad de scripting 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ódigos personalizados a lo largo del tiempo. Como resultado, inevitablemente introduces una complejidad accidental y la capacidad de mantenimiento sale por la ventana.

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, verifique 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 parecer una tarea trivial. Si tiene que confiar en XML, el lenguaje de compilación de muchas herramientas tradicionales, expresar esta lógica simple se vuelve bastante difícil.

Evolución de las herramientas de construcció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 logra expresar el flujo del programa y la lógica condicional. A medida que la secuencia de comandos 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 incorporan al 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ó una estructura estandarizada de proyectos y directorios, así como la gestión de dependencias. Desafortunadamente, la lógica personalizada es difícil de implementar

Gradle se adapta perfectamente a esa generación de herramientas de construcción y satisface muchos de los requisitos de las herramientas de construcción modernas (Figura 1). Proporciona un DSL expresivo, una convención sobre el enfoque de configuración y una potente administración de dependencias. Hace 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 construcción.

Conjunto de características convincentes de Gradle

¿Por qué construir tus 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ías cambiarlo si estás usando Ant o Maven?

La clave para desbloquear las potentes funciones de Gradle en su script de compilación reside en descubrir y aplicar su modelo de dominio, como se muestra en la imagen de abajo.

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 problema complejo, 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 que se resuelve con las herramientas de compilación. Gradle fuera de la caja le proporciona dos bloques de configuración para su script de compilación que le permite definir las dependencias y los 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 construcción

Gradle juega bien con sus antecesores 'Ant, Maven e Ivy, como se muestra en la imagen de abajo.

Automatizando su proyecto desde la compilación hasta la implementación

En imagen: Etapas de un oleoducto de despliegue.

  • Compilando el codigo

  • Ejecución de pruebas de unidad e integración.

  • Realizando análisis de código estático y generando cobertura de prueba.

  • Creando la distribución

  • Aprovisionamiento del entorno de destino.

  • Desplegando el entregable

  • Realización de humos y pruebas funcionales automatizadas.

Me refiero a dos tutoriales para escribir la respuesta one , two


Gradle = Groovy + Cradle Hans Dockter comentario en el foro

La confusión es un poco innecesaria cuando podría haberse llamado "Build" o algo así en Android Studio.

Nos gusta hacer las cosas difíciles para nosotros mismos en la comunidad de Desarrollo.







build-automation