前の数記事で Gradle の基礎知識や Gradle プラグインに関する知識を学びました。Gradle およびそのプラグインに関する知識については、以下のいくつかの記事を先にお読みください:
- Gradle シリーズ之初識 Gradle
- Gradle 之 Groovy 基础
- Gradle 系列之构建脚本基础
- Gradle 系列之 Gradle 任务
- Gradle 系列之 Gradle 插件
- Gradle 系列之 Java Gradle 插件
Gradle を学ぶ目的は、Android 開発で Gradle をより良く活用するためです。この文章の主な内容は Android Gradle プラグインに関する知識で、主な内容は以下の通りです:
- Android Gradle プラグインの理解
- Android Gradle プラグインの分類
- Android Gradle プラグインの使用
- Android Gradle プロジェクトのディレクトリ
- Android Gradle の基本設定
- Android Gradle タスク
Android Gradle プラグインの理解#
その名の通り、Android Gradle プラグインは Android プロジェクトを構築するための Gradle プラグインです。このプラグインは Google の Android 開発チームによって開発されており、Android 開発 IDE である Android Studio は Gradle を使用してプロジェクトを構築しています。以下は Android Gradle プラグインの利点です:
- コードとリソースの再利用が容易;
- アプリの派生バージョンを簡単に作成できる(マルチチャネルパッケージなど);
- 設定が簡単。拡張可能で、ビルドプロセスをカスタマイズできる;
- Android Studio と Gradle が深く統合されている。
Android Gradle プラグインの分類#
Android プラグインの分類は、Android プロジェクトの属性に基づいています。Android プロジェクトは 3 つのカテゴリに分かれています。具体的には以下の通りです:
- アプリケーションプロジェクト:実行可能な apk を生成できる;
- ライブラリプロジェクト:他のアプリケーションプロジェクトで使用するための aar を生成できる。使用方法は jar と同様で、関連する Android リソースファイルが含まれています;
- テストプロジェクト:アプリケーションプロセスやライブラリプロジェクトのテストに使用されます。
それぞれに 3 種類の異なる Android Gradle プラグインがあり、3 つのプラグインはアプリプラグイン、ライブラリプラグイン、テストプラグインです。プラグイン ID は以下の通りです:
//アプリプラグインID
com.android.application
//ライブラリプラグインID
com.android.library
//テストプラグイン
com.android.test
最も使用されるのはアプリプラグインとライブラリプラグインで、これらのプラグインを使用することで Android Studio で Android プロジェクトを構築できます。
Android Gradle プラグインの使用#
Gradle プラグインを使用する際は、プラグインの ID を一意の識別子として使用します。サードパーティのプラグインの場合、buildscript {} 内でその classpath を指定する必要があります。Android Gradle プラグインはサードパーティのプラグインに該当し、使用する際にはその classpath を指定する必要があります。Android Gradle プラグインは jcenter にホスティングされているため、使用する際には対応するリポジトリを指定する必要があります。具体的には以下のようになります:
buildscript {
//プラグインリポジトリの設定
repositories {
google()
jcenter()
}
//依存関係の設定
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
}
}
サードパーティプラグインのリポジトリと依存関係を設定したら、apply を使用してそのプラグインを使用します。具体的には以下のようになります:
//アプリプラグインの使用
apply plugin: 'com.android.application'
android {
//依存するAndroid SDKのバージョン
compileSdkVersion 26
//ビルドツールのバージョン
buildToolsVersion '26.0.2'
//...
}
dependencies {
//...
}
Android 開発では、一般的にプラグインのリポジトリと依存関係をルートプロジェクトの build.gradle ファイルに設定し、その子モジュールプロジェクトでは設定する必要がなく、直接使用できます。ここではアプリプラグインの使用についてのみ説明していますが、もちろんライブラリプラグインやテストプラグインの使用も同様で、使用する際には対応するプラグイン ID を指定するだけです。
Android Gradle プロジェクトのディレクトリ#
以下は Android Studio が作成する Android プロジェクトのモジュールのディレクトリで、これが Android プロジェクトの基本的なディレクトリ構造です。参考として以下のようになります:
app
├─libs
├─proguard-rules.pro
├─build.gradle
└─src
├─androidTest
│ └─java
│
├─main
│ ├─AndroidManifest.xml
│ ├─java
│ └─res
│
└─test
└─java
上記のディレクトリ内の src の下にある main、androidTest、test は 3 つの SourceSet で、main はアプリのソースコードおよびリソースディレクトリを示し、android と test は Android 関連のテストコードディレクトリを示しています。さらに、proguard-rules.pro は現在のプロジェクトの混乱ファイルで、libs は jar、aar などのライブラリファイルを格納するために使用され、build.gradle ファイルは現在の設定ファイルです。
Android Gradle の基本設定#
Android Gradle プラグインの基本設定を紹介するために、Android Studio を使用して Android プロジェクトを作成します。以下は app の設定ファイルの具体例です:
//Android Gradleプラグインの使用
apply plugin: 'com.android.application'
//android{}はAndroidプロジェクト設定のエントリポイント
android {
/**
* コンパイル依存のAndroid SDKのバージョンを指定します。同
* compileSdkVersion android-26
* android.compileSdkVersion = 26
* android.compileSdkVersion = 'android-26'
*/
compileSdkVersion 26
//ビルドツールのバージョンを指定します。属性値buildToolsVersionを使用してそのバージョンを設定することもできます
buildToolsVersion '26.0.2'
/**
* デフォルト設定、defaultConfigはProductFlavorの一つで、異なるニーズに応じて異なるApkを生成できます
* ProductFlavorをカスタマイズして個別に設定しない場合、このproductFlavorはデフォルト設定を使用してApkを生成します
* これらの具体的な設定、applicationIDなどはProductFlavorの属性です
*/
defaultConfig {
//ユニークなパッケージ名を設定
applicationId "com.manu.androidgradleplugin"
//最低サポートするAndroidシステムバージョン
minSdkVersion 19
//アプリのターゲットAndroidシステムバージョンを設定
targetSdkVersion 26
//アプリのアップグレードを制御するためのバージョン番号
versionCode 1
//ユーザーが見るバージョン名
versionName "1.0"
//テスト時に使用
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
/**
* buildTypesはNamedDomainObjectContainerタイプで、ドメインオブジェクトの一種で、SourceSet(ソースセット)に似ています
* buildTypesでは構築するタイプをカスタマイズでき、Gradleは自動的に対応するBuildTypeを作成します。デフォルトのrelease、debugなど
*/
buildTypes {
release {
//ビルドタイプの混乱を有効にするかどうかを設定
minifyEnabled false
//混乱を有効にした場合は、対応する混乱ファイルを使用
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
}
}
//依存関係の設定
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation files('libs/plugin.jar')
}
上記の設定ファイルには、Android Gradle プラグインが必要とする設定箇所がいくつか示されています。これは Android Gradle プラグインおよびプロジェクト設定ファイル build.gradle の理解と学習の一環と見なすことができます。Android Gradle プラグインの基本設定についてはここまでとし、今後も徐々に補足していきます。
Android Gradle タスク#
Android Gradle プラグインは Android Gradle プラグインに基づいており、Android Gradle プラグインには Java Gradle プラグインのいくつかのタスク(assemble、check、build など)が含まれています。さらに、Android Gradle プラグインは connectedCheck、deviceCheck、lint、install、unInstall などの Android 開発特有の新しいタスクも追加しています。Android Studio で Android 開発におけるいくつかのタスクを確認することができ、Android Studio の右側のタブ Gradle を選択すると確認できます。参考として以下のようになります:
この記事は Gradle を学ぶ観点から Android Gradle プラグインに関する知識を初めて理解したものです。今後の記事では引き続き Android Gradle の学習を続けます。