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

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

この記事からわかること

  • Gradleとは?
  • Android Studioとの関係性役割
  • build.gradlesettings.gradle使い方
  • キャッシュ削除する方法

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

環境

この記事は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


// プロジェクトで使用するプラグインを指定。
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について調べてみた

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index