Android Un archivo build.gradle básico


Ejemplo

Este es un ejemplo de un archivo build.gradle predeterminado en un módulo.

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion '25.0.3'

    signingConfigs {
        applicationName {
            keyAlias 'applicationName'
            keyPassword 'password'
            storeFile file('../key/applicationName.jks')
            storePassword 'keystorePassword'
        }
    }
    defaultConfig {
        applicationId 'com.company.applicationName'
        minSdkVersion 14
        targetSdkVersion 25
        versionCode 1
        versionName '1.0'
        signingConfig signingConfigs.applicationName
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])

    compile 'com.android.support:appcompat-v7:25.3.1'
    compile 'com.android.support:design:25.3.1'

    testCompile 'junit:junit:4.12'
}

DSL (lenguaje específico de dominio)

Cada bloque en el archivo anterior se llama un DSL (lenguaje específico del dominio).


Complementos

La primera línea, apply plugin: 'com.android.application' , aplica el complemento de Android para Gradle a la compilación y hace que el bloque android {} esté disponible para declarar las opciones de compilación específicas de Android.

Para una aplicación de Android :

apply plugin: 'com.android.application'

Para una biblioteca de Android :

apply plugin: 'com.android.library'

Entendiendo los DSLs en el ejemplo anterior

La segunda parte, el bloque de android {...} , es el DSL Android que contiene información sobre su proyecto.

Por ejemplo, puede configurar el compileSdkVersion que especifica el nivel de la API de Android, que Gradle debe usar para compilar su aplicación.
El subbloque defaultConfig contiene los valores predeterminados para su manifiesto. Puede override con Sabores del producto .

Puedes encontrar más información en estos ejemplos:


Dependencias

El bloque de dependencies se define fuera del bloque de android {...} : Esto significa que no está definido por el complemento de Android, pero es Gradle estándar.
El bloque de dependencies especifica qué bibliotecas externas (normalmente las bibliotecas de Android, pero las bibliotecas de Java también son válidas) que desea incluir en su aplicación. Gradle descargará automáticamente estas dependencias por usted (si no hay una copia local disponible), solo necesita agregar líneas de compile similares cuando desee agregar otra biblioteca.

Veamos una de las líneas aquí presentes:

compile 'com.android.support:design:25.3.1'

Esta línea básicamente dice

agregar una dependencia de la biblioteca de diseño de soporte de Android a mi proyecto.

Gradle se asegurará de que la biblioteca esté descargada y presente para que pueda usarla en su aplicación, y su código también se incluirá en su aplicación.

Si está familiarizado con Maven, esta sintaxis es GroupId , dos puntos, ArtifactId , otros dos puntos, luego la versión de la dependencia que desea incluir, lo que le da un control total sobre las versiones.

Si bien es posible especificar versiones de artefactos usando el signo más (+), la mejor práctica es evitar hacerlo; puede llevar a problemas si la biblioteca se actualiza con cambios de última hora sin su conocimiento, lo que probablemente provocaría bloqueos en su aplicación.

Puedes agregar diferentes tipos de dependencias:

Se debe dedicar una atención particular a las dependencias planas .

Puede encontrar más detalles en este tema.

Nota sobre el -v7 en appcompat-v7

compile 'com.android.support:appcompat-v7:25.3.1'

Esto simplemente significa que esta biblioteca ( appcompat ) es compatible con la API de Android de nivel 7 y appcompat .

Nota sobre el junit: junit: 4.12

Esta es la dependencia de prueba para la prueba de unidad.


Especificando dependencias específicas para diferentes configuraciones de compilación

Puede especificar que una dependencia solo se use para una determinada configuración de compilación o puede definir diferentes dependencias para los tipos de compilación o las versiones del producto (por ejemplo, depuración, prueba o lanzamiento) utilizando debugCompile , testCompile o releaseCompile lugar de la compile habitual .

Esto es útil para mantener las dependencias relacionadas con la prueba y la depuración fuera de su versión de lanzamiento, lo que mantendrá su APK versión lo más delgado posible y ayudará a garantizar que no se pueda usar ninguna información de depuración para obtener información interna sobre su aplicación.


firmaConfig

La signingConfig permite configurar su Gradle para incluir información del keystore y garantizar que el APK creado con estas configuraciones esté firmado y listo para la versión de Play Store.

Aquí puedes encontrar un tema dedicado .

Nota : no se recomienda mantener las credenciales de firma dentro de su archivo de Gradle. Para eliminar las configuraciones de firma, basta con omitir la signingConfigs parte.
Puedes especificarlos de diferentes maneras:

Consulte este tema para obtener más detalles: Firmar APK sin exponer la contraseña del almacén de claves .


Puede encontrar más información sobre Gradle para Android en el tema dedicado de Gradle .