【Android】Flutterにおけるbuild.gradleの役割と設定方法
はじめに
今まで、ネコ型おしゃべりロボットのアプリは、iOSのシミュレーターと実機でのみ動作確認をしていたが、Android emulatorでももちろん確認しないといけない。
対応していくうちに、「そもそもbuild.gradleって何?」となったので、基本をおさらい。
Gradleとは何か
Gradleとは、Groovy(またはKotlin)をベースにしたビルド自動化システム。
ビルドスクリプトはDSL(ドメイン固有言語)を用いて記述されるので、ビルドプロセスの高度なカスタマイズを可能にする。DSLを通じて、依存関係の管理、ビルドタスクの定義、アプリケーションのパッケージングなどを行える。設定は、build.gradle に書く。
Flutterアプリケーションでは、Dartで記述されたコードがネイティブアプリケーションにコンパイルされる際、Android部分のビルド管理にGradleが使用される。
ちなみに、”Gradle”の名前は「Gradual」(徐々に)と「Build」(ビルド)の組み合わせから来ている。つまり、Gradleは段階的にビルドを進めることができるビルドシステムを意味している。
Gradle Wrapperを使用することで、Gradleのインストールなしにプロジェクトのビルドが可能になる。
Flutterプロジェクトのbuild.gradleファイル
Flutterプロジェクトには、通常2つのbuild.gradleファイルが存在する。
プロジェクトレベル:Androidアプリ全体の設定を行う。
アプリレベルのファイル:アプリモジュールの設定を行う。
階層構造は下記
your_app/
└── android/
├── build.gradle (プロジェクトレベルのbuild.gradle)
├── app/
│ └── build.gradle (アプリレベルのbuild.gradle)
├── gradle/
│ └── wrapper/
│ └── gradle-wrapper.properties
└── ...
プロジェクトレベルのbuild.gradle(/project_root/android/build.gradle)
プロジェクト全体のビルド設定を定義する。下記例では、プロジェクト全体で使用されるGradleプラグイン(Kotlin)と、プロジェクトで利用可能なリポジトリ(google, mavenCentral)を定義している。
Dart
// /project_root/android/build.gradle
buildscript {
ext.kotlin_version = '1.9.0'
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.4.2'
// START: FlutterFire Configuration
classpath 'com.google.gms:google-services:4.3.14'
// END: FlutterFire Configuration
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
google()
mavenCentral()
}
}
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
project.evaluationDependsOn(':app')
}
tasks.register("clean", Delete) {
delete rootProject.buildDir
}
アプリレベルのbuild.gradle(/project_root/android/app/build.gradle)
特定のアプリケーションモジュール(通常はFlutterアプリ自体)に対する設定を管理する。
主な責務
アプリ固有のSDKバージョン、依存関係、署名設定などの定義。
ビルドタイプ(デバッグ、リリースなど)ごとの設定。
アプリ固有のリソースファイル、マニフェストファイルなどへのパス指定。
下記例では、特定のアプリケーション(com.example.myapp)のためのSDKバージョン、依存関係、アプリケーションIDなどを定義している。
Dart
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
android {
compileSdkVersion 29 // コンパイルに使用するSDKバージョン
defaultConfig {
applicationId "com.example.myapp" //アプリの一意の識別子。Google Playストアなどのアプリストアでアプリを一意に識別するために使用される
minSdkVersion 16 // サポートする最小のAndroidバージョン
targetSdkVersion 29 // アプリが最適化されていると想定するAndroidバージョン
versionCode 1
versionName "1.0"
}
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}
SDKバージョンとAPIレベルの設定(アプリレベル)
SDKバージョンとAPIレベルの設定はアプリ単位で行うため、これらの設定はapp/build.gradleファイルに記述する。
compileSdkVersion: コンパイル時に使用さ….
続きはこちらで記載しています。