build.gradle

build.gradle ファイルの役割

一、Gradle ビルドシステム概要

Android Studio はプロジェクトのビルドに Gradle を使用します。Gradle は非常に先進的なビルドツールで、従来の XML ではなく、Groovy ベースのドメイン固有言語(DSL)を使ってプロジェクト設定を宣言します。

HelloWorld プロジェクトには2つの build.gradle ファイルがあります。外側(プロジェクトレベル)と内側(モジュールレベル)です。


二、外側の build.gradle(プロジェクトレベル)

パス:プロジェクトのルートディレクトリ/build.gradle

buildscript {
    repositories {
        jcenter()
        maven {
            url 'https://maven.google.com/'
            name 'Google'
        }
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.2'

        // 注意:アプリケーションの依存関係はここに記述しないでください。
        // 各モジュールの build.gradle ファイルに記述してください。
    }
}

allprojects {
    repositories {
        jcenter()
        maven {
            url 'https://maven.google.com/'
            name 'Google'
        }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}Code language: JavaScript (javascript)
主要な設定の解説
設定項目説明
jcenter()JCenter コードホスティングリポジトリを使用するよう宣言します。多くのオープンソース Android プロジェクトが JCenter でホストされており、宣言することでこれらのライブラリを直接参照できます。
google()Android Support Library や Constraint Layout などの Google 公式ライブラリを取得するための Google Maven リポジトリ を使用するよう宣言します。
classpath 'com.android.tools.build:gradle:3.1.2'Gradle の Android プラグイン を宣言します。Gradle 自体は Java や C++ などのプロジェクトをビルドできますが、Android プロジェクトをビルドするにはこのプラグインが必要です。
allprojectsすべてのモジュール(サブモジュールを含む)に対してリポジトリのアドレスを統一して設定します。
task cleanクリーンタスクを定義し、実行時にプロジェクト全体の build ディレクトリを削除します。

外側の build.gradle は 基本的に変更する必要はありません。グローバルなリポジトリを追加したり、Gradle プラグインのバージョンを上げたりする場合のみ変更します。


三、内側の build.gradle(モジュールレベル / app ディレクトリ)

パス:app/build.gradle

apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    buildToolsVersion "27.0.3"
    defaultConfig {
        applicationId "com.foxdevelop.www.myapplication"
        minSdkVersion 14
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:27.+'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
}Code language: PHP (php)

以下、各部分を順に解説します。


四、apply plugin —— プラグインの宣言

apply plugin: 'com.android.application'Code language: JavaScript (javascript)
値意味
com.android.applicationアプリケーションモジュール。直接実行可能です。
com.android.libraryライブラリモジュール。単独では実行できず、他のモジュールから依存されて呼び出されます。

モジュールが「App」なのか「Library」なのかを見分ける重要な設定です。


五、android ブロック —— コアビルド設定

1. コンパイルバージョンとビルドツール
compileSdkVersion 27
buildToolsVersion "27.0.3"Code language: CSS (css)
設定説明
compileSdkVersionプロジェクトのコンパイルに使用する Android SDK バージョンを指定します。27 は Android 8.1 に対応します。
buildToolsVersionビルドツールのバージョン番号です。新しいバージョンが利用可能な場合、Android Studio が更新を促します。
2. defaultConfig —— デフォルト設定
defaultConfig {
    applicationId "com.foxdevelop.www.myapplication"
    minSdkVersion 14
    targetSdkVersion 27
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}Code language: JavaScript (javascript)
プロパティ説明
applicationIdアプリの一意のパッケージ名。アプリの一意識別子として使用されます(Google Play への公開時など)。
minSdkVersionサポートする最低の Android バージョン。14 は Android 4.0 に対応します。
targetSdkVersionそのバージョンで十分にテストされたことを示します。システムはこれに基づいてバージョン固有の機能(7.0 のマルチウィンドウモードなど)を有効にします。
versionCodeバージョン番号。整数値で、アプリストアがアップデートを判断するために使用します。
versionNameバージョン名。文字列で、ユーザーに表示されます。
testInstrumentationRunnerAndroid 自動テストのランナーを指定します。
3. buildTypes —— ビルドタイプ
buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}Code language: JavaScript (javascript)
設定説明
debugデバッグ版の設定(省略可能。デフォルト値が適用されます)。
releaseリリース版の設定。
minifyEnabledコード難読化を有効にするかどうか。false = 難読化しない、true = 難読化する。
proguardFiles難読化ルールファイルを指定します:
• 1つ目:SDK ディレクトリ内の一般的な難読化ルール
• 2つ目:proguard-rules.pro。プロジェクト固有のルールを記述できます。

Android Studio がデフォルトで実行するのは debug(テスト)ビルド です。正式なリリースビルドの生成方法については後述します。


六、dependencies —— 依存関係の管理

これは 最も頻繁に変更される 部分で、プロジェクトが依存するすべてのライブラリを宣言します。

3つの依存関係のタイプ
タイプ説明例
ローカル依存ローカルの jar ファイルやディレクトリに依存compile fileTree(dir: 'libs', include: ['*.jar'])
ライブラリ依存プロジェクト内のライブラリモジュールに依存compile project(':library')
リモート依存JCenter / Google リポジトリ上のオープンソースライブラリに依存compile 'com.android.support:appcompat-v7:27.+'
行ごとの解説
// ローカル依存:libs ディレクトリ内のすべての .jar ファイルをビルドパスに追加
compile fileTree(dir: 'libs', include: ['*.jar'])Code language: PHP (php)
// リモート依存:AppCompat 互換ライブラリ
// フォーマット:ドメイン:グループ:バージョン
compile 'com.android.support:appcompat-v7:27.+'Code language: JavaScript (javascript)
// リモート依存:ConstraintLayout レイアウトライブラリ
compile 'com.android.support.constraint:constraint-layout:1.0.2'Code language: JavaScript (javascript)
// テスト依存:JUnit 単体テスト
testCompile 'junit:junit:4.12'Code language: JavaScript (javascript)
// Android テスト依存:Espresso UI テスト
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
})Code language: JavaScript (javascript)

リモート依存のワークフロー:Gradle はまずローカルにライブラリがキャッシュされているか確認します → あればそれを使用 → なければ自動的にネットワーク経由でダウンロード → ダウンロード後にビルドパスに追加します。


七、まとめと比較

ファイル役割変更頻度
外側の build.gradleグローバルリポジトリ設定、Gradle プラグインバージョンほとんど変更しない
内側の app/build.gradleモジュールのビルド設定、依存関係の管理頻繁に変更する
コア設定主要な属性
——————
apply pluginapplication / library の区別
compileSdkVersionコンパイル SDK バージョン
applicationIdアプリの一意識別子
minSdkVersion最低互換バージョン
targetSdkVersionターゲットテストバージョン
buildTypesdebug / release ビルド設定
dependenciesローカル / リモート / ライブラリ依存

build.gradle

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です