AdSheepは、新米バックエンドエンジニアの技術分野に留まらないライフハック風ブログです

AndroidにおけるGradle

Android

どうも、ShouNです。
最近、業務でAndroidアプリを触ることが多くなりました。
基礎の理解を進める際に、いろいろと調べたことが肥大化してきたので、記録としてここに残していきます。
今回は、Androidアプリ開発をする上で避けて通れない、Gradleについて調べたことをまとめました。

Gradleとは

Groovyライクなビルドツールです。
似たようなものにMake、AntやMavenがあります。
プログラムのコンパイルからビルドまでを自動で行う機能を持ちます。
それ以外にも色々できますが、Androidにおいてはビルドが一番重要な機能なので省略。
Javaに似た言語で記述するので、Java開発でMavenを使っていたユーザーにとっては楽みたいです。

ビルドツールとは?
Gradle公式ドキュメント

AndroidにおけるGradleファイル

AndroidStudioでプロジェクトを作成すると3つのGradleファイルが作成されます。
– プロジェクトルートにbuild.gradle, settings.gradle
– app/にbuild.gradle

AndroidStudioにおける.gradle
各Gradleファイルの違いについてはこちらを参考にさせていただきました。

プロジェクトルートのbuild.gradleについて

サブプロジェクト共通の設定を管理します。

プロジェクトルートのsettings.gradleについて

アプリケーション全体の設定を管理します。

App/のbuild.gradleについて

サブプロジェクトごとの設定を管理します。

サブプロジェクトとは?

Gradleはマルチプロジェクトをサポートしているため、複数のプロジェクトファイルをひとまとめにしてひとつのソフトウェアとしてビルドすることが可能になっています。
サブプロジェクトととは単体のプロジェクトを指します。アプリケーション内にプロジェクトが1つしかなくても、それはサブプロジェクトと呼称するようです。
ビルドされていないソースをライブラリとして使いたい場合はsettings.gradleにそれを記述する必要がある。
ビルド済みのソース(.jar/.so等)をライブラリとして使う場合にはbuild.gradleの依存関係に記述する。

build.gradleの書き方

Gradleファイルの書き方についてはこちらが参考になりました。

ルートのbuild.gradle

buildscript : ビルドツール自身の設定を入れ子で記述
allprojects : サブプロジェクト共通の設定を入れ子で記述

入れ子で記述すべき要素

dependencies: 依存関係を記述します。
さらに入れ子のclasspathで宣言したライブラリが依存関係に追加されます。
repositories: 依存ファイルの検索先を指定します。
repositoriesについて

task: Gradleが標準で搭載しているTask機能を設定します。

App/build.gradle

App/build.gradleについてはこちらを参考にしています。
apply : プラグインインポート
android : androidのビルド設定

入れ子で記述

compileSdkVersion : コンパイルするのに使うSDK.platformのバージョンです。
buildToolsVersion : ビルドするのに使うSDK.Build-toolsのバージョンです。
defaultConfig : AndroidManifestEntry、アプリの設定は基本ここに入れ子で記述します。
buildTypes : ビルド定義。リリース用やテスト用などで複数設定可。Proguardの設定はここに記述します。
compileOptions : JDKのバージョンを指定。省略可。省略された際はcompileSdkVersionに合わせたJDKが自動で選択されます。
dependencies : 依存関係を記述します。

compileOptionsについて
ソース難読化ツール’Proguard’について

アプリの設定

applicationId : パッケージ名です。端末のアプリアイコン下に表示される名前になります。
minSdkVersion : 動作に必要な最小APIレベルです。このAPIレベル以下のAndroidVersionを使っている端末では、GooglePlayの検索でアプリが引っかからなくなります。
targetSdkVersion : 動作を保証するAPIレベルです。基本的にアプリの動作テストを行ったAndroidVersionを書くみたいです。
versionCode : 内部管理のバージョンです。
versionName : ユーザーに公開されるバージョンです。

まとめ

今回はGradleファイルについてでした。
Androidアプリの開発は、Androidフレームワークやライブラリを使うことがほとんど必須ですが、それらを使用するためにはGradleに記述する必要があります。
また、Gradleの記述同士が干渉しあっている部分もあり、ちょっと書き換えただけで今まで動いていたアプリが突然動かなくなってしまうこともあります。
Gradleの仕様を理解したうえでアプリ開発を進めていきたいですね。

 

ShouN
ShouN

Androidについては、毎年のようにあるOSアップデートに伴って仕様が大きく変更されることも多々あるため、公式ドキュメントや開発ブログを注視して、常にGoogleの動向を掴んでおくことが大事だと感じました。

コメント