build.gradle (Project) 和 build.gradle (Module) 的区别

新手上路,请多包涵

我正在尝试将 Android 异步 Http 客户端的依赖项添加到我的项目中。所以项目中有两个 build.gradle 文件。

在此处输入图像描述

据我了解,有不同类型的依赖关系:

  1. 一个在 build.gradle 的根级别上定义的(项目:My-app)
  2. build.gradle 的构建脚本中的一个(项目:My-app)
  3. 另一个是 build.gradle (Modules:app)

这个问题 是关于 buildScript 的依赖关系的存储库,解释一下前两种类型。

还 build.gradle (Project:My-app) 说

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

所以我猜测应该在 build.gradle (Module:app)中加入Android Asynchronous Http Client的依赖代码。

它们是如何组合在一起的?

原文由 Anil Bhaskar 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 787
2 个回答

build.gradle (项目:我的应用程序)

顶级构建文件,您可以在其中添加所有子项目/模块通用的配置选项。

每个项目都包含一个 _顶级 Gradle 文件_。它通常包含所有 modules 的 _通用配置_。无论这个顶级 Gradle gile 中包含什么,它都会影响所有 _模块_。

例子:

 // 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(模块:应用程序)

特定模块的构建文件 (在其中添加依赖项、签名配置、构建类型、风格等)

所有 模块 都有一个特定的 Gradle 文件。无论这个 gradle 文件中包含什么,它只会影响包含在其中的 _模块_。

例子:

 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'
}

原文由 hrskrs 发布,翻译遵循 CC BY-SA 4.0 许可协议

这有点令人困惑,因为默认情况下 Android Studio 显示 build.gradle 文件彼此相邻(使用 Android 视图时)。

在此处输入图像描述

如果切换到项目视图,您可以看到实际结构以及不同的 build.gradle 文件所在的位置。

在此处输入图像描述

build.gradle (项目:MyApplication)文件位于项目的根文件夹中,其配置设置适用于项目中的每个模块。模块是更大项目的一个孤立部分。在多模块项目中,这些模块各司其职,但协同工作构成了整个项目。大多数 Android 项目只有一个模块,即 app 模块。

build.gradle (模块:app)文件位于 app 文件夹中。它的构建设置仅适用于应用程序模块。如果有另一个模块,那么该模块也会有自己的 build.gradle 文件。 例如,我创建了一个包含三个模块的库项目:一个库模块、一个演示应用程序模块和另一个我计划用于测试的应用程序模块。他们每个人都有自己的 build.gradle 我可以调整的文件。

在此处输入图像描述

在基本项目中,几乎所有需要编辑的内容都在应用程序模块的 build.gradle 文件中。你可以这样记住它:

您正在制作一个 _应用程序_,因此转到 build.gradle (模块: _应用程序_)文件。

延伸阅读

原文由 Suragch 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题