android-studio configuring - Cos'è Gradle in Android Studio?



how to (19)

Gradle è un toolkit di build automatizzato che può essere integrato in molti ambienti diversi non solo per i progetti Android.

Qui ci sono alcune cose che puoi fare con gradle.

  • Configurazione minima richiesta per i nuovi progetti perché Gradle ha configurazioni predefinite per i tuoi progetti Android Studio.

  • Dichiarazione di dipendenza. È possibile dichiarare file jar di dipendenza o file di libreria ospitati nel server locale o remoto.

  • Gradle genera automaticamente una directory di test e un APK di test dalla sorgente del progetto.

  • Se aggiungi tutte le informazioni necessarie, come keyPassword e keyAlias , al file di build Gradle, puoi utilizzare Gradle per generare APK firmati.

  • Gradle può generare più APK con pacchetti diversi e creare configurazioni da un singolo modulo.

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?


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:


In parole povere, Gradle è uno strumento fornito da Android Studio per implementare due processi importanti:

  1. Costruisci i nostri progetti
  2. Imballa AndroidManifest.xml, res folder e codice binario in un file zip appositamente formattato chiamato APK

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 è 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 è per il linguaggio Groovy JVM che cosa è per Java. Fondamentalmente, è lo strumento di costruzione di Groovy. A differenza di Ant, si basa sul linguaggio Groovy completo. Ad esempio, puoi scrivere il codice di script Groovy nello script Gradle per fare qualcosa piuttosto che fare affidamento su un linguaggio di dominio specifico.

Non conosco l'integrazione specifica di IntelliJ, ma immagino che potresti "estendere" Groovy in modo tale da poter scrivere specifici primitivi di linguaggio "build" e sono appena diventati parte del linguaggio Groovy. (La metaprogrammazione di Groovy è un'intera discussione a se stessa.) IntelliJ / Google potrebbe utilizzare Gradle per creare un linguaggio di costruzione di alto livello, tuttavia, è un linguaggio basato su uno standard espandibile e aperto.


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

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


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.


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


DEFINIZIONE :: Gradle può essere descritto come un meccanismo di costruzione strutturato in cui fornisce allo sviluppatore gli strumenti e la flessibilità per gestire le risorse di un progetto per creare build smaller in size , che targeting specific requirements per determinati dispositivi di determinate configurazioni

CONFIGURAZIONI DI BASE

  1. minimumSdk
  2. maximumSdk
  3. targettedSdk
  4. versionCode
  5. versionName

LIBRERIE :: Possiamo aggiungere anche le librerie Android o qualsiasi altra libreria di terze parti in base ai requisiti, cosa che prima era un compito noioso. Se la libreria non si adatta al progetto esistente, allo sviluppatore viene mostrato un registro in cui la persona può trovare una soluzione appropriata per apportare modifiche al progetto in modo che la libreria possa essere aggiunta. È solo una linea di dipendenza

GENERAZIONE DI VARIETÀ DI COSTRUZIONI

Combinare i tipi di build con i build build per ottenere varities di build buildents

 ====================                         ====================
|     BuildTypes     |                       |   ProductFlavours  |
 --------------------  ====================== --------------------
|  Debug,Production  |      ||       ||      | Paid,Free,Demo,Mock|
 ====================       ||       ||       ==================== 
                            ||       ||
                            VV       VV
 =================================================================
|           DebugPaid, DebugFree, DebugDemo, DebugMock            |
|  ProductionPaid, ProductionFree, ProductionDemo, ProductionMock |
 =================================================================

RIDUZIONE DEL FORMATO

Gradle aiuta a ridurre la dimensione della generazione generata rimuovendo le risorse inutilizzate anche dalle cose inutilizzate dalle librerie integrate

GESTIONE DEI PERMESSI

Possiamo specificare determinate autorizzazioni per determinate build aggiungendo determinate autorizzazioni in determinati scenari in base ai requisiti

COSTRUISCE PER TALUNI DISPOSITIVI

Siamo in grado di gestire la generazione di build per determinati dispositivi che includono determinate densità e determinati livelli API. Questo aiuta a distribuire i prodotti nell'app store in base ai requisiti su più tipi di dispositivi

BUONA RIFERIMENTO

Tutorial Vogella


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.


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.


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

Un vantaggio di Gradle che ho trovato è:

Gradle è stato progettato per build multi-progetto che possono diventare abbastanza grandi e supporta build incrementali determinando in modo intelligente quali parti dell'albero di compilazione sono aggiornate, in modo che qualsiasi attività dipendente da tali parti non debba essere ri -executed.


È 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 .


A rischio di essere discorsivo, penso che dietro a questo ci sia la domanda sul perché l'esperienza di Android Studio / Gradle sia così brutta.

Tipica esperienza Clojure:

  • scarica il progetto con le dipendenze elencate in project.clj.
  • Leiningen ottiene le dipendenze grazie a Clojars e Maven.
  • Compilare il progetto.

Tipica esperienza Android Studio / Gradle:

  • "Importa il mio progetto Eclipse".
  • OK progetto importato.
  • Gradle sta facendo è ... aspetta ... aspetta ... aspetta ... Gradle ha finito.
  • Compilare ... non può essere compilato perché non so cosa sia una X / non riesca a trovare la libreria Y.

Non sono sicuro che questa sia esattamente la colpa di Gradle. Ma il "import from Eclipse project" sembra piuttosto traballante. Per tutte le presunte sofisticazioni di Gradle e le virtù di un sistema di build, Android Studio non sembra importare molto bene le dipendenze di build o il processo di compilazione da Eclipse.

Non ti dice quando non è riuscito a importare un grafico di dipendenza completo. Android Studio non fornisce alcun aiuto o suggerimenti utili su come risolvere il problema. Non ti dice dove puoi cercare manualmente nelle cartelle di Eclipse. Non ti dice quale libreria sembra mancare. O ti aiutano a cercare Maven ecc. Per loro.

Nel 2016 cose come Leiningen / Clojars, o node's npm, o Python's pip, o l'apkg di Debian (e sono sicuro che molti gestori di pacchetti simili per altri linguaggi e sistemi) funzionano tutti magnificamente ... le dipendenze mancanti sono una cosa del passato.

Tranne con Android. Android Studio è ora l'unico posto in cui mi sembra ancora di sperimentare l'inferno di dipendenza mancante.

Sono incline a dire che questo è colpa di Google. Hanno rotto l'ecosistema Android (e migliaia di progetti Android / esercitazioni online esistenti) quando hanno deciso di passare da Eclipse ad Android Studio / Gradle senza produrre un solido processo di conversione. Le persone i cui progetti funzionano in Eclipse non li stanno adattando ad AS (presumibilmente perché è un problema per loro). E le persone che cercano di utilizzare questi progetti in AS stanno colpendo gli stessi problemi.

E comunque, se Gradle è questo sistema di costruzione superpotente, perché sto ancora gestendo un sacco di altre dipendenze nel gestore di sdk? Perché un progetto che non ha bisogno, per esempio, di ndk, lo specifica nel suo file Gradle in modo che venga automaticamente installato e integrato quando necessario? Perché NDK è speciale? Allo stesso modo per piattaforme di destinazione? Perché li sto installando esplicitamente nell'IDE invece di controllare semplicemente il mio progetto contro di loro e avere tutto questo ordinato per me dietro le quinte?


Basta pulire il tuo progetto e Sync Project con Gradle File.

E il problema sarà risolto.





android android-studio gradle android-gradle build-automation