プロジェクトの概要

Android Studio のプロジェクトには、ソースコードやアセットから、テストコード、ビルド設定にいたるまで、アプリのワークスペースを定義するものがすべて含まれています。新しいプロジェクトを開始すると、Android Studio はすべてのファイルの必要な構造を作成し、IDE の左側にある [Project] ウィンドウに表示します([View] > [Tool Windows] > [Project] をクリック)。このページでは、プロジェクト内の主なコンポーネントの概要を説明します。

モジュール

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

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

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

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

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

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

  • Phone & Tablet Module
  • Wear OS Module
  • Android TV Module
  • Glass Module

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

モジュールの追加の詳細については、新しいデバイス用のモジュールの追加をご覧ください。

ダイナミック機能モジュール
Google Play の Dynamic Delivery を利用可能なアプリのモジュール化された機能を表します。たとえば、ダイナミック機能モジュールを使用すると、アプリの特定の機能をオンデマンドで、あるいは Google Play Instant でお試し版としてユーザーに提供することができます。

詳細については、Dynamic Delivery に対するサポートの追加をご覧ください。

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

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

  • Android ライブラリ: この種類のライブラリには、ソースコード、リソース、マニフェスト ファイルなど、Android プロジェクトでサポートされるすべてのファイル形式を含めることができます。ビルドの結果、Android アプリ モジュールの依存関係として追加できる Android Archive(AAR)ファイルが作成されます。
  • Java ライブラリ: この種類のライブラリには、Java ソースファイルのみを含めることができます。ビルドの結果、Android アプリ モジュールやその他の Java プロジェクトの依存関係として追加できる Java アーカイブ(JAR)ファイルが作成されます。
Google Cloud モジュール
Google Cloud バックエンド コードのコンテナとして機能します。このモジュールには、単純な HTTP、Cloud Endpoints、Cloud Messaging を使用してアプリに接続する Java App Engine のバックエンドに必要なコードと依存関係が含まれています。独自のバックエンドを開発して、アプリに必要なクラウド サービスを提供することができます。

Android Studio を使用して Google Cloud モジュールを開発すると、アプリコードやバックエンド コードを同じプロジェクトで管理できます。また、バックエンド コードをローカルで実行およびテストしたり、Android Studio を使用して Google Cloud モジュールをデプロイしたりできます。

Google Cloud モジュールの実行およびデプロイの詳細については、バックエンドの実行、テスト、デプロイをご覧ください。

モジュールをサブプロジェクトとして参照しているケースもありますが、Gradle はプロジェクトとしてもモジュールを参照するため問題ありません。たとえば、ライブラリ モジュールを作成し、それを Android アプリ モジュールの依存関係として追加したい場合は、次のように宣言する必要があります。

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

プロジェクト ファイル

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

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

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

manifests
AndroidManifest.xml ファイルがあります。
java
パッケージ名ごとに分けられた Java ソースコード ファイルがあります。ここには JUnit テストコードも含まれています。
res
XML レイアウト、UI 文字列、ビットマップ イメージなど、コード以外のすべてのリソースがあり、対応するサブディレクトリに分けられています。すべてのリソースタイプの詳細については、リソースの提供をご覧ください。

Android プロジェクト ビュー

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

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

