Androidアプリ開発の基本概念まとめ
Androidアプリ開発で使用する基本概念
- build.gradle
- compileSdk
- targetSdk
- AndroidManifest.xml
- themes.xml
- string.xml
- Activity
- Fragment
- Activityライフサイクル
- Fragmentライフサイクル
build.gradle
build.gradleは、Androidアプリで使用されるビルド設定ファイルで、プロジェクトをどのように構築・依存管理するかを定義します。
記載例
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
}
android {
namespace 'com.example.myapp'
compileSdk 34
defaultConfig {
applicationId "com.example.myapp"
minSdk 21
targetSdk 34
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation 'androidx.core:core-ktx:1.13.1'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.11.0'
}
セクション解説
| セクション | 説明 |
|---|---|
| plugins | 使用するプラグイン(例:KotlinやAndroidアプリ)を指定 |
| android | Android特有の設定を記述 |
| defaultConfig | アプリの基本情報(アプリID、SDKの最低バージョン、バージョンコード等)を記述 |
| buildTypes | リリース/デバッグなどのビルドモードに応じた設定を記述 |
| dependencies | 使用するライブラリを記述 |
Androidプロジェクトには、プロジェクト全体とモジュール(アプリケーション、ライブラリ)ごとにbuild.gradleファイルがあります。
プロジェクトレベル build.gradle
プロジェクト全体に関する設定や共通プラグインを管理します。ルートディレクトリに配置されています。
モジュールレベル build.gradle
各アプリ/ライブラリモジュールのビルド設定を管理します。各モジュールディレクトリに配置されています。(例:app/build.gradle)
compileSdk
compileSDKはAndroidアプリをコンパイルする際に使用される、AndroidSDKバージョンを指定する項目です。アプリが最新のAPIに対応できるよう、できるだけ最新のバージョンを指定します。
記載例
android {
compileSdk 34
}
この例では、APIレベル34(Android14)のSDKを使用して、アプリがビルドされることを示しています。
targetSdk
targetSDKは、Androidアプリが実行される際に使用される、AndroidSDKバージョンを指定する項目です。
記述例
android {
targetSdk 34
}
この例では、アプリがAPIレベル34(Android14)のSDKに最適化されて実行されることを示しています。
compileSDKとの違い
compileSDKは、Androidアプリをビルドする際のAndroidSDKバージョンを指定するのに対し、targetSDKは、Androidアプリを実行する際に最適なAndroidSDKバージョンを指定します。
| 用語 | 説明 |
|---|---|
| compileSDK | ビルド対象のAndroidSDKバージョン |
| targetSDK | アプリ実行に最適なAndroidSDKバージョン |
Google Playの要件
Googleプレイにアプリを公開する場合、最新のSDKバージョンをtargetSDKに指定しなければいけません。古いAPIで公開し続けることは不可能となっています。
例えば、2024年8月31日以降に公開する新規アプリまたはアップデートは、Android 14(API レベル 34)を対象にする必要があります。

https://support.google.com/googleplay/android-developer/answer/11926878?hl=ja
AndroidManifest.xml
AndroidManifest.xmlはAndroidアプリを構成するのに必須となる設定ファイルです。アプリの構成や、パーミッション(権限)、アクティビティ、サービス[1]、レシーバ[2]などを定義します。
記載例
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp">
<!-- アプリで使用する権限(例: インターネット) -->
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.MyApp">
<!-- 起動時に表示する Activity(ランチャー) -->
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- 他の Activity の定義例 -->
<activity android:name=".SettingsActivity" />
<!-- サービスの定義例 -->
<service android:name=".MyBackgroundService" />
<!-- ブロードキャストレシーバの定義例 -->
<receiver android:name=".BootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
</application>
</manifest>
themes.xml
themes.xmlは、Androidアプリのデザイン(見た目)を統一・管理するための設定ファイルです。ボタンや文字、背景色などの見た目のルールを定義し、全体のUIに統一性を持たせる役割を持っています。
記載例
<resources xmlns:tools="http://schemas.android.com/tools">
<style name="Theme.MyApp" parent="Theme.Material3.DayNight.NoActionBar">
<!-- アプリ全体の背景色 -->
<item name="android:windowBackground">@color/background</item>
<!-- ボタンの色 -->
<item name="colorPrimary">@color/blue_500</item>
<item name="colorSecondary">@color/green_500</item>
<!-- アクションバーを非表示 -->
<item name="windowActionBar">false</item>
</style>
</resources>
string.xml
string.xmlは、Androidで利用される文字列リソースを管理するファイルです。これを利用することで、ソース内でのハードコーディングを避けることができます。
記載例
<resources>
<string name="app_name">My Application</string>
<string name="hello_world">Hello, world!</string>
<string name="button_submit">Submit</string>
</resources>
Activity
Activityとは「Androidの画面単位」のプログラムソースです。画面があるAndroidアプリの場合、最低一つでもActivityが存在しないといけません。
Activityは、ユーザが入力したデータを処理したり、別のActivityへの画面遷移やFragmentの切り替えなどを行います。また、ActivityははFragmentより多くのリソースを使用します。(ActivityのライフサイクルはFragmentより複雑なため)
Fragment
FragmentはActivityとは異なり、それだけで画面を構成することはできず、Activityの上に設定することで、画面を表示することができます。
Fragmentは親子関係を持つこともでき、同一のFragmentを親、別々のFragmentを子として設定することもできます。
Activityよりリソース消費量は少ないです。
Activityライフサイクル
AndroidのActivityのライフサイクルは、Activityが作成、表示、終了されるまでの一連の過程を示すものである。
Activityの状態によって、onCreate(),onResume(),onPause()などのメソッドがコールされ、アプリケーション動作やリソース管理を効率的に行います。

https://developer.android.com/guide/components/activities/activity-lifecycle?hl=ja
| メソッド | 説明 |
|---|---|
| onCreate() | 初回に一度だけ呼ばれる。UIの初期化などをここで行う |
| onStart() | Activityが画面に表示される直前に呼ばれる |
| onResume() | Activityがフォアグラウンドになり、ユーザー操作が可能になる |
| onPause() | 他のActivityがフォアグラウンドに来たときなどに呼ばれる。UIは見えているが操作不可になる可能性あり |
| onStop() | Activityが完全に見えなくなるときに呼ばれる |
| onDestroy() | Activityが破棄されるときに呼ばれる |
Fragmentのライフサイクル
Fragmentは、Activity上に表示される小さなUIコンポーネントとして機能します。そのため、Fragmentは独自のライフサイクルを持ちますが、それはActivityのライフサイクルに連動しています。
また、独立したコンポーネントでもあるため、複数のActivityから同一のFragmentが呼ばれることもあります。

| メソッド | 説明 |
|---|---|
| onAttach() | FragmentをActivityに紐づけ |
| onCreate() | Fragmentの非UIロジックの初期化 |
| onCreateView() | UIを作成する。LayoutInflater[3]でXMLからViewを作成 |
| onViewCreated() | onCreateViewの直後に呼ばれ、Viewのセットアップをするのに便利 |
| onStart() | Fragmentが見える直前 |
| onResume() | ユーザーと対話できる状態 |
| onPause() | フォーカスを失うなど、一時停止状態 |
| onStop() | フラグメント非表示 |
| onDestroyView() | Viewを破棄 |
| onDestroy() | Fragment自体の破棄 |
| onDetach() | Activityから切り離されるとき |
Discussion