Bir Android Studio projesinde neden iki build.gradle dosyası var?


103

Bir Eclipse projesini Android Studio'ya aktardıktan sonra iki build.gradledosya görüyorum :

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

İlk sürüm daha kısadır, ikinci sürüm compileSdkVersion, vb. İçin tanımlar içerir .

İki ayrı dosyaya sahip olmanın amacı nedir? Ayrı derleme görevleri var mı?


Yanıtlar:


72

<PROJECT_ROOT>\app\build.gradleuygulama modülüne özeldir .

<PROJECT_ROOT>\build.gradletüm alt projeler / modüller için ortak olan yapılandırma seçeneklerini ekleyebileceğiniz bir "Üst düzey derleme dosyasıdır" .

Projenizde başka bir modül kullanırsanız, yerel bir kitaplık olarak başka bir build.gradledosyanız olur: <PROJECT_ROOT>\module\build.gradle

İçin örnek üst düzey dosyasında bu sık özellikleri belirtebilirsiniz:

buildscript {
    repositories {
        mavenCentral()
    }

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

ext {
    compileSdkVersion = 23
    buildToolsVersion = "23.0.1"
}

Senin içinde app\build.gradle

apply plugin: 'com.android.application'

repositories {
    mavenCentral()
}

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

+1 Teşekkürler, cevabınızı kısa süre içinde kabul edeceğiz. build.gradleBir derlemeyi tetiklemek için dosyanın varlığı zorunlu mu? Ayrıca, üst düzey derleme dosyası alt düzey dosyaları çağırıyor mu? (Buna dair bir kanıt olmamasına rağmen)
Sabuncu

Gradle ile bir proje oluşturmak istiyorsanız build.gradle dosyaları zorunludur. Android Studio aşama gerektirmez, ancak şiddetle tavsiye edilir. En üst düzey dosya alt dosyaları çağırmaz; gradle görevlerle çalışır, ancak bir yorumda açıklamak zordur.
Gabriele Mariotti

Çok teşekkürler Gabriele, bu benim başlamamı sağlayacak.
Sabuncu

1
Özellikle rootProject.ext.compileSdkVersionyapı çok bilgilendirici.
Sabuncu

2
Ext {...} kullanarak dolambaçlı yoldan gitmek önemli mi yoksa android eklentisini ve compileSdkVersion'ı üst düzey derleme dosyasına doğrudan mı uygulamalıyız?
PhilLab

17

Resmi belgelerden:

Android Studio projeleri, projedeki tüm uygulama modülleri için ortak olan yapılandırma seçeneklerini eklemenize olanak tanıyan üst düzey bir proje Gradle derleme dosyası içerir. Her uygulama modülünün build.gradle, o modüle özgü yapı ayarları için kendi dosyası da vardır .

görüntü açıklamasını buraya girin

Proje Derleme Dosyası

<PROJECT_ROOT>\build.gradleveya Proje Oluşturma Dosya içindir tüm proje küresel proje yapılandırmaları için kullanılacaktır böylece. Tipik bir Proje Oluşturma Dosyası aşağıdakileri içerir:

  • aşağıdakileri tanımlayan buildscript:
    • depolar ve
    • bağımlılıklar
  • Gradle Eklenti sürümü

Varsayılan olarak, proje düzeyinde Gradle dosya kullandığı buildscript Gradle tanımlamak depoları ve bağımlılıkları . Bu, farklı projelerin farklı Gradle sürümlerini kullanmasına izin verir. Desteklenen depolar arasında JCenter, Maven Central veya Ivy bulunur. Bu örnek, derleme komut dosyasının JCenter deposunu ve Gradle sürüm 1.0.1 için Android eklentisini içeren bir sınıf yolu bağımlılığı yapısını kullandığını bildirmektedir.


Modül Derleme Dosyası

<PROJECT_ROOT>\app\build.gradleveya Modül Oluşturma Dosya bir içindir belirli modülü belirli modül düzeyi yapılandırmasında kullanılacak böylece. Bir Modül Derleme Dosyası aşağıdakileri içerir:

  • android ayarları
    • compileSdkVersion
    • buildToolsVersion
  • defaultConfig ve productFlavors
    • applicationId, minSdkVersion, targetSdkVersion ve test bilgileri gibi manifest özellikleri
  • buildTypes
    • hata ayıklama, ProGuard etkinleştirme, hata ayıklama imzalama, sürüm adı soneki ve test bilgileri gibi özellikler oluşturun
  • bağımlılıklar

resmi belgeleri buradan okuyabilirsiniz:

Projeler ve modüller derleme ayarları

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.