Introducción_a_Gradle - liviso/android-course GitHub Wiki

Android Studio usa Gradle, un paquete de herramientas de compilación avanzadas, para automatizar y administrar el proceso de compilación, y al mismo tiempo definir configuraciones de compilación personalizadas y flexibles.

Archivo de compilación a nivel de módulo

El archivo build.gradle de nivel de módulo, ubicado en cada directorio project/module/, te permite configurar ajustes de compilación para el módulo específico en el que se encuentra. La configuración de esos ajustes de compilación te permite proporcionar opciones de empaquetado personalizadas.

Ejemplo:

apply plugin: 'com.android.application'
apply plugin: 'sem-version-bump'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.company.app"
        minSdkVersion 19
        targetSdkVersion 27
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            applicationVariants.all { variant ->
                variant.outputs.all { output ->
                    def newApkName = "bank" + ".apk";
                    outputFileName = new File(variant.name, newApkName);
                }
            }
        }
    }
    sourceSets {
        main {
            res.srcDirs =
                    [
                            'src/main/res/layouts',
                            'src/main/res'
                    ]
        }
    }
    productFlavors {
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:27.0.2'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    implementation 'com.android.support:support-v4:27.0.2'
    testImplementation 'junit:junit:4.12'
    testCompile 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
    compile 'com.squareup.retrofit2:retrofit:2.1.0'
    compile 'com.squareup.retrofit2:converter-gson:2.1.0'

    compile 'com.sun.mail:android-mail:1.6.0'
    compile 'com.sun.mail:android-activation:1.6.0'
    compile 'org.apache.commons:commons-lang3:3.5'
    compile group: 'log4j', name: 'log4j', version: '1.2.17'
    compile group: 'org.slf4j', name: 'slf4j-log4j12', version: '1.7.25'
    compile fileTree(exclude: ['com.symbol.emdk.jar'], dir: 'libs')
    implementation 'com.squareup.okhttp3:okhttp:3.9.1'
}

Archivo de compilación a nivel de proyecto.

El archivo build.gradle de nivel superior, ubicado en el directorio raíz del proyecto, define configuraciones de compilación que se aplican a todos los módulos de tu proyecto. De forma predeterminada, el archivo de nivel superior usa el bloque buildscript para definir los repositorios y las dependencies de Gradle comunes a todos los módulos del proyecto.

Ejemplo:

buildscript {

  repositories {
    mavenLocal()
    maven {
      url "https://repository.company.com/content/groups/public/"
    }

    maven {
      url 'https://repository.company.com/content/repositories/jcenter/'
    }
    
    maven {
      url 'https://repository.company.com/repository/dl_google/'
    }
  }
  dependencies {
    classpath 'com.android.tools.build:gradle:3.2.1'
    classpath 'com.company.mobile.gradle:sem-version-bump:1.0.16'
    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
  }
}

allprojects {
  repositories {
    mavenLocal()
  }
}


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

Archivo de configuración de Gradle

El archivo settings.gradle, ubicado en el directorio raíz del proyecto, indica a Gradle los módulos que debe incluir al compilar tu app.

Documentación

https://developer.android.com/studio/build

Compilar tu App desde linea de comandos https://developer.android.com/studio/build/building-cmdline.html

Gradle https://gradle.org/