Qu'est-ce que Gradle dans Android Studio?



12 Answers

C'est le nouvel outil de construction que Google veut utiliser pour Android. Il est utilisé parce qu'il est plus extensible et utile que la fourmi. Il est destiné à améliorer l'expérience des développeurs.

Vous pouvez voir une conférence de Xavier Ducrohet de l'équipe de développeurs Android sur Google I / O ici.

Il y a aussi un autre exposé sur Android Studio par Xavier et Tor Norbye, également pendant Google I / O ici .

Question

Gradle est un peu confus pour moi et aussi pour le nouveau développeur Android. Quelqu'un peut-il expliquer ce que Gradle dans Android Studio est et quel est son but? Pourquoi Gradle est-il inclus dans Android Studio?




Gradle est une boîte à outils de construction automatisée qui peut s'intégrer dans de nombreux environnements différents, non seulement pour les projets Android.

Voici quelques choses que vous pouvez faire avec Gradle.

  • Configuration minimale requise pour les nouveaux projets car Gradle a des configurations par défaut pour vos projets de studio Android.

  • Déclaration de dépendance Vous pouvez déclarer des fichiers jar de dépendance ou des fichiers de bibliothèque hébergés sur un serveur local ou distant.

  • Gradle génère automatiquement un répertoire de test et un test APK de la source de votre projet.

  • Si vous ajoutez toutes les informations nécessaires, telles que keyPassword et keyAlias , à votre fichier de construction Gradle, vous pouvez utiliser Gradle pour générer des fichiers APK signés.

  • Gradle peut générer plusieurs fichiers APK avec des configurations de paquet et de construction différentes à partir d'un seul module.




Gradle est un système de compilation fonctionnant sous Android Studio .

Dans d'autres langues par exemple:




Gradle est une boîte à outils de construction avancée pour android qui gère les dépendances et vous permet de définir une logique de construction personnalisée. Les fonctionnalités sont similaires à 1. Personnaliser, configurer et étendre le processus de construction. 2. Créez plusieurs fichiers APK pour votre application avec des fonctionnalités différentes en utilisant le même projet. 3. Réutilisez le code et les ressources. référez-vous à ce lien http://developer.android.com/sdk/installing/studio-build.html




Gradle est un type d' outil de construction qui construit le code source du programme. C'est donc une partie importante d'Android Studio, et doit être installé avant de commencer à développer votre application.

Nous ne devons pas l'installer séparément, car Android Studio le fait pour nous, lorsque nous réalisons notre premier projet.




Un avantage de Gradle que j'ai trouvé est:

Gradle a été conçu pour des builds multi-projets qui peuvent devenir assez volumineux et supporte des builds incrémentaux en déterminant intelligemment quelles parties de l'arbre de build sont à jour, de sorte que toute tâche dépendante de ces parties n'aura pas besoin d'être re -réalisé.




par @Brian Gardner:

Gradle est un outil de construction complet et un gestionnaire de dépendances pour la programmation de projets. Il a un langage spécifique au domaine basé sur Groovy. Gradle fournit également un support de construction par convention pour de nombreux types de projets, y compris Java, Android et Scala.

Caractéristique de Gradle:

  1. Gestion des dépendances
  2. Utiliser la fourmi de Gradle
  3. Gradle Plugins
  4. Plugin Java
  5. Plugin Android
  6. Constructions multi-projets



Gradle = Groovy + Cradle Hans Dockter forum comment

The confusion is a bit unnecessary when it could have just been called "Build" or something in Android Studio.

We like to make things difficult for ourselves in the Development community.




Gradle is an automated build toolkit that allows the way in which projects are built to be configured and managed through a set of build configuration files. This includes defining how a project is to be built, what dependencies need to be fulfilled for the project to build successfully and what the end result (or results) of the build process should be. The strength of Gradle lies in the flexibility that it provides to the developer. The Gradle system is a self-contained, command-line based environment that can be integrated into other environments through the use of plug-ins. In the case of Android Studio, Gradle integration is provided through the appropriately named Android Studio Plug-in.

Bien que le plug-in Android Studio permette d'initier et de gérer les tâches Gradle à partir d'Android Studio, l'encapsuleur de ligne de commande Gradle peut toujours être utilisé pour créer des projets basés sur Android Studio, y compris sur les systèmes sur lesquels Android Studio n'est pas installé.

Les règles de configuration pour construire un projet sont déclarées dans les fichiers de construction Gradle et les scripts basés sur le langage de programmation Groovy.




Au risque d'être discursif, je pense que derrière cela se cache la question de savoir pourquoi l'expérience Android Studio / Gradle est si mauvaise.

Expérience typique de Clojure:

  • téléchargez le projet avec les dépendances listées dans project.clj.
  • Leiningen obtient les dépendances grâce à Clojars et Maven.
  • Projet compile.

Expérience Android Studio / Gradle typique:

  • "Importer mon projet Eclipse".
  • OK projet importé.
  • Gradle est en train de faire ça ... attendez ... attendez ... attendez ... Gradle a fini.
  • Compiler ... impossible de compiler car je ne sais pas ce que X est / ne peut pas trouver la bibliothèque Y.

