Tại sao có hai tệp build.gradle trong một dự án Android Studio?


102

Sau khi nhập một dự án Eclipse vào Android Studio, tôi thấy hai build.gradletệp:

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

Phiên bản đầu tiên ngắn hơn, phiên bản thứ hai chứa các định nghĩa cho compileSdkVersion, v.v.

Mục đích đằng sau việc có hai tệp riêng biệt là gì? Có các nhiệm vụ xây dựng riêng biệt không?


Câu trả lời:


72

<PROJECT_ROOT>\app\build.gradledành riêng cho mô-đun ứng dụng .

<PROJECT_ROOT>\build.gradle"Tệp xây dựng cấp cao nhất" nơi bạn có thể thêm các tùy chọn cấu hình chung cho tất cả các dự án con / mô-đun.

Nếu bạn sử dụng một mô-đun khác trong dự án của mình, với tư cách là một thư viện cục bộ, bạn sẽ có một build.gradletệp khác : <PROJECT_ROOT>\module\build.gradle

dụ: trong tệp cấp cao nhất của bạn, bạn có thể chỉ định các thuộc tính chung sau:

buildscript {
    repositories {
        mavenCentral()
    }

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

ext {
    compileSdkVersion = 23
    buildToolsVersion = "23.0.1"
}

Trong của bạn app\build.gradle

apply plugin: 'com.android.application'

repositories {
    mavenCentral()
}

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

+1 Cảm ơn bạn, sẽ chấp nhận câu trả lời của bạn trong giây lát. Là build.gradlesự hiện diện của tập tin bắt buộc để kích hoạt một xây dựng? Ngoài ra, tệp xây dựng cấp cao nhất có gọi tệp cấp phụ không? (Mặc dù không có bằng chứng về điều đó.)
Sabuncu

Tệp build.gradle là bắt buộc nếu bạn muốn xây dựng một dự án với gradle. Android Studio không yêu cầu gradle, nhưng nó rất được khuyến khích. Tệp cấp cao nhất không gọi tệp phụ; gradle hoạt động với các nhiệm vụ, nhưng rất khó để giải thích trong một nhận xét.
Gabriele Mariotti

Cảm ơn Gabriele rất nhiều, điều này sẽ giúp tôi bắt đầu.
Sabuncu

1
Đặc biệt là rootProject.ext.compileSdkVersioncấu trúc rất nhiều thông tin.
Sabuncu

2
Điều quan trọng là phải đi đường vòng bằng cách sử dụng ext {...} hay chúng ta nên áp dụng trực tiếp plugin android và compileSdkVersion vào tệp xây dựng cấp cao nhất?
PhilLab

17

Từ tài liệu chính thức:

Dự án Android Studio chứa tệp xây dựng Gradle dự án cấp cao nhất cho phép bạn thêm các tùy chọn cấu hình chung cho tất cả các mô-đun ứng dụng trong dự án. Mỗi mô-đun ứng dụng cũng có build.gradletệp riêng để xây dựng cài đặt cụ thể cho mô-đun đó.

nhập mô tả hình ảnh ở đây

Tệp xây dựng dự án

<PROJECT_ROOT>\build.gradlehoặc Tệp Xây dựng Dự án dành cho toàn bộ dự án nên nó sẽ được sử dụng cho các cấu hình dự án toàn cầu. Tệp xây dựng dự án điển hình bao gồm:

  • buildcript xác định:
    • kho lưu trữ và
    • sự phụ thuộc
  • Phiên bản plugin Gradle

Theo mặc định, tệp Gradle cấp dự án sử dụng bản xây dựng để xác định các kho lưu trữphụ thuộc của Gradle . Điều này cho phép các dự án khác nhau sử dụng các phiên bản Gradle khác nhau. Các kho được hỗ trợ bao gồm JCenter, Maven Central hoặc Ivy. Ví dụ này tuyên bố rằng tập lệnh xây dựng sử dụng kho lưu trữ JCenter và một cấu phần phụ thuộc classpath có chứa plugin Android cho phiên bản Gradle 1.0.1.


Tệp xây dựng mô-đun

<PROJECT_ROOT>\app\build.gradlehoặc Tệp Xây dựng Mô-đun dành cho một mô-đun cụ thể nên nó sẽ được sử dụng cho các cấu hình cấp mô-đun cụ thể. Một mô-đun xây dựng tập tin chứa thông tin sau:

  • cài đặt android
    • compileSdkVersion
    • buildToolsVersion
  • defaultConfig và productFlavors
    • các thuộc tính kê khai như applicationId, minSdkVersion, targetSdkVersion và thông tin kiểm tra
  • buildTypes
    • xây dựng các thuộc tính như có thể gỡ lỗi, kích hoạt ProGuard, ký gỡ lỗi, hậu tố tên phiên bản và thông tin chứng thực
  • sự phụ thuộc

bạn có thể đọc các tài liệu chính thức ở đây:

Cài đặt xây dựng dự án và mô-đun

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.