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

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

在这里输入图像说明

只要我明白,有不同的依赖关系:

  1. 在build.gradle(Project:My-app)的根级定义的一个,
  2. 一个build.gradle的buildscript(Project:My-app)
  3. 另一个是build.gradle(Modules:app)

这个问题是关于buildScript的依赖库的,关于前两种types的解释。

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

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

所以我想Android的asynchronousHttp客户端的依赖代码应该添加在build.gradle(模块:应用程序)。

如果有人能够清楚地了解所有这些,以便更好地理解,那就太好了。

build.gradle(Project:My-app)

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

每个项目都包含一个top-level gradle file 。 它通常包含所有modules common configs 。 无论这个top-level gradle包含什么,它都会影响所有的modules

例如:

 // 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(Module:app)

build立你的特定模块的文件(你添加你的依赖项,签名configuration,构buildtypes,风味等)

所有modules都有一个特定的gradle文件 。 无论这个gradle文件包含什么,它只会影响包含的module

例如:

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

这有点build.gradle困惑,因为默认情况下,Android Studio会显示两个build.gradle文件(当使用Android视图时)。

在这里输入图像说明

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

在这里输入图像说明

build.gradle (Project:MyApplication)文件位于项目的根文件夹中,其configuration设置适用于项目中的每个模块。 一个模块是较大项目的一个独立部分。 在一个多模块项目中,这些模块有自己的工作,但是共同组成整个项目。 大多数Android项目只有一个模块,即应用程序模块。

build.gradle (Module:app)文件位于app文件夹中。 其构build设置仅适用于应用程序模块。 如果有另一个模块,那么它也会有自己的build.gradle文件。 作为一个例子 ,我做了一个包含三个模块的库项目:一个库模块,一个演示应用程序模块,以及另一个我打算用于testing的应用程序模块。 他们每个人都有自己的build.gradle文件,我可以调整。

在这里输入图像说明

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

你正在创build一个应用程序 ,所以去build.gradle (模块: 应用程序 )文件。

进一步阅读

  • configuration您的构build (Android文档 – 非常可读和有用)
  • 多项目构build简介 (Gradle文档)