プロジェクトの概要

Android Studio のプロジェクトには、ソースコードやアセットから、テストコード、ビルド構成にいたるまで、アプリのワークスペースを定義するものがすべて含まれています。

新しいプロジェクトを開始すると、Android Studio はすべてのファイルの必要な構造を作成し、[Project] ウィンドウに表示します。このウィンドウを開くには、[View] > [Tool Windows] > [Project] を選択します。

このページでは、プロジェクト内の主なコンポーネントの概要を説明します。

モジュール

モジュールとは、ソースファイルとビルド設定を集めたもので、機能ごとにプロジェクトを分割できます。プロジェクトには 1 つまたは多数のモジュールを含めることができ、モジュールは別のモジュールを依存関係として使用できます。各モジュールは個別にビルド、テスト、デバッグできます。

追加のモジュールは、次のようなケースに役立ちます。たとえば、独自のプロジェクト内でコード ライブラリを作成する場合や、スマートフォンやウェアラブルといったデバイスの種類別にコードやリソースのセットを作成し、すべてのファイルのスコープを同じプロジェクト内に維持したまま、一部のコードだけを共有する場合などです。

新しいモジュールをプロジェクトに追加するには、[File] > [New] > [New Module] をクリックします。

Android Studio では、以下のようなモジュールを提供しています。

Android アプリ モジュール
アプリのソースコード、リソース ファイル、アプリレベルの設定(モジュール レベルのビルドファイルや Android マニフェスト ファイルなど)を格納するコンテナとして機能します。新しいプロジェクト作成時に設定される、デフォルトのアプリ モジュール名は「app」です。

Android Studio には、以下のタイプのアプリ モジュールがあります。

  • スマートフォンとタブレット
  • Automotive
  • Wear OS
  • テレビ
  • ベースライン プロファイル ジェネレータ
  • Benchmark

各モジュールには、対応するアプリやデバイスタイプに応じて必要となるファイルとコード テンプレートが含まれています。

モジュールの追加方法については、新しいデバイス向けにモジュールを追加するをご覧ください。

機能モジュール
アプリのモジュール化された機能で、Play Feature Delivery を活用できます。たとえば、機能モジュールを使用すると、アプリの特定の機能をオンデマンドで、あるいは Google Play Instant による Instant エクスペリエンスとしてユーザーに提供できます。

Android Studio には、以下のタイプの機能モジュールがあります。

  • Dynamic Feature モジュール
  • Instant Dynamic Feature Library モジュール

詳細については、Play Feature Delivery をご覧ください。

ライブラリ モジュール
他のアプリ モジュールで依存関係として使用したり、他のプロジェクトにインポートしたりできる再利用可能なコードのコンテナとして機能します。構造上、ライブラリ モジュールはアプリ モジュールと同じですが、ビルドすると APK ではなくコード アーカイブ ファイルが作成され、デバイスにインストールすることはできません。

[Create New Module] ウィンドウには、以下のタイプのライブラリ モジュールが表示されます。

  • Android ライブラリ: Java と Kotlin のソースコード、リソース、マニフェスト ファイルなど、ネイティブ C++ コード以外の Android プロジェクトでサポートされているすべてのファイル形式が格納されています。ビルドの結果、Android アプリ モジュールの依存関係として追加できる Android Archive(AAR)ファイルが作成されます。
  • Android ネイティブ ライブラリ: Android ライブラリと同様に、Android プロジェクトでサポートされているすべてのファイル形式が格納されています。また、Android ネイティブ ライブラリにはネイティブ C++ ソースコードも含めることができます。ビルドの結果、Android アプリ モジュールの依存関係として追加できる Android Archive(AAR)ファイルが作成されます。
  • Java または Kotlin ライブラリ: Kotlin または Java のソースファイルのみが格納されています。ビルドの結果、Android アプリ モジュールやその他の Kotlin プロジェクトや Java プロジェクトの依存関係として追加できる Java アーカイブ(JAR)ファイルが作成されます。

モジュールは「サブプロジェクト」と呼ばれることもあります。これは、Gradle でもモジュールがプロジェクトと呼ばれるためです。

ライブラリ モジュールを作成し、それを Android アプリ モジュールの依存関係として追加する場合は、次のように宣言する必要があります。

Groovy

dependencies {
    implementation project(':my-library-module')
}

Kotlin

dependencies {
    implementation(project(":my-library-module"))
}

プロジェクト ファイル

デフォルトで、Android Studio の [Android] ビューにはプロジェクト ファイルが表示されます。このビューではディスク上の実際のファイル階層は反映されません。代わりに、プロジェクトの主なソースファイルに効率良くアクセスできるように、モジュールとファイルがタイプ別に整理され、あまり使用されない特定のファイルやディレクトリは非表示になっています。

[Android] ビューとディスク上の構造にはいくつかの違いがあります。[Android] ビューの場合:

  • 最上位の [Gradle Script] グループには、プロジェクトのビルド関連の設定ファイルがすべて表示されます。
  • モジュール レベルのグループには、各モジュールのすべてのマニフェスト ファイルが表示されます(プロダクト フレーバーやビルドタイプごとに異なるマニフェスト ファイルが存在する場合)。
  • リソース修飾子ごとのフォルダではなく、1 つのグループ内にすべての代替リソース ファイルが表示されます。たとえば、ランチャー アイコンはあらゆる画面密度のものが並んで表示されます。

