setup Cos'è Gradle in Android Studio?




setup android studio (15)

Gradle è un po 'di confusione per me e anche per il nuovo sviluppatore Android. Qualcuno può spiegare che cosa è gradle in Android Studio e qual è il suo scopo? Perché Gradle è incluso in Android Studio?

https://code.i-harness.com


Risposta breve

Gradle è un sistema di costruzione.

Risposta lunga

Prima di Android Studio stavi usando Eclipse per i tuoi scopi di sviluppo e, probabilmente, non sapevi come costruire il tuo APK Android senza Eclipse.

Puoi farlo dalla riga di comando, ma devi imparare cosa fa ogni strumento (dx, aapt) nell'SDK. Eclipse ci ha salvato tutti da questi dettagli di basso livello ma importanti e fondamentali dandoci il proprio sistema di costruzione.

Ora, ti sei mai chiesto perché la cartella res trova nella stessa directory della tua cartella src ?

Questo è dove il sistema di costruzione entra nell'immagine. Il sistema di costruzione prende automaticamente tutti i file sorgente ( .java o .xml ), quindi applica lo strumento appropriato (ad esempio, prende i file di classe java e li converte in file dex ) e li raggruppa tutti in un unico file compresso, il nostro amato APK.

Questo sistema di build utilizza alcune convenzioni: un esempio di uno è specificare la directory contenente i file di origine (in Eclipse è la cartella \src ) o i file di risorse (in Eclipse è \res folder).

Ora, per automatizzare tutti questi compiti, ci deve essere uno script; puoi scrivere il tuo sistema di compilazione usando lo scripting di shell in sintassi di linux o file batch in windows. Fatto?

Gradle è un altro sistema di build che prende le migliori caratteristiche da altri sistemi di build e li combina in uno solo. È migliorato sulla base delle loro carenze. È un sistema di compilazione basato su JVM , ciò significa che puoi scrivere il tuo script in Java, utilizzato da Android Studio.

Una cosa interessante di gradle è che si tratta di un sistema basato su plugin . Questo significa che se hai il tuo linguaggio di programmazione e vuoi automatizzare il compito di creare un pacchetto (uscita come un JAR per Java) da fonti, allora puoi scrivere un plugin completo in Java o Groovy (o Kotlin, vedi here ), e distribuirlo al resto del mondo.

Perché Google lo ha usato?

Google ha visto uno dei sistemi di build più avanzati sul mercato e ha capito che è possibile scrivere script propri con poca o nessuna curva di apprendimento e senza imparare Groovy o qualsiasi altra nuova lingua. Così hanno scritto il plugin Android per Gradle.

Devi aver visto i file build.gradle nel tuo progetto. È qui che puoi scrivere script per automatizzare le tue attività. Il codice che hai visto in questi file è il codice Groovy. Se scrivi System.out.println("Hello Gradle!"); quindi stamperà sulla tua console.

Cosa puoi fare in una sceneggiatura?

Un semplice esempio è che devi copiare alcuni file da una directory a un'altra prima che avvenga il vero processo di compilazione. Uno script di build Gradle può farlo.


È il nuovo strumento di creazione che Google vuole utilizzare per Android. Viene utilizzato perché è più estensibile e utile di ant. È pensato per migliorare l'esperienza degli sviluppatori.

Qui puoi vedere un discorso di Xavier Ducrohet dal team di sviluppatori Android su Google I / O.

C'è anche un altro discorso su Android Studio di Xavier e Tor Norbye, anche durante l'I / O di Google qui .


Ecco una spiegazione dettagliata su cosa è Gradle e come usarlo in Android Studio.

Esplorando i file Gradle

  1. Ogni volta che crei un progetto in Android Studio, il sistema di generazione genera automaticamente tutti i file di build Gradle necessari.

Gradle Build Files

  1. I file di build Gradle utilizzano un Domain Specific Language or DSL per definire la logica di build personalizzata e per interagire con gli elementi specifici di Android del plugin Android per Gradle.

  2. I progetti di Android Studio sono costituiti da 1 o più moduli, che sono componenti che è possibile creare, testare ed eseguire il debug in modo indipendente. Ogni modulo ha il proprio file di build, quindi ogni progetto Android Studio contiene 2 tipi di file di build Gradle.

  3. File di build di primo livello: qui troverai le opzioni di configurazione comuni a tutti i moduli che compongono il tuo progetto.

  4. File di costruzione a livello di modulo : ogni modulo ha il proprio file di build Gradle che contiene impostazioni di build specifiche del modulo. Trascorrerai la maggior parte del tempo a modificare i file di build a livello di modulo anziché il file di build di livello superiore del progetto.

