lightbulb_outline Help shape the future of the Google Play Console, Android Studio, and Firebase. Start survey

プロジェクトの概要

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
  • Android Wear Module
  • Android TV Module
  • Glass Module

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

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

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

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

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

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

Google Cloud モジュールの追加については、App Engine Java Servlet モジュールの追加をご覧ください。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] セクションには、アプリで使用できる各サービスの設定ページがあります。このセクションには次のページがあります。

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

これらのサービスを有効にすると、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 ビルドの設定をご覧ください。