【问题标题】:Why are there two build.gradle files in an Android Studio project?为什么一个 Android Studio 项目中有两个 build.gradle 文件?
【发布时间】:2014-06-08 03:09:41
【问题描述】:

将 Eclipse 项目导入 Android Studio 后,我看到两个 build.gradle 文件:

1 - <PROJECT_ROOT>\build.gradle
2 - <PROJECT_ROOT>\app\build.gradle

第一个版本较短,第二个版本包含compileSdkVersion等的定义。

拥有两个独立文件的目的是什么?是否有单独的构建任务?

【问题讨论】:

标签: android android-studio gradle android-gradle-plugin build.gradle


【解决方案1】:

&lt;PROJECT_ROOT&gt;\app\build.gradle 专用于应用模块

&lt;PROJECT_ROOT&gt;\build.gradle 是一个“顶级构建文件”,您可以在其中添加所有子项目/模块通用的配置选项。

如果您在项目中使用另一个模块,作为本地库,您将拥有另一个 build.gradle 文件: &lt;PROJECT_ROOT&gt;\module\build.gradle

对于顶级文件中的 example,您可以指定以下常用属性:

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.0'
    }
}

ext {
    compileSdkVersion = 23
    buildToolsVersion = "23.0.1"
}

在你的app\build.gradle

apply plugin: 'com.android.application'

repositories {
    mavenCentral()
}

android {
    compileSdkVersion rootProject.ext.compileSdkVersion
    buildToolsVersion rootProject.ext.buildToolsVersion
}

【讨论】:

  • +1 谢谢,将立即接受您的回答。 build.gradle 文件是否必须存在才能触发构建?另外,顶级构建文件是否调用子级文件? (虽然没有证据。)
  • 如果你想用 gradle 构建项目,build.gradle 文件是必须的。 Android Studio 不需要 gradle,但强烈推荐。顶层文件不调用子文件; gradle 适用于任务,但很难在评论中解释。
  • 非常感谢 Gabriele,这将使我开始。
  • 尤其是rootProject.ext.compileSdkVersion 结构信息量很大。
  • 到底是用ext{...}绕道还是直接将android插件和compileSdkVersion应用到顶层构建文件?
【解决方案2】:

来自官方文档:

Android Studio 项目包含一个顶级项目 Gradle 构建文件,允许您添加项目中所有应用程序模块通用的配置选项。每个应用程序模块还有自己的build.gradle 文件,用于特定于该模块的构建设置。

项目构建文件

&lt;PROJECT_ROOT&gt;\build.gradleProject Build File 用于整个项目,因此它将用于全局项目配置。 典型的项目构建文件包含以下内容:

  • buildscript 定义:
    • 存储库和
    • 依赖关系
  • Gradle 插件版本

默认情况下,项目级 Gradle 文件使用 buildscript 来定义 Gradle repositoriesdependencies。这允许不同的项目使用不同的 Gradle 版本。支持的存储库包括 JCenter、Maven Central 或 Ivy。此示例声明构建脚本使用 JCenter 存储库和包含适用于 Gradle 版本 1.0.1 的 Android 插件的类路径依赖项工件。


模块构建文件

&lt;PROJECT_ROOT&gt;\app\build.gradleModule Build File 用于特定模块,因此它将用于特定模块级别的配置。 模块构建文件包含以下内容:

  • 安卓设置
  • compileSdkVersion
  • buildToolsVersion
  • defaultConfig 和 productFlavors
    • 清单属性,例如 applicationId、minSdkVersion、targetSdkVersion 和测试信息
  • 构建类型
    • 构建属性,例如可调试、ProGuard 启用、调试签名、版本名称后缀和测试信息
  • 依赖关系

你可以在这里阅读官方文档:

Projects and modules build settings

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 2022-01-14
    • 2019-10-26
    • 1970-01-01
    相关资源
    最近更新 更多