以下の内容はhttps://daisuke20240310.hatenablog.com/entry/android_sampleより取得しました。


Androidアプリの開発環境の構築とHelloWorldアプリを作ってみる

今回は、かなり久しぶりに Androidアプリの開発をやってみます。まずは、開発環境の構築と、簡単なアプリを作ってみたいと思います。

今回の目的は、スマホを使って、NFC のリードライトがやることです。簡単な OSS を持ってきて動かしてみたいのですが、そちらは次回に書こうと思います。

それでは、やっていきます。

参考文献

今回、参考にした書籍です。

Kotlin は詳しく知らないので、文法などは以下の書籍を参考にしています。

はじめに

「Javaでデザインパターンを学ぶ」の記事一覧です。良かったら参考にしてください。

Javaでデザインパターンの記事一覧
・準備編:Java開発環境構築(JDK+Visual Studio Code)
・第1回:Javaでデザインパターンを学ぶ:Singletonパターン
・第2回:Javaでデザインパターンを学ぶ:Template Methodパターン
・第3回:Javaでデザインパターンを学ぶ:Observerパターン
・第4回:Javaでデザインパターンを学ぶ:Iteratorパターン
・第5回:Javaでデザインパターンを学ぶ:Factory Methodパターン
・第6回:Javaでデザインパターンを学ぶ:Stateパターン
・第7回:Javaでデザインパターンを学ぶ:Visitorパターン
・第8回:Javaでデザインパターンを学ぶ:Adapterパターン
・第9回:Javaでデザインパターンを学ぶ:Prototypeパターン
・番外編:Javaのコンパイル方法(仕組み)をパッケージ含めていろいろ試してみる
・番外編2:Jarの作り方とJarを含んだコンパイル方法をパッケージ含めていろいろ試してみる
・番外編3:GradleでJavaプロジェクトを作ってみる(Ubuntu22.04)
・番外編4:IntelliJを使ってJavaのGradleプロジェクトでデバッグしてみる(Ubuntu22.04)
・番外編5:GradleプロジェクトでJGraphTを使う(Ubuntu22.04)
・番外編6:JGraphTのサンプルソースの解説と可視化の補足(Ubuntu22.04、IntelliJ、Gradle)
・番外編7:Androidアプリの開発環境の構築とHelloWorldアプリを作ってみる ← 今回

Android Studioのインストール

Android Studioのダウンロード

以下のリンクから Android Studio をダウンロードします。

developer.android.com

zipファイルもあるようですが、exeファイルの方が推奨のようです。android-studio-2024.2.2.13-windows.exe がダウンロードできました。

では、ダブルクリックして、インストールを開始します。以下のようにインストーラが起動するので、Next をクリックします。

Android Studio Setup
Android Studio Setup

チェックが入った状態で、Next をクリックします。

Choose Components
Choose Components

インストール場所を変更したい場合は、任意の場所に変更して、Next をクリックします。

Install Locations
Install Locations

特に変更は必要ないので、Install をクリックします。

Start Menu
Start Menu

無事、インストールが完了しました。Next をクリックします。

Setup was completed successfully
Setup was completed successfully

実は、まだセットアップが続くので、チェックを入れたまま、Finish をクリックします。

Completing Android Studio Setup
Completing Android Studio Setup

セットアップウィザードが起動するので、Next をクリックします。

Android Studio Setup Wizard
Android Studio Setup Wizard

Standard でいいと思いますが、お好みでどうぞ。Next をクリックします。

Install Type
Install Type

内容を確認して、Next をクリックします。

Verify Settings
Verify Settings

ライセンス確認画面です。よければ、Accept を選択し、Finish をクリックします。ダウンロードが始まります。少し時間がかかります。

License Agreement
License Agreement

ようやくインストール完了です。Finish をクリックします。

Downloading Components
Downloading Components

HelloWorldアプリを作ってみる

早速、Android Studio を起動してみます。

プロジェクトの作成

下図のような画面が起動するので、「New Project」をクリックします。

Welcome to Android Studio
Welcome to Android Studio

下図のような画面になるので、余計なコードが含まれていないシンプルなテンプレートの「Empty Activity」を選択し、Next をクリックします。

New Project
New Project

下図のような画面になるので、Name に、任意のプロジェクト名(パッケージ名であり、保存するディレクトリ名であり、ここでは Hello とした)を入力して、Finish をクリックします。

New Project
New Project

下図のように、Android Studio が起動します。しばらくの間は、右下のプログレスバーが動いていて、バックグラウンドでビルドなどがされています。私の環境だと 10分ぐらいかかったと思います。完了するまで待った方がいいと思います。

