51
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Android studio の Gradleについて調べてみた

Posted at

はじめに

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での編集もできるみたいです。
というかこちらが正攻法?なのでしょうか??

[File]→[Project Structure...]
image.png

image.png

個人的にはソースの方がわかりやすいですけどね。

build.gradleの記述について

書き方については素晴らしい記事があるのでここでは掻い摘んで記載します。

素晴らしい記事

プロジェクトの共通設定の例


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

大変勉強になりました。ありがとうございました🙇‍♂️

51
30
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
51
30

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?