build.gradle

El propósito del archivo build.gradle

I. Introducción al sistema de compilación Gradle

Android Studio utiliza Gradle para compilar proyectos. Gradle es una herramienta de compilación muy avanzada que usa un lenguaje específico del dominio (DSL) basado en Groovy para declarar la configuración del proyecto, en lugar del tradicional XML.

Un proyecto HelloWorld tiene dos archivos build.gradle: uno externo (a nivel de proyecto) y uno interno (a nivel de módulo).


II. build.gradle externo (a nivel de proyecto)

Ruta: Directorio raíz del proyecto/build.gradle

buildscript {
    repositories {
        jcenter()
        maven {
            url 'https://maven.google.com/'
            name 'Google'
        }
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.2'

        // NOTA: No coloques las dependencias de tu aplicación aquí; pertenecen
        // en los archivos build.gradle de cada módulo
    }
}

allprojects {
    repositories {
        jcenter()
        maven {
            url 'https://maven.google.com/'
            name 'Google'
        }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}Lenguaje del código: JavaScript (javascript)
Análisis de configuraciones clave
Elemento de configuraciónDescripción
jcenter()Declara el uso del repositorio de alojamiento de código JCenter. Muchos proyectos Android de código abierto están alojados en JCenter; al declararlo, puedes hacer referencia a estas bibliotecas directamente.
google()Declara el uso del repositorio Maven de Google para obtener bibliotecas oficiales como Android Support Library y Constraint Layout.
classpath 'com.android.tools.build:gradle:3.1.2'Declara el plugin de Android para Gradle. Gradle puede compilar proyectos Java, C++, etc., pero para proyectos Android se requiere este plugin.
allprojectsConfigura de forma unificada las direcciones de los repositorios para todos los módulos (incluidos los submódulos).
task cleanDefine una tarea de limpieza que, al ejecutarse, elimina todo el directorio build del proyecto.

El archivo build.gradle externo raramente necesita modificarse, a menos que necesites agregar repositorios globales o actualizar la versión del plugin de Gradle.


III. build.gradle interno (a nivel de módulo / directorio app)

Ruta: app/build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    buildToolsVersion "27.0.3"
    defaultConfig {
        applicationId "com.foxdevelop.www.myapplication"
        minSdkVersion 14
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:27.+'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
}Lenguaje del código: PHP (php)

A continuación, desglosamos cada parte.


IV. apply plugin — Declaración del plugin

apply plugin: 'com.android.application'Lenguaje del código: JavaScript (javascript)
ValorSignificado
com.android.applicationMódulo de aplicación, se puede ejecutar directamente.
com.android.libraryMódulo de biblioteca, no se puede ejecutar de forma independiente y está disponible para que otros módulos dependan de él.

Esta es la configuración clave que distingue si un módulo es una «App» o una «Library».


V. Bloque android — Configuración principal de compilación

1. Versión de compilación y herramientas de compilación
compileSdkVersion 27
buildToolsVersion "27.0.3"Lenguaje del código: CSS (css)
ConfiguraciónDescripción
compileSdkVersionEspecifica qué versión del SDK de Android se utilizará para compilar el proyecto. 27 corresponde a Android 8.1.
buildToolsVersionNúmero de versión de las herramientas de compilación; Android Studio notificará si hay una versión más reciente.
2. defaultConfig — Configuración predeterminada
defaultConfig {
    applicationId "com.foxdevelop.www.myapplication"
    minSdkVersion 14
    targetSdkVersion 27
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}Lenguaje del código: JavaScript (javascript)
PropiedadDescripción
applicationIdEl nombre de paquete único de la aplicación, que sirve como identificador único (por ejemplo, para Google Play).
minSdkVersionVersión mínima de Android compatible; 14 corresponde a Android 4.0.
targetSdkVersionIndica que la aplicación se ha probado exhaustivamente en esa versión. El sistema habilitará las nuevas funciones en consecuencia (por ejemplo, el modo multiventana en 7.0).
versionCodeNúmero de versión, un entero que las tiendas de aplicaciones usan para determinar las actualizaciones.
versionNameNombre de versión, una cadena visible para el usuario.
testInstrumentationRunnerEspecifica el ejecutor para pruebas automatizadas de Android.
3. buildTypes — Tipos de compilación
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}Lenguaje del código: JavaScript (javascript)
ConfiguraciónDescripción
debugConfiguración de la versión de prueba (se puede omitir, tiene valores predeterminados).
releaseConfiguración de la versión de lanzamiento.
minifyEnabledIndica si se debe habilitar la ofuscación de código. false = sin ofuscación, true = ofuscar.
proguardFilesEspecifica los archivos de reglas de ofuscación:
• Primero: reglas generales del directorio del SDK.
• Segundo: proguard-rules.pro, donde se pueden escribir reglas específicas del proyecto.

Por defecto, Android Studio ejecuta la versión debug; más adelante se explicará cómo generar una versión de lanzamiento.


VI. dependencies — Gestión de dependencias

Esta es la sección más modificada, utilizada para declarar todas las bibliotecas de las que depende el proyecto.

Tres tipos de dependencias
TipoDescripciónEjemplo
Dependencia localDepende de archivos jar o directorios localescompile fileTree(dir: 'libs', include: ['*.jar'])
Dependencia de bibliotecaDepende de un módulo de biblioteca en el proyectocompile project(':library')
Dependencia remotaDepende de bibliotecas de código abierto en repositorios JCenter/Googlecompile 'com.android.support:appcompat-v7:27.+'
Análisis línea por línea
// Dependencia local: agrega todos los archivos .jar del directorio libs a la ruta de compilación
compile fileTree(dir: 'libs', include: ['*.jar'])Lenguaje del código: PHP (php)
// Dependencia remota: biblioteca de compatibilidad AppCompat
// Formato: dominio:grupo:versión
compile 'com.android.support:appcompat-v7:27.+'Lenguaje del código: JavaScript (javascript)
// Dependencia remota: biblioteca de diseño ConstraintLayout
compile 'com.android.support.constraint:constraint-layout:1.0.2'Lenguaje del código: JavaScript (javascript)
// Dependencia de prueba: JUnit para pruebas unitarias
testCompile 'junit:junit:4.12'Lenguaje del código: JavaScript (javascript)
// Dependencia de prueba de Android: Espresso para pruebas de UI
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
})Lenguaje del código: JavaScript (javascript)

Flujo de trabajo de dependencias remotas: Gradle primero verifica si la biblioteca está en caché localmente → si es así, la usa → si no, la descarga automáticamente → luego la agrega a la ruta de compilación.


VII. Resumen comparativo

ArchivoPropósitoFrecuencia de modificación
build.gradle externoConfiguración global de repositorios, versión del plugin GradleRaramente modificado
app/build.gradle internoConfiguración de compilación del módulo, gestión de dependenciasFrecuentemente modificado
Configuración principalAtributos clave
——————
apply pluginDistinción entre application / library
compileSdkVersionVersión del SDK de compilación
applicationIdIdentificador único de la aplicación
minSdkVersionVersión mínima compatible
targetSdkVersionVersión objetivo de prueba
buildTypesConfiguración de compilación debug / release
dependenciesDependencias locales / remotas / de biblioteca

build.gradle

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *