ä»åã¯ãããªãä¹
ãã¶ãã« Androidã¢ããªã®éçºããã£ã¦ã¿ã¾ããã¾ãã¯ãéçºç°å¢ã®æ§ç¯ã¨ãç°¡åãªã¢ããªãä½ã£ã¦ã¿ããã¨æãã¾ãã
ä»åã®ç®çã¯ãã¹ããã使ã£ã¦ãNFC ã®ãªã¼ãã©ã¤ãããããã¨ã§ããç°¡å㪠OSS ãæã£ã¦ãã¦åããã¦ã¿ããã®ã§ããããã¡ãã¯æ¬¡åã«æ¸ããã¨æãã¾ãã
ããã§ã¯ããã£ã¦ããã¾ãã
åèæç®
ä»åãåèã«ããæ¸ç±ã§ãã
Kotlin ã¯è©³ããç¥ããªãã®ã§ãææ³ãªã©ã¯ä»¥ä¸ã®æ¸ç±ãåèã«ãã¦ãã¾ãã
ã¯ããã«
ãJavaã§ãã¶ã¤ã³ãã¿ã¼ã³ãå¦ã¶ãã®è¨äºä¸è¦§ã§ããè¯ãã£ããåèã«ãã¦ãã ããã
Javaã§ãã¶ã¤ã³ãã¿ã¼ã³ã®è¨äºä¸è¦§
Android Studioã®ã¤ã³ã¹ãã¼ã«
Android Studioã®ãã¦ã³ãã¼ã
以ä¸ã®ãªã³ã¯ãã Android Studio ããã¦ã³ãã¼ããã¾ãã
developer.android.com
zipãã¡ã¤ã«ãããããã§ãããexeãã¡ã¤ã«ã®æ¹ãæ¨å¥¨ã®ããã§ããandroid-studio-2024.2.2.13-windows.exe ããã¦ã³ãã¼ãã§ãã¾ããã
ã§ã¯ãããã«ã¯ãªãã¯ãã¦ãã¤ã³ã¹ãã¼ã«ãéå§ãã¾ãã以ä¸ã®ããã«ã¤ã³ã¹ãã¼ã©ãèµ·åããã®ã§ãNext ãã¯ãªãã¯ãã¾ãã
Android Studio Setup
ãã§ãã¯ãå
¥ã£ãç¶æ
ã§ãNext ãã¯ãªãã¯ãã¾ãã
Choose Components
ã¤ã³ã¹ãã¼ã«å ´æã夿´ãããå ´åã¯ãä»»æã®å ´æã«å¤æ´ãã¦ãNext ãã¯ãªãã¯ãã¾ãã
Install Locations
ç¹ã«å¤æ´ã¯å¿
è¦ãªãã®ã§ãInstall ãã¯ãªãã¯ãã¾ãã
Start Menu
ç¡äºãã¤ã³ã¹ãã¼ã«ãå®äºãã¾ãããNext ãã¯ãªãã¯ãã¾ãã
Setup was completed successfully
å®ã¯ãã¾ã ã»ããã¢ãããç¶ãã®ã§ããã§ãã¯ãå
¥ããã¾ã¾ãFinish ãã¯ãªãã¯ãã¾ãã
Completing Android Studio Setup
ã»ããã¢ããã¦ã£ã¶ã¼ããèµ·åããã®ã§ãNext ãã¯ãªãã¯ãã¾ãã
Android Studio Setup Wizard
Standard ã§ããã¨æãã¾ãããã好ã¿ã§ã©ãããNext ãã¯ãªãã¯ãã¾ãã
Install Type
å
容ã確èªãã¦ãNext ãã¯ãªãã¯ãã¾ãã
Verify Settings
ã©ã¤ã»ã³ã¹ç¢ºèªç»é¢ã§ãããããã°ãAccept ã鏿ããFinish ãã¯ãªãã¯ãã¾ãããã¦ã³ãã¼ããå§ã¾ãã¾ããå°ãæéããããã¾ãã
License Agreement
ããããã¤ã³ã¹ãã¼ã«å®äºã§ããFinish ãã¯ãªãã¯ãã¾ãã
Downloading Components
HelloWorldã¢ããªãä½ã£ã¦ã¿ã
æ©éãAndroid Studio ãèµ·åãã¦ã¿ã¾ãã
ããã¸ã§ã¯ãã®ä½æ
ä¸å³ã®ãããªç»é¢ãèµ·åããã®ã§ããNew Projectããã¯ãªãã¯ãã¾ãã
Welcome to Android Studio
ä¸å³ã®ãããªç»é¢ã«ãªãã®ã§ãä½è¨ãªã³ã¼ããå«ã¾ãã¦ããªãã·ã³ãã«ãªãã³ãã¬ã¼ãã®ãEmpty Activityãã鏿ããNext ãã¯ãªãã¯ãã¾ãã
New Project
ä¸å³ã®ãããªç»é¢ã«ãªãã®ã§ãName ã«ãä»»æã®ããã¸ã§ã¯ãåï¼ããã±ã¼ã¸åã§ãããä¿åãããã£ã¬ã¯ããªåã§ãããããã§ã¯ Hello ã¨ããï¼ãå
¥åãã¦ãFinish ãã¯ãªãã¯ãã¾ãã
New Project
ä¸å³ã®ããã«ãAndroid Studio ãèµ·åãã¾ãããã°ããã®éã¯ãå³ä¸ã®ããã°ã¬ã¹ãã¼ãåãã¦ãã¦ãããã¯ã°ã©ã¦ã³ãã§ãã«ããªã©ãããã¦ãã¾ããç§ã®ç°å¢ã 㨠10åãããããã£ãã¨æãã¾ããå®äºããã¾ã§å¾
ã£ãæ¹ãããã¨æãã¾ãã
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 ã¯ä»¥åã¤ã³ã¹ãã¼ã«ãããã®ã使ããã¦ããããã§ããã
$ ./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ã¢ããªã宿©ã§èµ·åãã
ã¾ããAndroidã¹ããã®æºåããã¾ããèªä½ã® Androidã¢ããªãèªåã®ã¹ããã§åããã«ã¯ãéçºè
åããªãã·ã§ã³ã® USBãããã°ãæå¹ã«ããå¿
è¦ãããã¾ãã
ããæ¹ã¯ãAndroid ã®è¨å®âããã¤ã¹ã«ã¤ãã¦âãã¼ã¸ã§ã³ ã«è¡ãã¾ãããã«ãçªå·ã¨ããã®ãããã®ã§ãããã 7åã¿ãããã¾ããããã¨ãéçºè
ã¢ã¼ãã«åãæ¿ãã£ãã¡ãã»ã¼ã¸ãåºã¾ããæ¬¡ã¯ãAndroid ã®è¨å®âã·ã¹ãã è¨å®âéçºè
åããªãã·ã§ã³ ã«è¡ããUSBãããã°ãæå¹ã«ãã¾ããããã§ãæºåã¯å®äºã§ããAndroidãã¼ã¸ã§ã³ã«ãã£ã¦ãã¡ãã¥ã¼ã®æååã«ã¯éããããããããã¾ããã
Android Studio ã®æ¹ã«æ»ããå
ã»ã©ãHelloWorldã¢ããªãèµ·åãã¦ããç¶æ
ã®å ´åã¯ã忢ãã¦ããã¾ããã¡ãã¥ã¼ã® View â Tools Windows â Logcat ãèµ·åãã¾ããããã¨ãä¸å³ã®ä¸å´ã®èµ¤æ ã®ã¨ãããã¨ãã¥ã¬ã¼ã¿ã®è¡¨ç¤ºã«ãªã£ã¦ããã¨æãã®ã§ããããèªåã® Androidã¹ããã«åãæ¿ãã¾ããã¾ããåæ§ã«ãä¸å´ã®èµ¤æ ã«ã¤ãã¦ããã©ã¡ããèµ·åãããã示ãã¦ããã®ã§ãã¨ãã¥ã¬ã¼ã¿ã«ãªã£ã¦ãããã宿©ã«åãæ¿ãã¾ãã
ããã¤ã¹ã宿©ã«åãæ¿ãã
ãã¨ã¯ãã¨ãã¥ã¬ã¼ã¿ã®ã¨ãã¨åæ§ã«ãâ·ãã¿ã³ãæ¼ãã¦å®è¡ãã¾ããããã¨ã以ä¸ã®ããã«ã宿©ã§ãHelloWorldã¢ããªãå®è¡ã§ãã¾ããã
宿©ã§å®è¡ããçµæ
ãããã«
ä»åã¯ãä¹
ãã¶ãã« Androidã¢ããªã®éçºç°å¢ãç«ã¡ä¸ãã¦ã¿ã¾ããã以åããããã©ãã«ãå°ãªããç°¡åã«åããã¨æãã¾ããæ¬¡åã¯ãæ¢åã® OSS ã® Androidã¢ããªãåããã¦ã¿ããã¨æãã¾ãã
æå¾ã«ãªãã¾ããããã¨ã³ã¸ãã¢ã°ã«ã¼ãã®ã©ã³ãã³ã°ã«åå ä¸ã§ãã
æ°æ¥½ã«ãããã¨ãããããé¡ããããã¾ãð
ä»åã¯ä»¥ä¸ã§ãï¼
æå¾ã¾ã§ãèªã¿ããã ãããããã¨ããããã¾ããã