Android Studioプロジェクトに2つのbuild.gradleファイルがあるのはなぜですか?


102

EclipseプロジェクトをAndroid Studioにインポートした後、2つのbuild.gradleファイルが表示されます。

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

最初のバージョンは短く、2番目のバージョンにはの定義が含まれていますcompileSdkVersion

2つの別個のファイルを作成する目的は何ですか?個別のビルドタスクはありますか?


回答:


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 2014

Gradleを使用してプロジェクトをビルドする場合、build.gradleファイルは必須です。Android StudioはGradleを必要としませんが、強くお勧めします。トップレベルのファイルはサブファイルを呼び出しません。Gradleはタスクで機能しますが、コメントで説明するのは困難です。
Gabriele Mariotti 14

ガブリエレに感謝します。これで始められます。
Sabuncu 14

1
特にrootProject.ext.compileSdkVersion構成は非常に有益です。
Sabuncu 14

2
ext {...}を使用して迂回することは重要ですか、それともAndroidプラグインとcompileSdkVersionをトップレベルのビルドファイルに直接適用する必要がありますか?
PhilLab、2015年

17

公式ドキュメントから:

Android Studioプロジェクトには、プロジェクト内のすべてのアプリケーションモジュールに共通の構成オプションを追加できるトップレベルのプロジェクトGradleビルドファイルが含まれています。各アプリケーションモジュールには、そのbuild.gradleモジュールに固有のビルド設定用の独自のファイルもあります。

ここに画像の説明を入力してください

プロジェクトビルドファイル

<PROJECT_ROOT>\build.gradleまたは、プロジェクトビルドファイルプロジェクト全体用であるため、グローバルプロジェクト構成に使用されます。一般的なプロジェクトビルドファイルには、次のものが含まれています。

  • 以下を定義するビルドスクリプト:
    • リポジトリと
    • 依存関係
  • Gradleプラグインのバージョン

デフォルトでは、プロジェクトレベルのGradleファイルはbuildscriptを使用して、Gradle リポジトリ依存関係を定義します。これにより、さまざまなプロジェクトでさまざまなGradleバージョンを使用できます。サポートされるリポジトリーには、JCenter、Maven Central、またはIvyが含まれます。この例では、ビルドスクリプトがJCenterリポジトリと、Gradleバージョン1.0.1のAndroidプラグインを含むクラスパス依存関係アーティファクトを使用することを宣言しています。


モジュールビルドファイル

<PROJECT_ROOT>\app\build.gradleまたは、モジュールビルドファイル特定のモジュール用であるため、特定のモジュールレベルの構成に使用されます。A モジュールのビルドファイルには以下が含まれています。

  • アンドロイド設定
    • compileSdkVersion
    • buildToolsVersion
  • defaultConfigおよびproductFlavors
    • applicationId、minSdkVersion、targetSdkVersion、テスト情報などのマニフェストプロパティ
  • buildTypes
    • デバッグ可能、ProGuard有効化、デバッグ署名、バージョン名サフィックス、テスト情報などのビルドプロパティ
  • 依存関係

ここで公式ドキュメントを読むことができます:

プロジェクトとモジュールのビルド設定

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.