前の数記事で 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 つのカテゴリに分けられ、具体的には以下の通りです:
- App アプリケーションプロジェクト:実行可能な apk を生成できる;
- Library ライブラリプロジェクト:他の App アプリケーションプロジェクトで使用するための aar を生成でき、使用方法は jar と同様で、関連する Android リソースファイルが含まれています;
- Test テストプロジェクト:App アプリケーションプロセスまたは Library プロジェクトのテストに使用されます。
それに応じて、3 種類の異なる Android Gradle プラグインがあり、3 つのプラグインはそれぞれ App プラグイン、Library プラグイン、Test プラグインで、そのプラグイン ID は以下の通りです:
//AppプラグインID
com.android.application
//LibraryプラグインID
com.android.library
//Testプラグイン
com.android.test
最も使用されるのは App プラグインと Library プラグインで、これらのプラグインを使用することで 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 を使用してそのプラグインを使用します。具体的には以下の通りです:
//Appプラグインの使用
apply plugin: 'com.android.application'
android {
//依存するAndroid SDKのバージョン
compileSdkVersion 26
//ビルドツールのバージョン
buildToolsVersion '26.0.2'
//...
}
dependencies {
//...
}
Android 開発では、一般的にプラグインのリポジトリと依存関係をルートプロジェクトの build.gradle ファイルに設定し、その子モジュールプロジェクトでは設定する必要はなく、直接使用できます。ここでは App プラグインの使用についてのみ説明していますが、もちろん Library プラグインや Test プラグインの使用も同様で、使用時には対応するプラグイン 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 は App のソースコードおよびリソースディレクトリを示し、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 の学習を続けていきます。