web-dev-qa-db-fra.com

Différence entre build.gradle (Projet) et build.gradle (Module)

J'essaie d'ajouter une dépendance de Android client HTTP asynchrone à mon projet. Il existe donc deux fichiers build.gradle dans le projet.

enter image description here

Selon ma compréhension, il existe différents types de dépendances:

  1. Celui qui a défini sur le niveau racine de build.gradle (Project: My-app)
  2. Un dans le buildscript du build.gradle (Projet: My-app)
  3. Un autre est build.gradle (Modules: app)

Cette question concerne les dépôts pour les dépendances du buildScript, expliquez un peu les deux premiers types.

Build.gradle (Projet: My-app) dit aussi

// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files

Je suppose donc que le code de dépendance de Android Un client HTTP asynchrone devrait être ajouté à build.gradle (module: app).

Si quelqu'un pouvait donner une image claire de toutes ces choses pour une meilleure compréhension, ce serait formidable.

83
Anil Bhaskar

build.gradle(Project:My-app)

Fichier de construction de niveau supérieur dans lequel vous pouvez ajouter des options de configuration communes à tous les sous-projets/modules.

Chaque projet contient un top-level gradle file. Il contient habituellement common configs Pour tout modules. Tout ce qui est inclus dans ce top-level gradle, Cela affectera tous les modules.

ex:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.Android.tools.build:gradle:2.0.0-alpha3'

        //Maven plugin
        classpath 'com.github.dcendents:Android-maven-gradle-plugin:1.3'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
        maven { url "https://jitpack.io" }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

build.gradle(Module:app)

Fichier de construction de votre module spécifique (où vous ajoutez vos dépendances, les configurations de signature, les types de construction, les saveurs, etc.)

Tous les modules ont un fichier gradle spécifique Quel que soit ce qui est inclus dans ce fichier gradle, cela n’affectera que le module inclus dans.

ex:

apply plugin: 'com.Android.application'

Android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "com.hrskrs.gesturefun"
        minSdkVersion 10
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            zipAlignEnabled true
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
        debug {
            debuggable true
            zipAlignEnabled true
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile project(':gesture-fun')
    testCompile 'junit:junit:4.12'
    compile 'com.Android.support:appcompat-v7:23.1.1'
    compile 'com.Android.support:design:23.1.1'
    compile 'com.jakewharton:butterknife:7.0.1'
}
38
hrskrs

C'est un peu déroutant car Android Studio montre par défaut les deux build.gradle fichiers côte à côte (lors de l’utilisation de la vue Android)).

enter image description here

Si vous passez en vue Projet, vous pouvez voir la structure actuelle et où se trouvent les différents build.gradle les fichiers sont situés.

enter image description here

Le build.gradle Le fichier (Projet: MonApplication) se trouve dans le dossier racine du projet et ses paramètres de configuration s’appliquent à tous les modules du projet. Un module est un élément isolé du plus grand projet. Dans un projet multi-module, ces modules ont leurs propres tâches mais travaillent ensemble pour former l'ensemble du projet. La plupart des projets Android ont un seul module, le module app.

Le build.gradle Le fichier (module: app) se trouve dans le dossier app. Ses paramètres de construction s'appliquent uniquement au module d'application. S'il y avait un autre module, alors ce module aurait son propre build.gradle fichier, aussi. En tant que exemple , j'ai créé un projet de bibliothèque avec trois modules: un module de bibliothèque, un module d'application de démonstration et un autre module d'application que je prévois d'utiliser pour les tests. Chacun d'entre eux a son propre build.gradle fichiers que je peux modifier.

enter image description here

Dans un projet de base, presque tout ce que vous devez modifier sera dans le build.gradle fichier. Vous pouvez vous en souvenir comme ça:

Vous faites un app, alors allez au build.gradle _ (Module: app) fichier

Lectures complémentaires

34
Suragch

À propos de la relation entre les deux fichiers gradle, hrskrs a donné une explication très claire Je vais en faire un complément.

si votre projet ne comporte qu'un seul module (tel que app), l'avantage de top build.gradle (Projet: My-app) n'est pas très clair. parce que vous pouvez tout configurer dans build.gradle (Module: app) à propos du module, et ne modifier qu'un fichier lors de la mise à niveau dans les jours suivants

mais si votre projet comporte 5 modules, et qu’ils ont la même dépendance, A , si vous n’utilisez pas top build.gradle ( Projet: My-app) vous devez conserver 5 fichiers les jours suivants.

en passant, le build.gradle (module: app) peut remplacer le build.gradle (projet: mon-application).

Cette conception peut améliorer la maintenabilité de l’APP

1
shusheng007