一个基本的 build.gradle 文件

这是模块中默认 build.gradle 文件的示例。

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(特定于域的语言)

上述文件中的每个块称为 DSL(特定于域的语言)。

插件

第一行 apply plugin: 'com.android.application'GradleAndroid 插件应用于构建,并使 android {} 块可用于声明特定于 Android 的构建选项。

对于 Android 应用程序

apply plugin: 'com.android.application'

对于 Android 库

apply plugin: 'com.android.library'

了解上面示例中的 DSL

第二部分,android {...} 块,是 Android DSL,其中包含有关你的项目的信息。

例如,你可以设置指定 Android API 级别的 compileSdkVersion,Gradle 应该使用它来编译你的应用程序。
子块 defaultConfig 保存清单的默认值。你可以用 Product Flavors 来制作它们。

你可以在以下示例中找到更多信息:

依赖

dependencies 块是在 android{...} 之外定义的:这意味着它不是由 Android 插件定义的,而是标准的 Gradle。
dependencies 块指定你希望包含在应用程序中的外部库(通常是 Android 库,但 Java 库也有效)。Gradle 将自动为你下载这些依赖项(如果没有可用的本地副本),你只需要添加类似的 compile 行,当你希望添加另一个库时。

让我们看看这里出现的一条线:

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

这条线基本上说

将 Android 支持设计库的依赖项添加到我的项目中。

Gradle 将确保下载并显示库,以便你可以在应用中使用它,其代码也将包含在你的应用中。

如果你熟悉 Maven,则此语法是 GroupId ,冒号, ArtifactId ,另一个冒号,然后是你希望包含的依赖项版本,使你可以完全控制版本控制。

虽然可以使用加号(+)指定工件版本,但最佳做法是避免这样做; 如果库在你不知情的情况下更新了更改,可能会导致问题,这可能会导致你的应用程序崩溃。

你可以添加不同类型的依赖项:

应特别注意 aar flat 依赖关系

你可以在此主题中找到更多详细信息

请注意 appcompat-v7 中的 -v7

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

这只是意味着这个appcompat)与 Android API 级别 7 和转发兼容。

关于 junit 的注意事项 :junit:4.12

这是单元测试的测试依赖性。

指定特定于不同构建配置的依赖项

你可以指定依赖项应仅用于某个构建配置, 或者你可以使用 debugCompiletestCompilereleaseCompile 而不是通常的 compile构建类型产品风格 (例如,调试,测试或发布) 定义不同的依赖项。

这有助于保持发布版本中与测试和调试相关的依赖关系,这将使你的版本尽可能地保持苗条,并有助于确保任何调试信息都不能用于获取有关你的应用程序的内部信息。

signingConfig

signingConfig 允许你配置 Gradle 以包含 keystore 信息,并确保使用这些配置构建的 APK 已签名并准备好发布 Play Store。

在这里,你可以找到专门的主题

注意 :不建议将签名凭据保留在 Gradle 文件中。要删除签名配置,只需省略 signingConfigs 部分。
你可以通过不同方式指定它们:

有关详细信息,请参阅此主题:在不公开密钥库密码的情况下签署 APK

你可以在专用的 Gradle 主题中 找到有关 Gradle for Android 的更多信息