Mono Works

チラシのすきま

メモ:AndroidStudioの.gradleファイルの種類

AndroidStudioでサンプルを作っていて、2種類のbuild.gradleがあって、どっちがどうなの?って調べていたら、他にも.gradleファイル(setting.gradle)があったので、違いについて調べてみた。

androiddevmemo20150810_00

プロジェクトビューで見ると、ルート直下に「build.gradle」と「setting.gradle」の2つ、そして、ルート > appフォルダの中にも「build.gradle」があります。

それぞれについて調べていくと、これらの.gradleファイルは、Android Studioで開発をおこなう際に、すごく重要なもので、すごく奥が深いことは分りました。とてもじゃないけど、1回で説明するのは無理ぼよなので、自分の理解が進んだ範囲でちょろちょろ書いていきます。

ルート直下の「build.gradle」

以下、サンプル作成時に自動生成された「build.gradle(ルート直下)」の初期内容です。

// 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:1.2.3'
        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

コメントに書かれているように「build.gradle(ルート直下)」は、すべてのサブプロジェクトとモジュールに共通する設定項目を追加することができる最上位のビルドファイルです。そして、注意書きとして「ここには、個別のアプリケーションの依存関係を記述しないでください。それらを記述する場所は、個々のモジュール(サブプロジェクト)に属する「build.gradle」となります。」と書かれています。

今回、サンプル作成時に外部ライブラリを利用することになったので、dependencies(依存関係)に記述をおこなうことになったんですが、どちらのbuild.gradleに書けば良いのか迷ったことが今回のメモを書くことになった発端で、答えとしては、appフォルダ配下の「build.gradle」に記載すればいいということがわかりました。

appフォルダ配下の「build.gradle」

というわけで、こちらは、サブプロジェクトごとに必要な依存関係やビルド設定を記述する場所になります。

以下、サンプル作成時に自動生成された「build.gradle(appフォルダ配下)」の初期内容です。

apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "com.example.hogehoge.test"
        minSdkVersion 17
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.1.1'
}

最後の方の dependencies {}に追加すればいいようです。

setting.gradle

知りたかった答えが見つかっってしまったので、「setting.gradle」については、簡単にどんなものかメモしておきます。

以下、サンプル作成時に自動生成された「setting.gradle(ルート直下)」の初期内容です。

include ':app'

このサンプルでは、「appというサブプロジェクトを含んでいる」ことが記載されていて、「app」フォルダ以下がひとつのサブプロジェクトという扱いになっています。

自分なりのまとめ

つまり、こんな感じなのかな。

  • setting.gradle(ルート直下)–> プロジェクト全体の設定を記述
  • build.gradle(ルート直下)–> サブプロジェクト全体の設定を記述
  • build.gradle(appフォルダ配下)–> サブプロジェクト個々の設定を記述

コメント

コメントなどありましたら、GitHubのディスカッションへお願いします。(書き込みには、GitHubのアカウントが必要です)
執筆者
"ぽぽろんち" @pporoch
pporoch120
Mono Worksの中の人。好きなことをつらつらと書き留めてます。
ギターを始めてから 練習動画をYouTubeにアップしてます。ご笑納ください。
"DQX@ぬここ(UD487-754)、コツメ(NO078-818)"
採用案内