Per dare un'occhiata a questi file build.gradle , apri il pannello Progetto di Android Studio (selezionando la scheda Progetto) ed espandi la cartella Gradle Scripts. I primi due elementi nella cartella Gradle Scripts sono i file di build Gradle a livello di progetto e modulo

File di build Gradle di primo livello

Ogni progetto di Android Studio contiene un singolo file di build Gradle di primo livello. Questo file build.gradle è il primo elemento che appare nella cartella Gradle Scripts ed è chiaramente contrassegnato come Project.

Nella maggior parte dei casi, non è necessario apportare modifiche a questo file, ma è comunque utile per comprenderne il contenuto e il ruolo che svolge all'interno del progetto.

File di costruzione Gradle a livello di modulo

Oltre al file di build Gradle a livello di progetto, ogni modulo ha un proprio file di build Gradle. Di seguito è riportata una versione annotata di un file di build Gradle di base a livello di modulo.

Altri file Gradle

Oltre ai file build.gradle, la cartella Gradle Scripts contiene altri file Gradle. Nella maggior parte dei casi non è necessario modificare manualmente questi file poiché verranno aggiornati automaticamente quando si apportano modifiche rilevanti al progetto. Tuttavia, è una buona idea capire il ruolo che questi file svolgono all'interno del progetto.

gradle-wrapper.properties (Versione Gradle)

Questo file consente ad altre persone di creare il tuo codice, anche se non hanno installato Gradle sul loro computer. Questo file controlla se è installata la versione corretta di Gradle e scarica la versione necessaria, se necessario.

settings.gradle

Questo file fa riferimento a tutti i moduli che compongono il tuo progetto.

gradle.properties (Proprietà del progetto)

Questo file contiene informazioni di configurazione per l'intero progetto. Di default è vuoto, ma puoi applicare una vasta gamma di proprietà al tuo progetto aggiungendole a questo file.

local.properties (posizione SDK)

Questo file indica il plug-in Android Gradle in cui è possibile trovare l'installazione di Android SDK.

Nota: local.properties contiene informazioni specifiche per l'installazione locale di Android SDK. Ciò significa che non si dovrebbe mantenere questo file sotto il controllo del codice sorgente.

Lettura suggerita - Tutsplus Tutorial

Ho avuto una chiara comprensione di gradle da questo.


Gradle è ciò che rende possibile automatizzare la costruzione di complessi progetti Android che coinvolgono decine di migliaia di linee di codice da più fonti, progetti, librerie, ecc. Può generare condizionalmente più APK ottimizzati basati su una pletora di specifiche di configurazione - se sei interessato, le altre risposte forniscono maggiori dettagli su questo aspetto di Gradle.

Tuttavia, se sei nuovo nello sviluppo di Android, Gradle nel 99% dei casi è ciò che impedisce al tuo progetto di costruire. È un sistema imperscrutabile e complesso che offusca in modo efficace il processo di build di Android e lo rende essenzialmente non disponibile agli sviluppatori inesperti, ovvero per creare una semplice app Android entry level che l'ignaro newbie potrebbe aver bisogno di studiare e capire molte cose che non hanno negoziato per ad esempio:

  • Struttura e ecosistema APK Android
  • Studio Android
  • Classpath e dipendenze Java
  • Groovy
  • Gradle build scripts
  • Molte altre tecnologie complesse e interessanti

Tutte queste cose sono interessanti e utili per gli sviluppatori Android, ma sono tutt'altro che semplici e rappresentano una barriera formidabile per l'ingresso. Sospetto che ciò che ha ispirato l'OP a porre questa domanda sia il sentimento di frustrazione che inevitabilmente colpisce lo sviluppatore neofita dopo aver passato troppo tempo a cercare di ottenere una semplice app da costruire e di essere continuamente ostacolata da Gradle. Il problema è perversamente esacerbato dalla quantità schiacciante di documentazione altamente tecnica disponibile per tutte queste tecnologie. Anche per una grande quantità di esigenze di sviluppo Gradle è eccessivo.

