【Android Studio】Gradleとは?仕組みや構造を理解する

この記事からわかること
- Gradleとは?
- Android Studioとの関係性と役割
- build.gradleやsettings.gradleの使い方
- キャッシュを削除する方法
- Android Gradle Plugin(AGP)とは?
index
[open]
\ アプリをリリースしました /
環境
- Android Studio Koala: 2024.1.1 Patch 2
- Kotlin:1.8.20
この記事はGradleについて何もわかっていない筆者ができるだけ理解するために備忘録がわりとして記述した記事になります。まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
Gradleとは
「Gradle(グレイドル)」はJava(JVM)環境におけるビルドプロセスを自動化するためのビルドツール。Android Studioではデフォルトのビルドツールとして組み込まれている。
Android Studioにおける代表的な役割は以下の通り。
1.ビルド自動化
Androidアプリケーションのビルドプロセスを自動化。ソースコードのコンパイル、リソースのパッケージング、テストの実行、APK(またはAAB)の生成などが可能。
2.依存関係の管理
外部ライブラリやモジュールを管理。build.gradleファイルに記述された依存関係をもとに、必要なライブラリを自動的にダウンロードし、ビルドに組み込む。
3.ビルド設定のカスタマイズ
ビルド設定を詳細にカスタマイズできる。ビルドタイプ(例: デバッグ、リリース)の設定、フレーバーの定義の設定など。
ファイル群
プロジェクトを作成するとGradleに関わるファイルがいくつか作成される。記述する言語は「Groovy」というスクリプト言語。JavaやKotlinのコードでも記述は可能。
root
├── app
│ ├── src
│ ├── build.gradle
│ ├── etc..
├── build.gradle
├── settings.gradle
├── gradle.properties
├── gradle
│ └── wrapper
build.gradle
「build.gradle」はGradleビルドツールでのビルドプロセスや依存関係を管理するための設定ファイル。root
直下とアプリモジュール(app
)配下に1つずつ存在する。
root直下のbuild.gradle
- プロジェクト全体に適用される設定や共通の依存関係を定義
- マルチプロジェクトビルドの場合にサブプロジェクトの設定や依存関係を管理
- 依存関係を解決するためのリポジトリ(例:Maven Central、Google Maven Repositoryなど)の設定
// プロジェクトで使用するプラグインを指定。
plugins {
// Android Gradle Plugin(AGP) Androidアプリケーション用。
id 'com.android.application' version '8.0.2' apply false
// Android Gradle Plugin(AGP) Androidライブラリ用
id 'com.android.library' version '8.0.2' apply false
// Kotlinプラグイン。Kotlinコードのコンパイルとサポートを提供
id 'org.jetbrains.kotlin.android' version '1.8.20' apply false
}
// ビルドスクリプトの設定。ビルドツールの依存関係やリポジトリを指定
buildscript {
repositories {
// Googleのリポジトリから依存関係を取得。
google()
// Maven Centralリポジトリから依存関係を取得
mavenCentral()
}
dependencies {
// Android Gradle Plugin。Androidアプリケーションのビルドを管理するためのプラグイン。
classpath 'com.android.tools.build:gradle:8.0.2'
// 他のプラグインや依存関係をここに追加。
}
}
// プロジェクト内のすべてのモジュールに共通のリポジトリ設定を指定
allprojects {
repositories {
// Googleのリポジトリから依存関係を取得。
google()
// Maven Centralリポジトリから依存関係を取得
mavenCentral()
}
}
・plugins
:ビルドスクリプトで使用するプラグインの定義
・buildscript
:ビルドスクリプトが依存するクラスパスやリポジトリを設定
・allprojects
:すべてのサブプロジェクトで共通して使用するリポジトリを指定
※Android Gradle Plugin(AGP)について後述
app配下のbuild.gradle
- モジュール単位に適用される設定や依存関係を定義
- ビルドタイプやフレーバーの設定
plugins {
// Androidアプリケーション用のGradleプラグイン。アプリのビルドを管理し、Androidアプリとしての設定やタスクを提供。
id 'com.android.application'
// Kotlin言語を使用するためのプラグイン。Kotlinのコードコンパイルとサポートを提供。
id 'org.jetbrains.kotlin.android'
}
android {
// アプリケーションの名前空間(パッケージ名)を指定。リソースやクラスを一意に識別するために使用。
namespace 'com.example.myapp'
// コンパイル時に使用するAndroid SDKのバージョン。最新のAPI機能を使用するために指定。
compileSdk 33
// アプリケーションの基本的な設定。
defaultConfig {
// アプリケーションの一意なID。Google Playでのアプリを識別用。
applicationId "com.example.myapp"
// アプリが動作するための最小SDKバージョン。
minSdk 24
// アプリがターゲットとするSDKバージョン。
targetSdk 33
// アプリの内部バージョンコード。
versionCode 1
// ユーザーに表示されるアプリのバージョン名。
versionName "1.0"
// テストの実行に使用するテストランナー。
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
// ビルドの種類を定義します。主に`debug`と`release`の2種類があり、それぞれのビルドで異なる設定が可能。
release {
// リリースビルドでのコード縮小(minification)を無効にします。コードを縮小して難読化する場合はtrueに設定。
minifyEnabled false
// ProGuardの設定ファイル。コード縮小や最適化のルールを定義。
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
// Javaコンパイルオプションを設定
compileOptions {
// ソースコードの互換性としてJava 8を指定。
sourceCompatibility JavaVersion.VERSION_1_8
// コンパイル後のバイトコードの互換性としてJava 8を指定。
targetCompatibility JavaVersion.VERSION_1_8
}
// KotlinコードをJava 8バイトコードにコンパイル。
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile) {
kotlinOptions {
jvmTarget = "1.8"
}
}
}
dependencies {
// アプリケーションが依存するライブラリやモジュールを定義。
}
・plugins
:プロジェクトで使用するプラグインを指定
・android
:Androidビルド設定を定義
・dependencies
:プロジェクトが依存するライブラリやモジュールを定義
settings.gradle
「settings.gradle」はプロジェクトの構造と設定を定義するためのファイル。
- マルチプロジェクトビルドの場合にサブプロジェクトの設定
- プロジェクトの名前の設定
- カスタムプラグインや設定の登録
rootProject.name = 'MyRootProject'
include 'app', 'library'
// 例えば上記ならapp と library という2つのサブプロジェクトが MyRootProject プロジェクトの一部なっている。
gradle.properties
「gradle.properties」はプロジェクトの構成情報を定義するためのプロパティファイル。
gradle-wrapper.properties
「gradle-wrapper.properties」はGradleのバージョン管理を行う設定ファイルです。今プロジェクトで適応されているGradleのバージョンもgradle-X.X-bin.zip
部分から確認することが可能です。
#Fri Feb 09 20:17:22 JST 2024
// GradleのZIPを保存する基準ディレクトリ。GRADLE_USER_HOME は通常 ~/.gradle/ になる。
distributionBase=GRADLE_USER_HOME
// GradleのZIPをどこに保存するか指定。ここでは ~/.gradle/wrapper/dists/ に保存される。
distributionPath=wrapper/dists
// 使用する Gradle のバージョンを指定
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip
// ZIPファイルの保存先の基準ディレクトリ
zipStoreBase=GRADLE_USER_HOME
// ZIPファイルの格納場所
zipStorePath=wrapper/dists
Gradleのバージョンを更新したい場合はこのファイルのgradle-8.0-bin.zip
部分をgradle-8.7-bin.zip
のように変更し「Sync Now」をクリックすることでも更新することが可能です。
compileSdk
やtargetSdk
を引き上げた場合に「Change Gradle version in Gradle wrapper to 8.7 and re-import project」のように表示されるのでこれをクリックすることで必要なバージョンに自動更新してくれますがgradle-8.7-bin.zip
が変更されているだけです。
Gradleのキャッシュを削除する
Gradleも使用しているとどんどんキャッシュが溜まっていく。キャッシュをクリアしたい場合はプロジェクトルートで以下のコマンドを実行すればOK。
$ ./gradlew clean
参考文献
Gradle 日本語ドキュメント
AndroidStudioでGradleを使う際のメモ
Android studio の Gradleについて調べてみた
build.gradle.kts
Android Studioでプロジェクトを立ち上げる際にGradleビルドスクリプトを「Groovy DSL(Domain-Specific Language)」か「Kotlin DSL」かを選択できるようになっており、Kotlin DSLを選択した場合に「build.gradle.kts」になります。

公式からもKotlin DSLが推奨されており、メリットとして型安全性や補完機能、エラー検出などが挙げられます。
dependencies
の部分の表記方法も変わっており、libs.androidx.ui
などのエイリアスを使用して参照することができるようになっています。エイリアスの定義箇所は「gradle/libs.versions.toml
」などを確認することでバージョンなどを確認することが可能です。
dependencies {
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.lifecycle.runtime.ktx)
implementation(libs.androidx.activity.compose)
implementation(platform(libs.androidx.compose.bom))
implementation(libs.androidx.ui)
implementation(libs.androidx.ui.graphics)
implementation(libs.androidx.ui.tooling.preview)
implementation(libs.androidx.material3)
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
androidTestImplementation(platform(libs.androidx.compose.bom))
androidTestImplementation(libs.androidx.ui.test.junit4)
debugImplementation(libs.androidx.ui.tooling)
debugImplementation(libs.androidx.ui.test.manifest)
}
Android Gradle Plugin(AGP)とは
「Android Gradle Plugin(AGP)」はGradleのプラグインの1つでビルド処理をAndroid用に最適化するもの。Gradle単体ではAndroidアプリのビルドはできないためAGPを組み合わせて使う。
要はGradleを利用してAndroidアプリとしてビルドを行うための機能を色々提供してくれているもの。
AGP の主な役割
- AndroidManifest.xmlなどの処理
- res(レイアウト, 画像, 文字列)の管理・最適化
- APK/AAB の生成 (assembleDebug, bundleRelease など)
- ProGuard / R8 によるコード圧縮・難読化
- マルチモジュールの管理 (:app, :library など)
AGPとGradleの関係
AGPとGradleの関係は密に関わり合っているため相互のバージョンのある程度依存関係がある。公式が対応一覧を示している通りでどちらかのバージョンを上げたい場合にはもう片方もあげる必要があるので注意。
プラグインバージョン | 最低限必要なGradleバージョン |
---|---|
8.9 | 8.11.1 |
8.8 | 8.10.2 |
8.7 | 8.9 |
8.6 | 8.7 |
8.5 | 8.7 |
8.4 | 8.6 |
8.3 | 8.4 |
8.2 | 8.2 |
8.1 | 8.0 |
8.0 | 8.0 |
7.4 | 7.5 |
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。