module-name/
build/
ビルドの出力結果があります。
libs/
プライベート ライブラリがあります。
src/
以下のサブディレクトリに、モジュールのすべてのコードとリソース ファイルがあります。
androidTest/
Android デバイスで実行するインストゥルメンテーション テストのコードがあります。詳細については、Android のテストに関するドキュメントをご覧ください。
main/
"main" ソースセット ファイル、つまりすべてのビルド バリアントで共有される Android コードとリソースがあります(デバッグ ビルドタイプの src/debug/ など、兄弟ディレクトリに存在するその他のビルド バリアントのファイル)。
AndroidManifest.xml
アプリとその各コンポーネントの性質を記述します。詳細については、AndroidManifest.xml のドキュメントをご覧ください。
java/
Java コードソースがあります。
jni/
JNI(Java Native Interface)を使用するネイティブ コードがあります。詳細については、Android NDK に関するドキュメントをご覧ください。
gen/
R.java ファイルや、AIDL ファイルから作成されたインターフェースなど、Android Studio で生成される Java ファイルがあります。
res/
ドローアブル ファイル、レイアウト ファイル、UI 文字列など、アプリケーションのリソースがあります。詳細については、アプリケーションのリソースをご覧ください。
assets/
そのままの状態で .apk ファイルにコンパイルする必要があるファイルがあります。このディレクトリは、URI を使用して通常のファイル システムと同じようにナビゲートできます。また、AssetManager を使用してバイト ストリームとしてファイルを読み取ることができます。たとえば、この場所はテキスチャやゲームデータなどの保存に適しています。
test/
ホスト JVM で実行するローカルテストのコードがあります。
build.gradle(モジュール)
モジュール固有のビルド設定を定義します。
build.gradle(プロジェクト)
すべてのモジュールに適用するビルド設定を定義します。このファイルはプロジェクトに不可欠であるため、その他すべてのソースコードとともにリビジョン コントロールで管理する必要があります。

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

プロジェクト構造の設定

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

  • SDK Location: プロジェクトで使用する JDK、Android SDK、Android NDK の場所を設定します。
  • Project: Gradle のバージョンおよび Gradle 用の Android プラグイン、レポジトリの場所の名前を設定します。
  • Developer Services: Google や他のサードパーティが提供する Android Studio のアドイン コンポーネントの設定があります。以下のデベロッパー サービスをご覧ください。
  • Modules: ターゲット SDK や最小 SDK、アプリの署名、ライブラリの依存関係など、モジュール固有のビルド設定を編集できます。以下のモジュールをご覧ください。

デベロッパー サービス

[Project Structure] ダイアログ ボックスの [Developer Services] セクションには、アプリで使用できる各サービスの設定ページがあります。たとえば以下のページがあります。

  • Google AdMob: Google の Google AdMob コンポーネントを有効にして、ユーザーについて把握し、カスタマイズした広告を表示できるようになります。
  • Analytics: Google アナリティクスを有効にして、さまざまなデバイスや環境でユーザーによるアプリの操作を測定できます。
  • Authentication: ユーザーが Google ログインを使用して、Google アカウントでアプリにログインできるようにします。
  • Cloud: Firebase クラウドベース サービスをアプリで有効にします。
  • Notifications: Google Cloud Messaging を使用してアプリとサーバー間で通信できるようにします。

これらのサービスを有効にすると、Android Studio は必要な依存関係とパーミッションをアプリに追加します。各設定ページには、関連サービスを有効にした場合に Android Studio が実行するさまざまなアクションが表示されます。

モジュール

[Modules] 設定セクションでは、各プロジェクトのモジュールの設定オプションを変更できます。各モジュールの設定ページは、以下のタブに分かれています。

  • Properties: モジュールのコンパイルに使用する SDK のバージョンとビルドツールを指定します。
  • Signing: APK の署名に使用する証明書を指定します。
  • Flavors: 複数のビルド フレーバーを作成し、フレーバーごとにモジュールの最小およびターゲット SDK バージョン、バージョン コードやバージョン名など、一連の設定を指定できます。たとえば、最小 SDK が 15、ターゲット SDK が 21 のフレーバーを定義し、さらに、最小 SDK が 19、ターゲット SDK が 23 の別のフレーバーを定義することができます。
  • Build Types: Gradle ビルドの設定に記載されているとおり、ビルドの設定を作成および変更できます。デフォルトでは、すべてのモジュールに debugrelease の各ビルドタイプがありますが、必要に応じてさらに別のビルドタイプを定義することもできます。
  • Dependencies: このモジュールのライブラリ、ファイル、モジュールの依存関係を示します。このペインで依存関係を追加、変更、削除できます。モジュールの依存関係の詳細については、Gradle ビルドの設定をご覧ください。