Je ne suis pas sûr que ce soit la faute de Gradle. Mais le "import du projet Eclipse" semble assez floconneux. Pour toute la prétendue sophistication de Gradle et les vertus d'un système de construction, Android Studio ne semble tout simplement pas importer les dépendances de construction ou le processus de construction d'Eclipse.

Il ne vous dit pas quand il n'a pas réussi à importer un graphe de dépendance complet. L'application Android Studio ne fournit aucune aide ou conseil utile sur la façon de résoudre le problème. Il ne vous dit pas où vous pouvez regarder manuellement dans les dossiers Eclipse. Il ne vous dit pas quelle bibliothèque semble manquer. Ou vous aider à rechercher Maven etc pour eux.

En 2016, des choses comme Leiningen / Clojars, ou npm de nœud, ou pip Python, ou l'apkg Debian (et je suis sûr que de nombreux gestionnaires de paquets similaires pour d'autres langages et systèmes) fonctionnent tous magnifiquement ... les dépendances manquantes appartiennent au passé.

Sauf avec Android. Android Studio est maintenant le seul endroit où je ressens encore l'enfer des dépendances manquantes.

Je suis enclin à dire que c'est la faute de Google. Ils ont brisé l'écosystème Android (et des milliers de projets Android / tutoriels en ligne) lorsqu'ils ont décidé cavalièrement de passer d'Eclipse à Android Studio / Gradle sans produire de processus de conversion robuste. Les personnes dont les projets fonctionnent dans Eclipse ne les adaptent pas à AS (sans doute parce que c'est pénible pour eux). Et les gens qui essaient d'utiliser ces projets dans AS rencontrent les mêmes problèmes.

Et de toute façon, si Gradle est ce système de construction super puissant, pourquoi est-ce que je gère encore beaucoup d'autres dépendances dans le gestionnaire de sdk? Pourquoi un projet qui a besoin, disons, du ndk ne peut-il pas le spécifier dans son fichier Gradle pour qu'il soit automatiquement installé et construit en cas de besoin? Pourquoi NDK est-il spécial? De même pour les plates-formes cibles? Pourquoi est-ce que je les installe explicitement dans l'EDI plutôt que de simplement vérifier mon projet contre eux et de faire tout cela trié pour moi dans les coulisses?




Je renvoie deux tutoriel pour écrire la réponse one , two

Gradel est un outil de construction déclaratif à usage général. C'est un objectif général car il peut être utilisé pour construire à peu près tout ce que vous voulez implémenter dans le script de construction. C'est déclaratif puisque vous ne voulez pas voir beaucoup de code dans le fichier de construction, qui n'est pas lisible et moins facile à maintenir. Ainsi, alors que Gradle fournit l'idée de conventions et une construction simple et déclarative, elle rend également l'outil adaptable et les développeurs la possibilité de l'étendre. Il fournit également un moyen facile de personnaliser le comportement par défaut et différents hooks pour ajouter des fonctionnalités tierces.

Gradle combine les bonnes parties des deux outils et fournit des fonctionnalités supplémentaires et utilise Groovy comme un langage spécifique au domaine (DSL). Il a la puissance et la flexibilité de l'outil Ant avec des fonctionnalités Maven telles que le cycle de vie de la construction et la facilité d'utilisation.

Pourquoi Gradle? Pourquoi maintenant?

La réponse de l'outil de construction consiste à ajouter des fonctionnalités de script via des mécanismes d'extension non standard. Vous finissez par mélanger le code de script avec XML ou en invoquant des scripts externes à partir de votre logique de construction. Il est facile d'imaginer que vous devrez ajouter de plus en plus de code personnalisé au fil du temps. En conséquence, vous introduisez inévitablement une complexité accidentelle, et la maintenabilité disparaît de la fenêtre.

Supposons que vous souhaitiez copier un fichier dans un emplacement spécifique lorsque vous créez la version finale de votre projet. Pour identifier la version, vous vérifiez une chaîne dans les métadonnées décrivant votre projet. S'il correspond à un schéma de numérotation spécifique (par exemple, 1.0-RELEASE), vous copiez le fichier du point A au point B. D'un point de vue extérieur, cela peut sembler une tâche triviale. Si vous devez compter sur XML, le langage de construction de nombreux outils traditionnels, exprimer cette logique simple devient assez difficile.

Evolution des outils de construction Java

La logique de construction Java doit être décrite en XML. XML est idéal pour décrire des données hiérarchiques, mais ne correspond pas à l'expression du flux de programme et de la logique conditionnelle. Au fur et à mesure qu'un script de build se complexifie, le maintien du code du bâtiment devient un cauchemar.

Dans Ant , vous faites dépendre la cible JAR de la cible de compilation. Ant ne donne aucune indication sur la façon de structurer votre projet. Bien qu'il permette une flexibilité maximale, Ant rend chaque script de construction unique et difficile à comprendre. Les bibliothèques externes requises par votre projet sont généralement vérifiées dans le contrôle de version, car il n'existe aucun mécanisme automatisé pour les extraire d'un emplacement central.

Maven 1 , sorti en juillet 2004, a tenté de faciliter ce processus. Il a fourni une structure de projet et de répertoire standardisée, ainsi qu'une gestion des dépendances. Malheureusement, la logique personnalisée est difficile à mettre en œuvre

Gradle s'intègre parfaitement dans cette génération d'outils de construction et satisfait de nombreuses exigences des outils de construction modernes (Figure 1). Il fournit un langage DSL expressif, une approche conventionnelle sur la configuration et une gestion puissante des dépendances. Il fait le bon choix d'abandonner XML et d'introduire le langage dynamique Groovy pour définir votre logique de construction. Cela semble convaincant, n'est-ce pas?

Gradle combine les meilleures caractéristiques des autres outils de construction.

Le jeu de caractéristiques convaincant de Gradle

Pourquoi construire vos projets Java avec Gradle Plutôt que Ant ou Maven?

L'outil de construction par défaut pour Android (et la nouvelle étoile des outils de construction sur la JVM) est conçu pour faciliter l'écriture de scripts dans des versions complexes et multilingues. Devriez-vous changer, si vous utilisez Ant ou Maven?

La clé pour débloquer les fonctionnalités de puissance de Gradle dans votre script de construction réside dans la découverte et l'application de son modèle de domaine, comme indiqué dans l'image ci-dessous.

Gradle ne peut pas connaître toutes les exigences spécifiques à votre entreprise. En exposant les crochets dans les phases du cycle de vie, Gradle permet de surveiller et de configurer le comportement d'exécution du script de construction.

Gradle établit un vocabulaire pour son modèle en exposant un langage DSL implémenté dans Groovy. Lorsque vous traitez un domaine de problème complexe, dans ce cas, la tâche de construire un logiciel, être capable d'utiliser un langage commun pour exprimer votre logique peut être un outil puissant.

Un autre exemple est la façon dont vous pouvez exprimer les dépendances aux bibliothèques externes, un problème très commun résolu par les outils de construction. Out-of-the-box Gradle vous fournit deux blocs de configuration pour votre script de construction qui vous permettent de définir les dépendances et les référentiels dont vous voulez les extraire. Si les éléments DSL standard ne correspondent pas à vos besoins, vous pouvez même introduire votre propre vocabulaire grâce au mécanisme d'extension de Gradle.

Intégration avec d'autres outils de construction

Gradle joue bien avec les Ant, Maven et Ivy de ses prédécesseurs, comme le montre l'image ci-dessous.

Automatiser votre projet de la construction au déploiement

En image: étapes d'un pipeline de déploiement.

  • Compiler le code

  • Unité en cours d'exécution et tests d'intégration

  • Effectuer une analyse de code statique et générer une couverture de test

  • Créer la distribution

  • Provisionnement de l'environnement cible

  • Déployer le livrable

  • Exécution de la fumée et tests fonctionnels automatisés

Je renvoie deux tutoriel pour écrire la réponse one , two




DEFINITION :: Gradle peut être décrit comme un mécanisme de construction structuré où il fournit au développeur les outils et la flexibilité pour gérer les ressources d'un projet afin de créer des builds smaller in size , targeting specific requirements pour certains périphériques de certaines configurations

CONFIGURATIONS DE BASE

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

BIBLIOTHÈQUES :: Nous pouvons ajouter des bibliothèques android ou d'autres bibliothèques tierces en plus selon les exigences faciles qui était une tâche fastidieuse plus tôt. Si la bibliothèque ne correspond pas au projet existant, le développeur reçoit un journal dans lequel la personne peut trouver une solution appropriée pour apporter des modifications au projet afin que la bibliothèque puisse être ajoutée. C'est juste une ligne de dépendance

GÉNÉRATION DE VARIÉTÉS DE CONSTRUCTIONS

Combinaison de types de construction avec des arômes de construction pour obtenir des variances de variances de construction

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

RÉDUCTION DE TAILLE

Gradle aide à réduire la taille de la génération générée en supprimant les ressources inutilisées et les objets inutilisés des bibliothèques intégrées

GESTION DES PERMISSIONS

Nous pouvons Spécifier certaines permissions pour certaines versions en ajoutant certaines permissions dans certains scénarios en fonction des besoins

CONSTRUITS POUR CERTAINS APPAREILS

Nous pouvons gérer la génération de génération pour certains périphériques qui incluent certaines densités et certains niveaux d'api. Cela facilite les déploiements de produits dans le magasin d'applications en fonction des besoins de plusieurs types d'appareils

BONNE RÉFÉRENCE

Tutoriels Vogella




In plain terms, Gradle is a tool provided by Android Studio in order to implement two important processes:

  1. Build our projects
  2. Package AndroidManifest.xml,res folder,and binary code into a specially formatted zip file called APK



Related