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


98

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

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

私の理解に従って、さまざまな種類の依存関係があります:

  1. build.gradle(Project:My-app)のルートレベルで定義したもの
  2. build.gradle(Project:My-app)のビルドスクリプト内の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非同期Httpクライアントの依存関係コードをbuild.gradle(Module:app)に追加する必要があると思います。

理解を深めるために、これらすべてを明確に示すことができればすばらしいと思います。


3
外部ライブラリの場合、はい、追加する build.gradle(Modules:app)File -> Project Structure -> Modules -> (Choose project you want to add library) -> Dependencies、緑の十字記号が表示される場所に移動する必要があります。その選択Module Dependencyをタップして、ライブラリを自動的に追加します
hrskrs

build.gradle(Module:app)に追加すると、Failed to find: com.loopj.android:android-async-http:1.4.5 直接ダウンロードできないというエラーが表示され、プロキシも設定しました。私はjarファイルをダウンロードし、手動で試しましたが、File Repositoryそれは正しい方法です。
Anil Bhaskar、2015

簡単にするProject StructureためにModules、プロジェクトに移動して選択します。そこにあなたが表示されますgreen cross sign。クリックするとNew Moduleウィンドウが開きます。そこでライブラリをインポートすることを選択し.jarますimport .JAR or .AAR package。ファイルがある場合は、以下を選択します。それ以外の場合にあなたのjarファイルをコピーしlibsたフォルダとあなたにModule:appこれらの依存関係を追加しますdependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile files('libs/your_jar_file.jar') }
hrskrs

回答:


49

build.gradle(Project:My-app)

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

各プロジェクトにはが含まれていtop-level gradle fileます。それは通常common configsすべてのために含まれていますmodules。これに何が含まれていても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ファイルがあります。この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'
}

43

Android Studioはデフォルトで両方のbuild.gradleファイルを並べて表示するため、少し混乱します(Androidビューを使用する場合)。

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

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

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

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

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

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

基本的なプロジェクトでは、編集する必要があるほとんどすべてのものがアプリケーションモジュールのbuild.gradleファイルに含まれます。次のように覚えておくことができます。

アプリを作成しているので、build.gradle(Module:app)ファイルに移動します。

参考文献


1

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

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

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

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

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

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