Un'alternativa è scrivere uno script di shell che crea il tuo progetto automatizzando gli strumenti disponibili nell'SDK di Android. Le virtù di questo approccio sono molte, per i principianti è probabilmente il modo migliore per studiare e comprendere il processo di costruzione e l'ecosistema Android, e ti permette di controllare completamente come viene costruita la tua app. Tuttavia questo approccio è più adatto a capi di tecnologia profondamente irrimediabili rispetto ai noob inesperti che provano Android.

Ciò che è notevole per la sua assenza (per favore informami se c'è una cosa del genere) è un entry level, leggero IDE con un set di funzionalità ridotto che semplifica il processo di costruzione senza oscurarlo (quindi non netbeans o eclipse) potrebbe ancora usa Gradle (cosa non andava in Ant). Dovrebbe semplificare la generazione di APK conformi ad alcune configurazioni comuni e utilizzare una struttura di progetto che può evolvere in un progetto Android Studio completo nel caso in cui si decida di farlo in questo modo.


Gradle è un sistema di costruzione . I sistemi di costruzione sono strumenti software progettati per automatizzare il processo di compilazione dei programmi. I sistemi di compilazione sono disponibili in varie forme e vengono utilizzati per una varietà di attività di creazione del software. Mentre il loro obiettivo principale è creare in modo efficiente i file eseguibili.

Un altro termine correlato è Build automation, ovvero il processo di automazione della creazione di una build software e dei processi associati, tra cui: compilazione del codice sorgente del computer in codice binario, codice binario di imballaggio e esecuzione di test automatici.

Pochi sistemi di compilazione simili per altre lingue sono (vedi elenco completo here ):

  1. Apache Ant e Apache Maven - Java
  2. sbt (Simple Build Tool) - per Scala (Play framework ecc)
  3. AAP - Strumento di costruzione basato su Python
  4. Rake (Apache Builder) - Ruby
  5. Leiningen per Clojure

Gradle è un tipo di strumento di compilazione che crea il codice sorgente del programma. Quindi è una parte importante di Android Studio e deve essere installato prima di iniziare a sviluppare la tua applicazione.

Non è necessario installarlo separatamente, perché Android Studio lo fa per noi, quando realizziamo il nostro primo progetto.


Gradle è un toolkit di build avanzato per Android che gestisce le dipendenze e consente di definire la logica di build personalizzata. le funzionalità sono come 1. Personalizzare, configurare ed estendere il processo di compilazione. 2. Crea più APK per la tua app con funzioni diverse utilizzando lo stesso progetto. 3. Riutilizzare codice e risorse. fai riferimento a questo link http://developer.android.com/sdk/installing/studio-build.html


Gradle è uno strumento di creazione personalizzato e utilizzato per creare APK o conosciuto come pacchetto di pacchetti di applicazioni.


In Android Studio, Gradle è uno strumento di creazione personalizzato utilizzato per creare pacchetti Android (file apk) gestendo le dipendenze e fornendo una logica di build personalizzata.

Il file APK (pacchetto dell'applicazione Android) è un file zip appositamente formattato che contiene

  • Codice byte
  • Risorse (immagini, interfaccia utente, xml ecc.)
  • File manifest

Un file apk viene firmato e inviato al dispositivo tramite ADB (Android Debug Bridge) dove viene eseguito.


Qui puoi trovare tutto ciò che devi sapere su Gradle: Guida dell'utente al plugin Gradle

Obiettivi del nuovo sistema di costruzione

Gli obiettivi del nuovo sistema di build sono:

  • Rendi più facile riutilizzare codice e risorse
  • Semplifica la creazione di diverse varianti di un'applicazione, sia per la distribuzione multi-apk che per diversi tipi di applicazioni
  • Semplifica la configurazione, l'estensione e la personalizzazione del processo di creazione
  • Buona integrazione IDE

Perché Gradle?

Gradle è un sistema di build avanzato e un toolkit di build avanzato che consente di creare una logica di build personalizzata tramite plugin.

Ecco alcune delle sue caratteristiche che ci hanno fatto scegliere Gradle:

  • Domain Specific Language (DSL) per descrivere e manipolare la logica di compilazione
  • I file di build sono basati su Groovy e consentono il mix di elementi dichiarativi attraverso il DSL e l'utilizzo del codice per manipolare gli elementi DSL per fornire una logica personalizzata.
  • Gestione delle dipendenze integrata tramite Maven e / o Ivy.
  • Molto flessibile Permette l'utilizzo delle migliori pratiche ma non impone il proprio modo di fare le cose.
  • I plugin possono esporre il proprio DSL e la propria API per i file di build da utilizzare.
  • API Good Tooling che consente l'integrazione di IDE

di @Brian Gardner:

Gradle è un ampio strumento di costruzione e un manager delle dipendenze per la programmazione di progetti. Ha un linguaggio specifico di dominio basato su Groovy. Gradle fornisce anche supporto per convenzione per molti tipi di progetti, tra cui Java, Android e Scala.

Caratteristica di Gradle:

  1. Gestione delle dipendenze
  2. Usando Ant da Gradle
  3. Gradle Plugin
  4. Plugin Java
  5. Plugin Android
  6. Build multi-progetto

Gradle è un sistema di build avanzato e un toolkit di build avanzato che consente di creare una logica di build personalizzata tramite plugin!

vantaggi:

  • Dsl - Linguaggio specifico del dominio, basato su groovy
  • DAG - Grafico Aciclico Diretto
  • Build incrementali
  • Modello di dominio estendibile
  • Gradle è sempre aggiornato
  • Prima che un'attività venga eseguita, Gradle acquisisce un'istantanea dell'input e dell'output del suo compito.
  • Nel caso in cui l'istantanea sia cambiata o non esista, Gralde eseguirà nuovamente questa attività.

Voci manifest

Attraverso il DSL è possibile configurare le seguenti voci manifest:

Crea variante

Per impostazione predefinita, il plug-in Android imposta automaticamente il progetto per creare sia una versione di debug che una versione dell'applicazione.

dipendenze

  1. Dipendenze locali:

Se si dispone di archivi binari nel proprio filesystem locale da cui dipende un modulo, come i file JAR, è possibile dichiarare queste dipendenze nel file di build per quel modulo.

  1. Dipendenze remote:

Innanzitutto il repository deve essere aggiunto alla lista e quindi la dipendenza deve essere dichiarata in modo che Maven o Ivy dichiarino i loro artefatti.


Gradle è un sistema di build in esecuzione su Android Studio .

In altre lingue, per esempio:


Mi riferisco a due tutorial per scrivere la risposta one , two

Gradel è uno strumento di costruzione dichiarativa per scopi generali. È di uso generale perché può essere usato per costruire praticamente tutto ciò che ti interessa implementare nello script di build. È dichiarativo poiché non si desidera visualizzare molto codice nel file di build, che non è leggibile e meno conservabile. Quindi, mentre Gradle fornisce l'idea di convenzioni e una build semplice e dichiarativa, rende anche lo strumento adattabile e gli sviluppatori la possibilità di estendere. Fornisce inoltre un modo semplice per personalizzare il comportamento predefinito e diversi hook per aggiungere funzionalità di terze parti.

Gradle combina le parti positive di entrambi gli strumenti e fornisce funzionalità aggiuntive e utilizza Groovy come DSL (Domain Specific Language). Ha potenza e flessibilità dello strumento Ant con le funzionalità di Maven come il ciclo di vita della build e la facilità d'uso.

Perché Gradle? Perché ora?

La risposta dello strumento di creazione consiste nell'aggiungere funzionalità di script tramite meccanismi di estensione non standard. Finisci per mescolare il codice di scripting con XML o invocare script esterni dalla tua logica di compilazione. È facile immaginare che dovrai aggiungere sempre più codice personalizzato nel tempo. Di conseguenza, si introduce inevitabilmente una complessità accidentale e la manutenibilità va fuori dalla finestra.

Supponiamo che tu voglia copiare un file in una posizione specifica mentre stai creando la versione di rilascio del tuo progetto. Per identificare la versione, controlli una stringa nei metadati che descrivono il tuo progetto. Se corrisponde a uno schema di numerazione specifico (ad esempio, 1.0-RELEASE), si copia il file dal punto A al punto B. Da una prospettiva esterna, potrebbe sembrare un'operazione banale. Se devi fare affidamento su XML, il linguaggio di costruzione di molti strumenti tradizionali, esprimere questa semplice logica diventa abbastanza difficile.

Evoluzione degli strumenti di costruzione Java

La logica di build Java deve essere descritta in XML. XML è ottimo per descrivere i dati gerarchici ma non riesce a esprimere il flusso del programma e la logica condizionale. Come uno script di compilazione cresce in complessità, il mantenimento del codice edilizio diventa un incubo.

In Ant , fai in modo che il bersaglio JAR dipenda dal target di compilazione. Ant non fornisce alcuna guida su come strutturare il tuo progetto. Sebbene permetta la massima flessibilità, Ant rende ogni script di costruzione unico e difficile da capire. Le librerie esterne richieste dal progetto vengono solitamente controllate nel controllo della versione perché non esiste un meccanismo automatizzato per estrarle da una posizione centrale.

Maven 1 , uscito nel luglio 2004, ha cercato di facilitare questo processo. Forniva una struttura standardizzata di progetti e directory, oltre alla gestione delle dipendenze. Sfortunatamente, la logica personalizzata è difficile da implementare

Gradle si adatta perfettamente a quella generazione di strumenti di compilazione e soddisfa molti requisiti dei moderni strumenti di compilazione (Figura 1). Fornisce un DSL espressivo, una convenzione sull'approccio alla configurazione e una potente gestione delle dipendenze. Fa la mossa giusta per abbandonare XML e introdurre il linguaggio dinamico Groovy per definire la logica di compilazione. Sembra convincente, vero?

Gradle combina le migliori caratteristiche di altri strumenti di costruzione.

Set di funzionalità avvincente di Gradle

Perché costruisci i tuoi progetti Java con Gradle piuttosto che Ant o Maven?

Lo strumento di generazione predefinito per Android (e la nuova stella degli strumenti di creazione sulla JVM) è progettato per semplificare lo scripting di build complessi e multilingue. Dovresti cambiare ad esso, però, se stai usando Ant o Maven?

La chiave per sbloccare le funzioni di potere di Gradle all'interno del tuo script di build sta nella scoperta e applicazione del suo modello di dominio, come mostrato nell'immagine qui sotto.

Gradle non può conoscere tutti i requisiti specifici per la tua impresa. Esponendo gli hook nelle fasi del ciclo di vita, Gradle consente il monitoraggio e la configurazione del comportamento di esecuzione dello script di build.

Gradle stabilisce un vocabolario per il suo modello esponendo un DSL implementato in Groovy. Quando si ha a che fare con un dominio problematico complesso, in questo caso, il compito di creare software, essere in grado di utilizzare un linguaggio comune per esprimere la propria logica può essere uno strumento potente.

Un altro esempio è il modo in cui è possibile esprimere dipendenze da librerie esterne, un problema molto comune risolto dagli strumenti di compilazione. Gradle fornisce già due blocchi di configurazione per lo script di build che consentono di definire le dipendenze e gli archivi da cui si desidera recuperarli. Se gli elementi DSL standard non soddisfano le tue esigenze, puoi persino introdurre il tuo vocabolario attraverso il meccanismo di estensione di Gradle.

Integrazione con altri strumenti di costruzione

Gradle suona bene con Ant, Maven ed Ivy dei suoi predecessori, come mostrato nell'immagine qui sotto.

Automatizzare il tuo progetto da Build a Deployment

Nell'immagine: fasi di una pipeline di distribuzione.

  • Compilare il codice

  • Esecuzione di unità e test di integrazione

  • Esecuzione dell'analisi del codice statico e generazione della copertura del test

  • Creare la distribuzione

  • Provisioning dell'ambiente di destinazione

  • Distribuzione del deliverable

  • Esecuzione del fumo e test funzionali automatizzati

Mi riferisco a due tutorial per scrivere la risposta one , two


Gradle = Groovy + Cradle Hans Dockter commenti sul forum

La confusione è un po 'inutile quando potrebbe essere stata appena chiamata "Build" o qualcosa in Android Studio.

Ci piace rendere le cose difficili per noi stessi nella comunità di sviluppo.





build-automation