はじめに
gradleはビルドツールってぐらいの認識であまり深く理解せずに使ってました。
が、いざAndroid StudioをVersion upしてみるとクラッシュしたりコンパイルエラーが取れなくなったりと開発できなくなってしまいました…
このままじゃダメなのでちゃんと理解して開発環境を適切にupdateできるように自分なりに調べてみることにしました。
gradleとは
素晴らしい記事がたくさんありますので詳細は割愛してポイントだけ箇条書きで。
- gradleはビルドシステム
- Gradleの記述言語はGroovy
- 記述言語はGroovyだけどJavaコードでも書ける
- Product Flavor、Build Typeとかで環境に応じてビルド設定を分けられる
- ビルド依存関係を管理
・・・などなど
参考URL
build.gradleについて
今回はとあるアプリを流用改造してスタートしたプロジェクトなので、既存のbuild.gradleがあります。4つも?!そんなにいるの?
調べたら共通の依存関係とか設定とかを上位に置いて、プロジェクト毎の設定は個別に設定できるらしい。なるほど!!
root
┣ build.gradle
┣ app1
┃ ┗ build.gradle
┗ app2
┗ build.gradle
こんな感じでbuild.gradleファイルがいくつか存在する形にできるみたいです。
私が今やってるやつは
root
┣ build.gradle
┣ app
┃ ┗ build.gradle
┗ サブプロジェクト
┣ app
┃ ┗ build.gradle
┗ ライブラリ
┗ build.gradle
こんな感じでサブプロジェクトのbuild.gradleが2つあったので合計4つになっていました。
build.gradleの編集について
build.gradleはいつもソースコードを直編集してましたが、GUIでの編集もできるみたいです。
というかこちらが正攻法?なのでしょうか??
個人的にはソースの方がわかりやすいですけどね。
build.gradleの記述について
書き方については素晴らしい記事があるのでここでは掻い摘んで記載します。
素晴らしい記事
- AndroidStudioでGradleを使う際のメモ
- Android studioにおけるbuild.gradleの設定について
- Androidアプリのビルド設定管理(Product Flavor、Build Type)
プロジェクトの共通設定の例
buildscript {
repositories {
jcenter()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.1.4'
classpath 'com.google.gms:google-services:4.2.0'
}
}
allprojects {
repositories {
jcenter()
google()
}
}
上の例の場合はdependenciesでどのライブラリを使うかを指定しています。
そしてrepositoriesはどこから取ってくるかを書いてあります。
このプロジェクトの場合は全てのプロジェクトでjcenterとgoogleから取ってくる必要があるのでallprojectsで定義しているみたいです。
アプリのbuild.gradleの例
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
android {
// コードを コンパイル/ビルド するのに必要なSDKやbuild-toolのバージョン
compileSdkVersion 28
buildToolsVersion "28.0.3"
// マニュフェストエントリ
defaultConfig {
applicationId PACKAGE_NAME
minSdkVersion 23
targetSdkVersion 28
versionCode VERSION_CODE
versionName VERSION_NAME
}
}
// ライブラリの依存関係
dependencies {
implementation project(':pnp:library')
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'com.google.android.material:material:1.1.0'
}
apply pluginで使うプラグインを指定します。
androidで括ってコンパイルのSDKのバージョンやgradleビルドツールのバージョンを指定します。
※勘違いしそうですがgradleのバージョンとgradleビルドツールのバージョンは別物なので注意です。gradleのバージョンが最新でもgradleビルドツールのバージョンが古いってことがありますのでよく確認しておきましょう。
defaultConfigにマニフェスト情報を記述しておくことでビルド時に自動で追加してくれます。
のでここで書いておいた方が良いかなと思います。
dependenciesに使うライブラリを追記していきます。
使うライブラリ側のREADMEとかに例があるのでそれをみて追記していきましょう。
基本的にはこんなところだと思いますが、実際のプロジェクトの場合はもっと色々な設定があります。
ほぼ必須な設定としてProduct Flavor、Build Typeです。
Androidアプリのビルド設定管理(Product Flavor、Build Type)
デバッグとリリースでアプリのビルド設定を切り替えることができます。例えばDBの向け先を変えたりとか。
他にも色々あるので調べてみるとビルドが快適になること間違いなしです!
終わりに
今までなんとなくで使っていましたが、きちんと理解することによって開発がより効率的に進められるようになると思います。そして自分で開発環境の構築もできるようになります。
勉強することたくさんありますが時代に置いていかれないように頑張りますw
ほぼ独学の為、間違い・語弊がありましたらご指摘いただけると幸いです。
参考URL
大変勉強になりました。ありがとうございました🙇♂️