🤖

Android初期プロジェクトに入っているGradleファイルについて観察してみた

2023/10/09に公開

はじめに

Androidのプロジェクトを作成すると、初期プロジェクトにはGradleファイルがいくつか入っています。
正直なところ、それぞれのファイルが何をしているのかわからなかったので調べてみました。

初期に入っているGradleファイル

gradlefile.jpg

build.gradle

plugins {
    //Androidアプリケーションのコンパイル、ビルド、著名などをするためのプラグイン
    id 'com.android.application' version '7.2.0' apply false
    // Androidライブラリのコンパイル、ビルド、著名などをするためのプラグイン
    id 'com.android.library' version '7.2.0' apply false
    // Kotlinのコンパイル、ビルド、著名などをするためのプラグイン
    id 'org.jetbrains.kotlin.android' version '1.7.10' apply false
}

// タスクTypeはDelete
task clean(type: Delete) {
    // ディレクトリを指定して削除している
    delete rootProject.buildDir
}
  • 依存関係の
  • ビルド設定の拡張
  • 依存関係管理
  • ビルドスクリプトのカスタマイズ

タスクで指定したディレクトリを削除することで以前のビルドアーティファクトを削除するために使用されます。これにより、次回のビルドがクリーンな状態から開始されることが保証されます。

gradle-wrapper.properties

// ユーザーのホームディレクトリ内の.gradleディレクトリを指します
distributionBase=GRADLE_USER_HOME
// ディストリビューションのパスを指します
distributionPath=wrapper/dists
// ディストリビューションのURLを指します
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip
// ダウンロードしたGradle distributionのZIPファイルを保存するベースディレクトリを指します
zipStoreBase=GRADLE_USER_HOME
// zipStoreBaseディレクトリ内のZIPファイルの保存パスを指定します
zipStorePath=wrapper/dists

Gradle Wrapperは、特定のGradleバージョンを使用してプロジェクトをビルドするためのツールであり、プロジェクトにはGradleのインストールが必要ありません。Gradle Wrapperは、プロジェクトのルートディレクトリにあるgradlewまたはgradlew.batスクリプトを介して実行されます。

gradle.properties

// Gradleデーモン(裏でビルドで動いてるGradle)に渡されるJVMの引数を設定します。
org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
// プロジェクトがAndroidXライブラリを使用することを指定します
android.useAndroidX=true
// 公式のKotlinコードスタイルが指定されています
kotlin.code.style=official
// 非推移的なRクラスの生成を制御します。これは、依存関係のRクラスがプロジェクトのRクラスにマージされないようにします
android.nonTransitiveRClass=true

プロジェクトの固有のGradle設定を指定するために使用されます。このファイルは、プロジェクトのルートディレクトリに置く必要があります。

Rクラスとは

プロジェクト内のリソースにアクセスするために使用されます。
ここでの「リソース」とは、画像、文字列、レイアウト、アニメーションなど、アプリケーションで使用される静的なコンテンツを指します。
Rクラスはビルドプロセス中に自動的に生成される。

settings.gradle

// プロジェクトで使用するプラグインの取得先を定義します
pluginManagement {
    // プラグインの取得先を定義します
    repositories {
        gradlePluginPortal()
        google()
        mavenCentral()
    }
}

// プロジェクトの依存関係の解決方法を定義します
dependencyResolutionManagement {
    // プロジェクトレベルのレポジトリが指定されているときにエラーが起きるようにしている
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    // プロジェクトの依存関係の解決方法を定義します
    repositories {
        google()
        mavenCentral()
    }
}
// ルートプロジェクトの名前を指定します
rootProject.name = "Sample01"
// ルートプロジェクトにappモジュールを追加します
include ':app'

プロジェクトのビルドプロセスと依存関係の解決を制御し、プロジェクトの構造を定義するために使用されます。このファイルは、プロジェクトのルートディレクトリに置く必要があります。

local.properties

sdk.dir=C\:\\Users\\User\\AppData\\Local\\Android\\Sdk

この設定は、GradleビルドシステムにAndroid SDKの場所を通知することで、プロジェクトをビルドおよび実行するために必要なツールとリソースにアクセスできるようにする

まとめ

Gradleファイルは、プロジェクトが様々なLibraryやPackageなどに依存していてそれぞれのバージョンや設定をガチガチに管理するために使用されているということがわかりました。
確かにバージョンが違うことでビルドやコンパイルでエラーにかかることが多く成功できた設定をそのまま使いたいということもあるので、Gradleファイルは大事なものだと思いました。

Flamers Tech Blog

Discussion