Android Studioの画面
Android Studioの画面

プロジェクトの構成

プロジェクトを作成した時点のディレクトリ構成は以下のようになります。普通の Gradle の構成のように見えますね。app/src/main/java/com/example/hello/MainActivity.kt がエントリポイントですね。

$ tree
.
|-- app
|   |-- build.gradle.kts
|   |-- proguard-rules.pro
|   `-- src
|       |-- androidTest
|       |   `-- java
|       |       `-- com
|       |           `-- example
|       |               `-- hello
|       |                   `-- ExampleInstrumentedTest.kt
|       |-- main
|       |   |-- AndroidManifest.xml
|       |   |-- java
|       |   |   `-- com
|       |   |       `-- example
|       |   |           `-- hello
|       |   |               |-- MainActivity.kt
|       |   |               `-- ui
|       |   |                   `-- theme
|       |   |                       |-- Color.kt
|       |   |                       |-- Theme.kt
|       |   |                       `-- Type.kt
|       |   `-- res
|       |       |-- drawable
|       |       |   |-- ic_launcher_background.xml
|       |       |   `-- ic_launcher_foreground.xml
|       |       |-- mipmap-anydpi-v26
|       |       |   |-- ic_launcher.xml
|       |       |   `-- ic_launcher_round.xml
|       |       |-- mipmap-hdpi
|       |       |   |-- ic_launcher.webp
|       |       |   `-- ic_launcher_round.webp
|       |       |-- mipmap-mdpi
|       |       |   |-- ic_launcher.webp
|       |       |   `-- ic_launcher_round.webp
|       |       |-- mipmap-xhdpi
|       |       |   |-- ic_launcher.webp
|       |       |   `-- ic_launcher_round.webp
|       |       |-- mipmap-xxhdpi
|       |       |   |-- ic_launcher.webp
|       |       |   `-- ic_launcher_round.webp
|       |       |-- mipmap-xxxhdpi
|       |       |   |-- ic_launcher.webp
|       |       |   `-- ic_launcher_round.webp
|       |       |-- values
|       |       |   |-- colors.xml
|       |       |   |-- strings.xml
|       |       |   `-- themes.xml
|       |       `-- xml
|       |           |-- backup_rules.xml
|       |           `-- data_extraction_rules.xml
|       `-- test
|           `-- java
|               `-- com
|                   `-- example
|                       `-- hello
|                           `-- ExampleUnitTest.kt
|-- build.gradle.kts
|-- gradle
|   |-- libs.versions.toml
|   `-- wrapper
|       |-- gradle-wrapper.jar
|       `-- gradle-wrapper.properties
|-- gradle.properties
|-- gradlew
|-- gradlew.bat
|-- local.properties
`-- settings.gradle.kts

31 directories, 37 files

いくつかのファイルを見ておきます。まず、settings.gradle.kts です。app というサブプロジェクトを include しています。

$ cat settings.gradle.kts
pluginManagement {
    repositories {
        google {
            content {
                includeGroupByRegex("com\\.android.*")
                includeGroupByRegex("com\\.google.*")
                includeGroupByRegex("androidx.*")
            }
        }
        mavenCentral()
        gradlePluginPortal()
    }
}
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
    }
}

rootProject.name = "Hello"
include(":app")

次に、build.gradle.kts です。Gradle では、サブプロジェクトごとに build.gradle.kts はありますが、トップディレクトリに build.gradle.kts は無かったと思います。内容的にはあまり必要には見えません。

$ cat build.gradle.kts
// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
    alias(libs.plugins.android.application) apply false
    alias(libs.plugins.kotlin.android) apply false
    alias(libs.plugins.kotlin.compose) apply false
}

最後に、appサブプロジェクトの build.gradle.kts です。自分で用意するのは、なかなか大変そうな内容です。

$ cat app/build.gradle.kts
plugins {
    alias(libs.plugins.android.application)
    alias(libs.plugins.kotlin.android)
    alias(libs.plugins.kotlin.compose)
}

android {
    namespace = "com.example.hello"
    compileSdk = 35

    defaultConfig {
        applicationId = "com.example.hello"
        minSdk = 24
        targetSdk = 35
        versionCode = 1
        versionName = "1.0"

        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            isMinifyEnabled = false
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
        }
    }
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_11
        targetCompatibility = JavaVersion.VERSION_11
    }
    kotlinOptions {
        jvmTarget = "11"
    }
    buildFeatures {
        compose = true
    }
}