各 Android アプリ モジュールのファイルは、以下のグループに分かれて表示されます。

manifests
AndroidManifest.xml ファイルがあります。
java
パッケージ名ごとに分けられた Kotlin および Java ソースコード ファイルがあります。ここには JUnit テストコードも含まれています。
res
UI 文字列やビットマップ画像など、コード以外のすべてのリソースが格納されています。それぞれ対応するサブディレクトリに分けられています。使用可能なリソースタイプの詳細については、アプリリソースの概要をご覧ください。

プロジェクト ビュー

Android ビューで非表示になっているすべてのファイルを含め、プロジェクトの実際のファイル構造を表示するには、[Project] ウィンドウの一番上にあるメニューで [Project] を選択します。

[Project] ビューを選択すると、以下のようなさらに多くのファイルとディレクトリが表示されます。

module-name/
build/
ビルドの出力結果が格納されています。
libs/
プライベート ライブラリが格納されています。
src/
モジュールのすべてのコードとリソース ファイルが、以下のサブディレクトリに分割されて格納されています。
androidTest/
Android デバイスで実行するインストルメンテーション テストのコードが格納されています。 詳しくは、Android Studio でテストするをご覧ください。
cpp/
JNI(Java Native Interface)を使用するネイティブ C または C++ コードが格納されています。詳細については、Android NDK に関するドキュメントをご覧ください。
main/
「main」ソースセット ファイル、つまりすべてのビルド バリアントで共有される Android コードとリソース(デバッグ ビルドタイプの src/debug/ など、兄弟ディレクトリにある他のビルド バリアントのファイル)が格納されています。
AndroidManifest.xml
アプリとその各コンポーネントの性質を記述します。 詳細については、アプリ マニフェストの概要をご覧ください。
java/
Kotlin と Java のソースコードが格納されます。アプリに Kotlin と Java の両方のソースコードがある場合は両方が格納されます。
kotlin/
Kotlin コードソースのみが格納されています。
res/
ドローアブル ファイルや UI 文字列ファイルなどのアプリリソースが格納されています。詳細については、アプリリソースの概要をご覧ください。
assets/
APK ファイルにそのままコンパイルするファイルが格納されています。たとえば、テクスチャやゲームデータの格納に適しています。このディレクトリは、URI を使用して通常のファイル システムと同じようにナビゲートできます。また、AssetManager を使用してバイト ストリームとしてファイルを読み取ることができます。
test/
ホスト JVM で実行するローカルテストのコードが格納されています。
build.gradle または build.gradle.kts(モジュール)
モジュール固有のビルド構成を定義します。ビルド スクリプト言語として Groovy を使用している場合は build.gradle が正しいファイル名になり、Kotlin スクリプトを使用している場合は build.gradle.kts になります。
build.gradle または build.gradle.kts(プロジェクト)
すべてのモジュールに適用するビルド構成を定義します。 ビルド スクリプト言語として Groovy を使用している場合は build.gradle が正しいファイル名になり、Kotlin スクリプトを使用している場合は build.gradle.kts になります。このファイルはプロジェクトに不可欠であるため、他のすべてのソースコードとともに、リビジョン管理システムで管理します。

他のビルドファイルについては、ビルドを設定するをご覧ください。

プロジェクト構造の設定

Android Studio プロジェクトの各種設定を変更するには、[File] > [Project Structure] をクリックして、[Project Structure] ダイアログを開きます。このダイアログには次のセクションがあります。

  • Project: Gradle および Android Gradle プラグインのバージョン、リポジトリの場所の名前を設定します。
  • SDK Location: プロジェクトで使用する JDK、Android SDK、Android NDK の場所を設定します。
  • Variables: ビルド スクリプト内で使用される変数を編集できます。
  • Modules: ターゲット SDK や最小 SDK、アプリの署名、ライブラリの依存関係など、モジュール固有のビルド構成を編集できます。各モジュールの設定ページは、以下のタブに分かれています。
    • Properties: モジュールのコンパイルに使用する SDK やビルドツールのバージョンを指定します。
    • Signing: アプリの署名に使用する証明書を指定します。
  • Dependencies: このモジュールのライブラリ、ファイル、モジュールの依存関係のリストを示します。このペインで依存関係を追加、変更、削除できます。モジュールの依存関係について詳しくは、ビルド バリアントの設定をご覧ください。

  • Build Variants: プロジェクトに合わせてさまざまなフレーバーとビルドタイプを設定できます。

    • Flavors: 複数のビルド フレーバーを作成し、フレーバーごとにモジュールの最小 SDK バージョンやターゲット SDK バージョン、バージョン コードやバージョン名など、ビルド構成の各種設定を指定できます。

      たとえば、最小 SDK バージョンが 21、ターゲット SDK バージョンが 29 のフレーバーを定義しつつ、最小 SDK バージョンが 24、ターゲット SDK バージョンが 33 の別のフレーバーを定義することができます。

    • Build Types: ビルド構成の作成や編集を行うことができます。詳細については、ビルド バリアントを設定するをご覧ください。すべてのモジュールに対してデフォルトで debug ビルドタイプと release ビルドタイプが用意されていますが、必要に応じてさらに別のビルドタイプを定義することもできます。