Android のビルド構造

Android プロジェクトには、ビルド関連の多くのファイルとディレクトリ構造が含まれており、 整理する方法を紹介します。このコースの 続いて、全体的な構造と基本ロールと 理解できます

次の表に、Android プロジェクトの一般的なファイルを示します。それぞれの説明は、 どのような種類のコンテンツがあるかをメモします。最高 プラクティスは時間の経過とともに変化するため、これらの説明はプロジェクトとは インターネットから継承またはダウンロードしたリソースです。

ビルドファイルを書き込むときは、宣言型のアプローチを使用します。ビルドロジックとタスク プラグインでのみ指定する必要がある。ビルドロジックをプラグインに制限することで、 ビルドファイルはデータ宣言になり、より直接的に理解できる 使用できます。今後のバージョンでは、次のような代替仕様が追加される可能性があります。 宣言型 Gradle: できます。

フォルダ/ファイル

使用

.gradle/

Gradle プロジェクトのキャッシュ ディレクトリ

Gradle によって管理され、ダウンロードした Gradle ディストリビューション、プロジェクト キャッシュ、構成ファイルが含まれます。

このディレクトリ内のファイルは変更しないでください。

.idea/

Android Studio プロジェクトのメタデータ

このディレクトリ内のファイルは変更しないでください。

build.gradle(.kts)

ルートビルドファイル

サブプロジェクト間で共通のプラグイン クラスパスを設定するプラグイン宣言のみを含める必要があります。

その他のコードは、設定またはネストされたプロジェクト レベルのビルドファイルに配置する必要があります。

gradle.properties

Gradle の実行構成

Gradle プロパティが含まれており、ヒープサイズ、キャッシュ、並列実行など、Gradle ビルド環境の各要素を制御します。

AGP DSL の追加や削除に伴う変更を減らすために、一時的な Android プロパティがここで定義されています。

gradlew(Linux、Mac)

gradlew.bat(Windows)

Gradle ラッパー ファイル

Gradle ディストリビューションをダウンロードしてコマンドを転送することで、ビルドをブートストラップする。これにより、Gradle をプリインストールすることなくビルドを実行できます。

local.properties

ローカルマシンの構成

Android SDK の場所など、ローカルマシンに関連するプロパティが含まれます。

このファイルはソース管理から除外してください。

settings.gradle(.kts)

Gradle ビルドの初期化

Gradle の初期化とプロジェクト設定などに関するグローバル ビルド情報が含まれています。

  • プロジェクト名
  • このビルドに含めるサブプロジェクトのリスト
  • プラグインと依存関係を見つけるためのリポジトリ仕様
  • バージョン カタログの外部インポート。

Gradle/

📲? libs.versions.toml

バージョン カタログ

ビルド内で使用される依存関係とプラグインの変数を定義します。使用するバージョンをここで指定することで、プロジェクト内のすべてのサブプロジェクト間の一貫性を確保します。

🚫? ラッパー/

📈? gradle‐wrapper.jar

Gradle ブートストラップ 実行可能ファイル

指定された Gradle ディストリビューションをダウンロードし(存在しない場合)、引数を渡して実行します

📲? gradle‐wrapper.properties

Gradle ラッパー構成

Gradle ディストリビューションをダウンロードする場所(使用するバージョンを含む)を指定します。

app/

サブプロジェクト ディレクトリ

サブプロジェクト(Android Studio では「モジュール」)は、アプリやライブラリをビルドでき、他のサブプロジェクトや外部依存関係に依存する場合があります。

app は、最上位のアプリケーション サブプロジェクトの標準の名前です(必須ではありません)。同じような構造で名前が異なるサブプロジェクトもあります。

任意のディレクトリをサブプロジェクトにできます。少なくとも build.gradle(.kts) ファイルを含める必要があり、settings.gradle(.kts) を使用してビルドに含める必要があります。

📈? build.gradle(.kts)

サブプロジェクト レベルのビルドファイル

このサブプロジェクトのビルド方法を宣言します。各サブプロジェクトには個別のビルドファイルが必要で、

  • このサブプロジェクトのビルドに使用されたプラグイン
  • 構成ブロック
  • 依存関係(ライブラリとプラットフォーム)が含まれます。

ビルドファイルには、ビルドロジック(Kotlin 関数定義や条件など)やタスク宣言を含めないでください。ビルドロジックとタスクはプラグイン内にのみ含める必要があります。

🙁? src/

サブプロジェクトのソースファイル

ソースファイル(アプリケーション コードとリソース)をソースセットにグループ化します。main ソースセットにはすべてのバリアントに共通のソースファイルが含まれますが、他のソースセットにはバリアントに固有のソースファイルが含まれます。

📈? メイン/

メインの ソースセット

すべてのビルド バリアントに共通するソースコードとリソース。このソースはすべてのビルドのベースとして機能し、その他のより具体的なソースセットはこのソースに追加またはオーバーライドされます。

📲? Java/

📲? kotlin/

Kotlin と Java のソースコード

java ディレクトリには、Java と Kotlin のソースコードが混在していてもかまいません。このサブプロジェクトに Kotlin コードのみが含まれている場合は、このディレクトリの名前を変更できます。kotlin.

Android
Kotlin ファースト プラットフォームです。Java ソースはサポートされていますが、新しい API は Kotlin 言語を対象としています。すべての新しいコードと既存のコードのメジャー アップデートには、Kotlin を使用することをおすすめします。

📲? res/

Android リソース ファイル

XML ファイルや画像などのアプリケーション リソースが格納されています。すべてのアプリはランチャー アイコンなどの基本的なリソースを使用しますが、レイアウトやメニューなどのこれらのリソースの多くは、ビューベースのアプリでのみ使用されます。Compose アプリは、このディレクトリで定義された String リソースを使用します。

🚫? AndroidManifest.xml

Android アプリのメタデータ

Android パッケージ マネージャーによって読み取られて、システムに通知します。

  • コンポーネントを定義できます。
  • 必要な権限
  • デバイスの互換性
  • Android プラットフォームの制限

📲? androidTest/

デバイステスト ソースセット

Android 搭載デバイスまたはエミュレータで実行するテスト用のソースが含まれています。これらのテストは実際の Android 環境にアクセスしますが、ホストテストよりも実行速度が遅くなります。

main ソースセット内のすべてのソースファイルは、androidTest のソースで使用できます

📈? テスト/

ホストテスト ソースセット

デバイスで実行されるテストではなく、JVM 内でローカルに実行されるテストのソースが含まれています。これらのテストは、デバイステストよりもはるかに高速に実行できます。ただし、すべてのシステムコール(アプリケーションを実行するライフサイクルを含む)は、モック、フェイク、スタブ、またはその他のシミュレーションを行う必要があります。

main ソースセット内のすべてのソースファイルがテスト対象のソースで使用できる

📈? proguard-rules.pro

R8 構成ルール

アプリケーションの圧縮、最適化、難読化を制御するルールを定義します。R8 は、不要なコードとリソースを削除し、ランタイム パフォーマンスを最適化して、識別子の名前を変更することでコードをさらに最小化します。