dependencies {

    implementation(libs.androidx.core.ktx)
    implementation(libs.androidx.lifecycle.runtime.ktx)
    implementation(libs.androidx.activity.compose)
    implementation(platform(libs.androidx.compose.bom))
    implementation(libs.androidx.ui)
    implementation(libs.androidx.ui.graphics)
    implementation(libs.androidx.ui.tooling.preview)
    implementation(libs.androidx.material3)
    testImplementation(libs.junit)
    androidTestImplementation(libs.androidx.junit)
    androidTestImplementation(libs.androidx.espresso.core)
    androidTestImplementation(platform(libs.androidx.compose.bom))
    androidTestImplementation(libs.androidx.ui.test.junit4)
    debugImplementation(libs.androidx.ui.tooling)
    debugImplementation(libs.androidx.ui.test.manifest)
}

JavaのバージョンとGradleのバージョン

以前、以下の記事のように、Windows で、Java の開発環境を構築したときは、OpenJDK の 22 をインストールしました。

daisuke20240310.hatenablog.com

また、以下の記事で、Gradle の環境構築をした際は、Gradle 8.3 でした。

daisuke20240310.hatenablog.com

今回の環境のバージョンを確認します。まず、Gradle の情報を見てみます。

File → Settings → Build, Execution, Development → Build Tools → Gradle を開きます。21.0.4 というのが見えます。

Javaのバージョン
Javaのバージョン

一方、トップディレクトリで以下のように実行すると、いろんなバージョンが確認できました。こちらを信用しておけば良さそうです。Java は以前インストールしたものが使われているようでした。

$ ./gradlew -v

Welcome to Gradle 8.10.2!

Here are the highlights of this release:
 - Support for Java 23
 - Faster configuration cache
 - Better configuration cache reports

For more details see https://docs.gradle.org/8.10.2/release-notes.html


------------------------------------------------------------
Gradle 8.10.2
------------------------------------------------------------

Build time:    2024-09-23 21:28:39 UTC
Revision:      415adb9e06a516c44b391edff552fd42139443f7

Kotlin:        1.9.24
Groovy:        3.0.22
Ant:           Apache Ant(TM) version 1.10.14 compiled on August 16 2023
Launcher JVM:  22.0.1 (Oracle Corporation 22.0.1+8-16)
Daemon JVM:    C:\Program Files\Java\jdk-22 (no JDK specified, using current Java home)
OS:            Windows 10 10.0 amd64

HelloWorldアプリをエミュレータで起動する

画面の▷ボタンを押して、アプリを起動してみます。最初はなんかエラー出ましたが、再度実行したところ、正しく起動したようです!

HelloWorldアプリを起動
HelloWorldアプリを起動

HelloWorldアプリを実機で起動する

まず、Androidスマホの準備をします。自作の Androidアプリを自分のスマホで動かすには、開発者向けオプションの USBデバッグを有効にする必要があります。

やり方は、Android の設定→デバイスについて→バージョン に行きます。ビルド番号というのがあるので、ここを 7回タップします。すると、開発者モードに切り替わったメッセージが出ます。次は、Android の設定→システム設定→開発者向けオプション に行き、USBデバッグを有効にします。これで、準備は完了です。Androidバージョンによって、メニューの文字列には違いがあるかもしれません。

Android Studio の方に戻り、先ほど、HelloWorldアプリが起動している状態の場合は、停止しておきます。メニューの View → Tools Windows → Logcat を起動します。すると、下図の下側の赤枠のところがエミュレータの表示になっていると思うので、そこを自分の Androidスマホに切り替えます。また、同様に、上側の赤枠についても、どちらを起動するかを示しているので、エミュレータになっていたら、実機に切り替えます。

デバイスを実機に切り替える
デバイスを実機に切り替える

あとは、エミュレータのときと同様に、▷ボタンを押して実行します。すると、以下のように、実機で、HelloWorldアプリを実行できました。

実機で実行した結果
実機で実行した結果

おわりに

今回は、久しぶりに Androidアプリの開発環境を立ち上げてみました。以前より、トラブルも少なく、簡単に動いたと思います。次回は、既存の OSS の Androidアプリを動かしてみたいと思います。

最後になりましたが、エンジニアグループのランキングに参加中です。

気楽にポチッとよろしくお願いいたします🙇

今回は以上です!

最後までお読みいただき、ありがとうございました。




以上の内容はhttps://daisuke20240310.hatenablog.com/entry/android_sampleより取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14