web-dev-qa-db-ja.com

build.gradle(Project)とbuild.gradle(Module)の違い

Android Asynchronous Http Clientの依存関係をプロジェクトに追加しようとしています。そのため、プロジェクトには2つのbuild.gradleファイルがあります。

enter image description here

私の理解では、異なる種類の依存関係があります。

  1. Build.gradle(Project:My-app)のルートレベルで定義されたもの
  2. Build.gradle(Project:My-app)のbuildscript内の1つ
  3. もう1つはbuild.gradle(Modules:app)です

この質問 はbuildScriptの依存関係のリポジトリに関するもので、最初の2つのタイプについて少し説明します。

Build.gradle(Project:My-app)も言っています

// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files

したがって、Android Asynchronous Http Clientの依存関係コードをbuild.gradle(Module:app)に追加する必要があると思います。

理解を深めるために、誰かがこれらのすべての明確な画像を提供できれば、それは素晴らしいことです。

83
Anil Bhaskar

build.gradle(Project:My-app)

すべてのサブプロジェクト/モジュールに共通の構成オプションを追加できる最上位ビルドファイル。

各プロジェクトにはtop-level gradle fileが含まれます。通常、すべてのmodulesに対してcommon configsが含まれます。このtop-level gradleに含まれるものは何でも、すべてのmodulesに影響します。

例:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.Android.tools.build:gradle:2.0.0-alpha3'

        //Maven plugin
        classpath 'com.github.dcendents:Android-maven-gradle-plugin:1.3'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
        maven { url "https://jitpack.io" }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

build.gradle(Module:app)

特定のモジュールのビルドファイル(依存関係、署名設定、ビルドタイプ、フレーバーなどを追加する場所)

すべてのmodulesには特定のgradle fileがあります。このgradleファイルに含まれるものは何でも、含まれるmoduleにのみ影響します。

例:

apply plugin: 'com.Android.application'

Android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "com.hrskrs.gesturefun"
        minSdkVersion 10
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            zipAlignEnabled true
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
        debug {
            debuggable true
            zipAlignEnabled true
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile project(':gesture-fun')
    testCompile 'junit:junit:4.12'
    compile 'com.Android.support:appcompat-v7:23.1.1'
    compile 'com.Android.support:design:23.1.1'
    compile 'com.jakewharton:butterknife:7.0.1'
}
38
hrskrs

Android St​​udioでは、デフォルトで両方のbuild.gradleファイルが隣り合って表示されるため(Androidビューを使用する場合)、少し混乱します。

enter image description here

プロジェクトビューに切り替えると、実際の構造とさまざまなbuild.gradleファイルの場所を確認できます。

enter image description here

build.gradle(プロジェクト:MyApplication)ファイルはプロジェクトのルートフォルダーにあり、その構成設定はプロジェクト内のすべてのモジュールに適用されます。モジュールは、より大きなプロジェクトの孤立した部分です。マルチモジュールプロジェクトでは、これらのモジュールには独自のジョブがありますが、連携してプロジェクト全体を形成します。ほとんどのAndroidプロジェクトには、アプリモジュールという1つのモジュールしかありません。

ここのbuild.gradle(モジュール:アプリ)ファイルはappフォルダーにあります。そのビルド設定はアプリモジュールにのみ適用されます。別のモジュールがある場合、そのモジュールにも独自のbuild.gradleファイルがあります。 として、3つのモジュールでライブラリプロジェクトを作成しました。ライブラリモジュール、デモアプリモジュール、およびテストに使用する予定の別のアプリモジュールです。それぞれに独自のbuild.gradleファイルがあり、これを調整できます。

enter image description here

基本的なプロジェクトでは、編集する必要があるほぼすべてのものがアプリモジュールのbuild.gradleファイルに含まれます。次のように思い出すことができます。

appを作成しているので、build.gradle(Module:app)ファイル。

参考文献

34
Suragch

2つのgradleファイルの関係について、hrskrsは非常に明確な説明を行いました。それについて補足します。

プロジェクトにモジュールが1つしかない場合(appなど)、top build.gradle(Project:My-app)の利点はあまり明確ではありません。モジュールについてbuild.gradle(Module:app)ですべてを設定し、次の日にアップグレードするときに1つのファイルのみを変更できるためです。

ただし、プロジェクトに5つのモジュールがあり、同じ依存関係がある場合A、トップを使用しない場合build.gradle(Project:My-app) =次の日に5つのファイルを維持する必要があります。

ちなみに、build.gradle(Module:app)build.gradle(Project:My-app)を上書きできます。

この設計により、APPの保守性が向上します。

1
shusheng007