【Android Studio】Gradleとは?仕組みや構造を理解する
この記事からわかること
- Gradleとは?
- Android Studioとの関係性と役割
- build.gradleやsettings.gradleの使い方
- キャッシュを削除する方法
index
[open]
\ アプリをリリースしました /
友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-
posted withアプリーチ
環境
- 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プラグイン。
id 'com.android.application' version '8.0.2' apply false
// Androidライブラリ用のGradleプラグイン
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
:すべてのサブプロジェクトで共通して使用するリポジトリを指定
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のキャッシュを削除する
Gradleも使用しているとどんどんキャッシュが溜まっていく。キャッシュをクリアしたい場合はプロジェクトルートで以下のコマンドを実行すればOK。
$ ./gradlew clean
参考文献
Gradle 日本語ドキュメント
AndroidStudioでGradleを使う際のメモ
Android studio の Gradleについて調べてみた
ご覧いただきありがとうございました。