No Activity な Android(Kotlin)プロジェクト

2020/8/26

はじめに

Android プロジェクトを作成する際には、自動生成されたファイルをたいして理解せずに使っていたのですが、ちゃんと理解しようと思い、最小構成であろう Project Template No Activity を深掘りします。

調査内容

プロジェクト作成条件

Android Studio で Project Template は No Activity、Language は Kotlin、Minimum SDK は API 23: Android 6.0(Marshmallow) を選択してプロジェクトを作成しました。

プロジェクトファイル構造

.
├── app
│   ├── build.gradle
│   ├── libs
│   ├── proguard-rules.pro
│   └── src
│       ├── androidTest
│       │   └── java
│       │       └── com
│       │           └── example
│       │               └── myapplication
│       │                   └── ExampleInstrumentedTest.kt
│       ├── main
│       │   ├── AndroidManifest.xml
│       │   ├── java
│       │   │   └── com
│       │   │       └── example
│       │   │           └── myapplication
│       │   └── res
│       │       ├── drawable
│       │       │   └── ic_launcher_background.xml
│       │       ├── drawable-v24
│       │       │   └── ic_launcher_foreground.xml
│       │       ├── mipmap-anydpi-v26
│       │       │   ├── ic_launcher.xml
│       │       │   └── ic_launcher_round.xml
│       │       ├── mipmap-hdpi
│       │       │   ├── ic_launcher.png
│       │       │   └── ic_launcher_round.png
│       │       ├── mipmap-mdpi
│       │       │   ├── ic_launcher.png
│       │       │   └── ic_launcher_round.png
│       │       ├── mipmap-xhdpi
│       │       │   ├── ic_launcher.png
│       │       │   └── ic_launcher_round.png
│       │       ├── mipmap-xxhdpi
│       │       │   ├── ic_launcher.png
│       │       │   └── ic_launcher_round.png
│       │       ├── mipmap-xxxhdpi
│       │       │   ├── ic_launcher.png
│       │       │   └── ic_launcher_round.png
│       │       └── values
│       │           ├── colors.xml
│       │           ├── strings.xml
│       │           └── styles.xml
│       └── test
│           └── java
│               └── com
│                   └── example
│                       └── myapplication
│                           └── ExampleUnitTest.kt
├── build.gradle
├── gradle
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradle.properties
├── gradlew
├── gradlew.bat
├── local.properties
└── settings.gradle

各ファイル概要

app/build.gradle

モジュールレベルビルドファイルです。該当モジュールに対するビルド設定を定義します。

app/proguard-rules.pro

ProGuard ルールファイルです。 今回は特に設定がありませんでした。

app/src/androidTest/java/com/example/myapplication/ExampleInstrumentedTest.kt

インストゥルメント化単体テスト例です。

app/src/main/AndroidManifest.xml

マニフェストファイルです。

app/src/main/res/drawable*

今回はアダプティブアイコンで利用するベクター画像が格納されていました。

app/src/main/res/mipmap-*

今回はアイコン素材(アイコン画像とアダプティブアイコン)が格納されていました。

app/src/main/res/values/colors.xml

カラーリソースファイルです。

app/src/main/res/values/strings.xml

文字列リソースファイルです。

app/src/main/res/values/styles.xml

スタイルリソースファイルです。 今回は Theme.AppCompat.Light.DarkActionBar を継承していました。

app/src/test/java/com/example/myapplication/ExampleUnitTest.kt

単体テスト例です。

build.gradle

トップレベルビルドファイルです。Gradle 自身の設定やプロジェクト内のすべてのモジュールに適用されるビルド設定を定義します。

gradle/wrapper/

後述する Gradle ラッパーコマンドラインツール関連ファイルです。

gradle.properties

プロジェクトレベルの設定を指定します。 今回は Gradle デーモン実行引数や、AndroidX 設定、Kotlin のコードスタイル等が設定されていました。

gradlew / gradlew.bat

Gradle ラッパーコマンドラインツールです。Android Studio ではなく、コマンドラインからビルドする際に利用します。

local.properties

ローカル環境プロパティを設定します。直接修正不可で、リポジトリ管理してはいけません。 今回は SDK パスが設定されていました。

settings.gradle

ここに記述した内容によって、アプリをビルドする際に含める必要のあるモジュールを識別します。 今回は app モジュールを含むように設定されていました。