เหตุใดจึงมีไฟล์ build.gradle สองไฟล์ในโครงการ Android Studio


103

หลังจากนำเข้าโปรเจ็กต์ Eclipse ไปยัง Android Studio ฉันเห็นสองbuild.gradleไฟล์:

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

เวอร์ชันแรกสั้นกว่าเวอร์ชันที่สองมีคำจำกัดความสำหรับcompileSdkVersionฯลฯ

จุดประสงค์เบื้องหลังการมีไฟล์สองไฟล์แยกกันคืออะไร? มีงานสร้างแยกกันหรือไม่?


คำตอบ:


72

<PROJECT_ROOT>\app\build.gradleเป็นที่เฉพาะเจาะจงสำหรับโมดูลแอป

<PROJECT_ROOT>\build.gradleคือ"ไฟล์บิลด์ระดับบนสุด"ซึ่งคุณสามารถเพิ่มตัวเลือกการกำหนดค่าที่ใช้ร่วมกันกับโครงการ / โมดูลย่อยทั้งหมด

หากคุณใช้โมดูลอื่นในโปรเจ็กต์ของคุณเป็นไลบรารีในเครื่องคุณจะมีbuild.gradleไฟล์อื่น: <PROJECT_ROOT>\module\build.gradle

สำหรับตัวอย่างเช่นในแฟ้มระดับบนสุดของคุณคุณสามารถระบุคุณสมบัติทั่วไปเหล่านี้:

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ไฟล์เป็นสิ่งจำเป็นในการทริกเกอร์บิลด์หรือไม่ นอกจากนี้ไฟล์บิลด์ระดับบนสุดจะเรียกไฟล์ระดับย่อยหรือไม่ (แม้ว่าจะไม่มีหลักฐานก็ตาม)
Sabuncu

ไฟล์ build.gradle เป็นไฟล์บังคับหากคุณต้องการสร้างโปรเจ็กต์ด้วย gradle Android Studio ไม่จำเป็นต้องใช้ Gradle แต่ขอแนะนำอย่างยิ่ง ไฟล์ระดับบนสุดไม่เรียกไฟล์ย่อย gradle ใช้ได้กับงาน แต่ยากที่จะอธิบายในความคิดเห็น
Gabriele Mariotti

ขอบคุณ Gabriele มากสิ่งนี้จะช่วยให้ฉันเริ่มต้นได้
Sabuncu

1
โดยเฉพาะอย่างยิ่งrootProject.ext.compileSdkVersionโครงสร้างมีข้อมูลมาก
Sabuncu

2
การใช้ทางอ้อมเป็นสิ่งสำคัญหรือไม่หรือเราควรใช้ปลั๊กอิน android และ compileSdkVersion โดยตรงกับไฟล์ build ระดับบนสุด
PhilLab

17

จากเอกสารอย่างเป็นทางการ:

โปรเจ็กต์ Android Studio มีไฟล์บิวด์ Gradle โปรเจ็กต์ระดับบนสุดที่ช่วยให้คุณเพิ่มตัวเลือกการกำหนดค่าที่ใช้ร่วมกันกับโมดูลแอปพลิเคชันทั้งหมดในโปรเจ็กต์ โมดูลแอปพลิเคชันแต่ละโมดูลยังมีbuild.gradleไฟล์ของตัวเองสำหรับสร้างการตั้งค่าเฉพาะสำหรับโมดูลนั้น

ป้อนคำอธิบายภาพที่นี่

ไฟล์สร้างโครงการ

<PROJECT_ROOT>\build.gradleหรือไฟล์ Project Buildสำหรับโปรเจ็กต์ทั้งหมดดังนั้นไฟล์จะถูกใช้สำหรับการกำหนดค่าโปรเจ็กต์ส่วนกลาง ไฟล์ Project Buildทั่วไปประกอบด้วยสิ่งต่อไปนี้:

  • buildscript ซึ่งกำหนด:
    • ที่เก็บและ
    • การพึ่งพา
  • Gradle Plugin เวอร์ชัน

โดยค่าเริ่มต้นการใช้งานระดับโครงการไฟล์ Gradle buildscriptเพื่อกำหนด Gradle เก็บและการอ้างอิง ซึ่งทำให้โปรเจ็กต์ต่างๆสามารถใช้ Gradle เวอร์ชันต่างๆได้ ที่เก็บที่รองรับ ได้แก่ JCenter, Maven Central หรือ Ivy ตัวอย่างนี้ประกาศว่าบิลด์สคริปต์ใช้ที่เก็บ JCenter และอาร์ติแฟกต์การพึ่งพาคลาสพา ธ ที่มีปลั๊กอิน Android สำหรับ Gradle เวอร์ชัน 1.0.1


ไฟล์สร้างโมดูล

<PROJECT_ROOT>\app\build.gradleหรือไฟล์โมดูลสร้างเป็นโมดูลเฉพาะดังนั้นจะใช้สำหรับการกำหนดค่าระดับโมดูลเฉพาะ โมดูลรูปร่างไฟล์มีดังต่อไปนี้:

  • การตั้งค่า Android
    • compileSdkVersion
    • buildToolsVersion
  • defaultConfig และ productFlavors
    • คุณสมบัติของรายการเช่น applicationId, minSdkVersion, targetSdkVersion และข้อมูลการทดสอบ
  • buildTypes
    • สร้างคุณสมบัติเช่น debuggable การเปิดใช้งาน ProGuard การลงนามการดีบักคำต่อท้ายชื่อเวอร์ชันและข้อมูลการทดสอบ
  • การพึ่งพา

คุณสามารถอ่านเอกสารอย่างเป็นทางการได้ที่นี่:

การตั้งค่าการสร้างโครงการและโมดูล

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.