# Cài đặt Git, JDK 17, Android Studio và SDK

> Chuẩn bị Git, JDK 17 và Android tooling cần thiết để clone, mở và build app Kotlin Multiplatform trong khóa học.

- URL: https://dantech.academy/courses/kotlin-accelerator/engineer-builder/00-setup-app-running/lesson-01-install-android-studio-sdk
- Khóa học: [Mobile Action Pro](https://dantech.academy/courses/kotlin-accelerator.md)
- Module: Setup App Chạy Được
- Thời lượng: 10 phút
- Độ khó: beginner
- Truy cập: Miễn phí, đọc toàn bài
- English: https://dantech.academy/en/courses/kotlin-accelerator/engineer-builder/00-setup-app-running/lesson-01-install-android-studio-sdk.md

## Mục tiêu

- Cài Git và cấu hình commit identity với user.name và user.email
- Cài JDK 17 và hiểu vì sao Gradle toolchain cần đúng version này
- Cài Android Studio bản stable, kiểm tra SDK components và chuẩn bị emulator hoặc điện thoại thật

---

## Mục Tiêu Bài Học

Sau bài này máy của bạn có đủ ba thứ để clone, mở và build project Kotlin Multiplatform (KMP) của khóa học:

- Git để làm việc với repository,
- JDK 17 để Gradle compile code,
- Android Studio cùng Android SDK để mở, build và chạy app Android.

Phần iOS cần thêm macOS và Xcode, và là phần tùy chọn. Windows và Linux vẫn học trọn khóa trên Android.

## Trước Khi Cài Bất Cứ Thứ Gì

Khi setup một máy mới, tôi không clone project ngay. Tôi kiểm tra toolchain trước, vì phần lớn lỗi "project không build được" ở tuần đầu thực ra là lỗi môi trường. Mất thêm vài phút lúc đầu sẽ đỡ cho bạn nhiều giờ debug về sau.

## Phần 1: Cài Git

Git là công cụ chạy trên máy bạn, dùng để clone repo, xem thay đổi và commit. GitHub, GitLab là dịch vụ host repository. Git giúp máy bạn làm việc với chúng.

Trang official: [Git official install page](https://git-scm.com/install/).

### Bước 1: Tải Git Từ Trang Official

| OS            | Cách cài nên dùng                                                                                           |
| ------------- | ----------------------------------------------------------------------------------------------------------- |
| macOS         | Dùng lựa chọn macOS trên trang official, hoặc dùng Homebrew với `brew install git` nếu bạn đã dùng Homebrew |
| Windows       | Chọn Windows từ trang official và giữ Git Bash enabled trong lúc cài                                        |
| Ubuntu/Debian | Chạy `sudo apt update && sudo apt install git`                                                              |
| Fedora        | Chạy `sudo dnf install git`                                                                                 |

### Bước 2: Mở Terminal Mới

Cài xong, đóng terminal cũ và mở terminal mới, vì terminal cũ chưa nhận PATH mới. Chạy:

```bash
git --version
```

Terminal phải in ra Git version. Nếu nó báo `command not found` hoặc `'git' is not recognized`, Git chưa cài xong hoặc terminal chưa nhận PATH. Restart máy rồi thử lại.

### Bước 3: Cấu Hình Git Identity

Bạn chỉ cần làm việc này một lần sau khi cài Git:

```bash
git config --global user.name "Your Name"
git config --global user.email "[EMAIL_ADDRESS]"
```

`user.name` và `user.email` là thông tin author ghi trên mỗi commit. Lệnh này không login GitHub.

Kiểm tra lại:

```bash
git config --global user.name
git config --global user.email
```

## Phần 2: Cài JDK 17

Project dùng Gradle toolchain: mọi KMP module khai báo `jvmToolchain(17)` trong convention plugin `KmpLibraryConventionPlugin` (thư mục `build-logic/`). Gradle sẽ tìm một bản JDK 17 đã cài trên máy để compile. Repo không cấu hình tự tải JDK, nên nếu máy không có JDK 17, build dừng với lỗi:

```text
Cannot find a Java installation on your machine ... matching: {languageVersion=17, ...}
Toolchain download repositories have not been configured.
```

Lỗi này vẫn xảy ra khi máy bạn đã có JDK 21. Toolchain cần đúng version 17. JDK đi kèm Android Studio (thư mục `jbr`) cũng không thay được, vì các bản Android Studio gần đây đóng gói JDK 21.

Cài một bản JDK 17, ví dụ Eclipse Temurin 17:

| OS            | Cách cài                                                                                                   |
| ------------- | ---------------------------------------------------------------------------------------------------------- |
| macOS         | `brew install --cask temurin@17`, hoặc tải file `.pkg` từ [Adoptium](https://adoptium.net/temurin/releases/?version=17) |
| Windows       | Tải file `.msi` từ [Adoptium](https://adoptium.net/temurin/releases/?version=17) và cài mặc định           |
| Ubuntu/Debian | `sudo apt install openjdk-17-jdk`                                                                          |
| Linux khác    | Cài gói OpenJDK 17 của distro, hoặc bản Temurin 17 từ trang Adoptium                                       |

Các cách cài trên đặt JDK vào vị trí chuẩn của hệ điều hành, nơi Gradle tự dò ra. Tìm hiểu thêm: [Gradle toolchains](https://docs.gradle.org/current/userguide/toolchains.html).

Mở terminal mới và kiểm tra:

```bash
java -version
```

Nếu máy có nhiều JDK, `java -version` có thể in ra version khác 17. Điều đó không sao, miễn là JDK 17 đã được cài. Để các lệnh `./gradlew` chạy ổn định, bạn nên đặt `JAVA_HOME` trỏ vào JDK 17. Trên macOS:

```bash
echo 'export JAVA_HOME=$(/usr/libexec/java_home -v 17)' >> ~/.zshrc
```

## Phần 3: Cài Android Studio Và Android SDK

Android Studio là IDE chính thức của Google cho Android, gồm Android SDK, emulator, device tools, Gradle integration và code editor. Nó cũng mở và chỉnh sửa được code KMP (`commonMain`, `androidMain`, `iosMain`).

- [Download Android Studio](https://developer.android.com/studio)
- [Install Android Studio guide](https://developer.android.com/studio/install)

Dùng bản stable mới nhất. Repo dùng Android Gradle Plugin 9, nên bản Android Studio quá cũ sẽ không sync được.

### Bước 1: Tải Stable Installer

Tải installer từ trang [Android Studio download](https://developer.android.com/studio), không tải từ trang không chính thức. Nếu trang hiển thị bản preview hoặc canary, bỏ qua. Cài theo hướng dẫn mặc định của hệ điều hành.

### Bước 2: Để Setup Wizard Cài SDK

Lần đầu mở Android Studio, chọn standard setup để wizard cài các SDK components tiêu chuẩn:

- Android SDK Platform
- Android SDK Build-Tools
- Android SDK Platform-Tools
- Android SDK Command-line Tools
- Android Emulator, nếu bạn dùng emulator

### Bước 3: Kiểm Tra SDK Manager

1. Vào `Settings` (macOS: `Preferences`).
2. Mở `Languages & Frameworks > Android SDK`.
3. Xác nhận Android SDK location đã có.
4. Tab `SDK Platforms`: cài một Android platform stable gần đây nếu chưa có.
5. Tab `SDK Tools`: cài Build-Tools, Platform-Tools, Command-line Tools, và Emulator nếu cần.

Gradle tự tải đúng SDK platform mà project yêu cầu trong lần build đầu nếu bạn đã chấp nhận license.

### Bước 4: Chuẩn Bị Nơi Chạy App

Bạn cần ít nhất một nơi để chạy app Android:

- Emulator: mở `Device Manager` trong Android Studio và tạo một virtual device. Xem [Create and manage virtual devices](https://developer.android.com/studio/run/managing-avds).
- Điện thoại Android thật: bật `Developer options`, bật `USB debugging`, cắm cáp và chấp nhận hộp thoại cho phép debug trên điện thoại. Xem [Run apps on a hardware device](https://developer.android.com/studio/run/device). App yêu cầu Android 8.0 (API 26) trở lên.

Với điện thoại thật, `adb devices` phải liệt kê máy của bạn với trạng thái `device`.

## Kiểm Tra Một Lượt Bằng Terminal

```bash
git --version
git config --global user.email
java -version
adb version
```

Nếu không tìm thấy `adb`, kiểm tra Platform-Tools đã cài trong SDK Manager chưa. Android Studio cài `adb` vào thư mục `platform-tools` của Android SDK nhưng không tự thêm thư mục đó vào PATH:

| OS      | Thêm `platform-tools` vào PATH                                                                                                  |
| ------- | ------------------------------------------------------------------------------------------------------------------------------- |
| macOS   | `echo 'export PATH="$PATH:$HOME/Library/Android/sdk/platform-tools"' >> ~/.zshrc`                                               |
| Linux   | `echo 'export PATH="$PATH:$HOME/Android/Sdk/platform-tools"' >> ~/.bashrc`                                                      |
| Windows | Mở `Edit environment variables for your account`, chọn `Path` > `Edit` > `New`, dán `%LOCALAPPDATA%\Android\Sdk\platform-tools` |

Đây là đường dẫn SDK mặc định. Nếu SDK Manager hiện đường dẫn khác thì dùng đường dẫn đó, rồi mở terminal mới và chạy lại `adb version`.

Trên Windows, nên mở Git Bash một lần. Nó cho bạn shell ổn định hơn cho các lệnh trong khóa học.

Bạn chưa cần chạy `./gradlew` vì chưa clone repo.

## Bảng Xử Lý Lỗi

![Infographic xử lý lỗi setup Git, Android Studio và Android SDK: kiểm tra git, adb, SDK, emulator, licenses và first sync.](https://eaflqomlkbpdyzkiieby.supabase.co/storage/v1/object/public/content-media/courses/kotlin-accelerator/engineer-builder/00-setup-app-running/lesson-01-setup-troubleshooting-guide-vi.webp)

| Dạng lỗi                                                  | Kiểm tra trước                                           |
| --------------------------------------------------------- | -------------------------------------------------------- |
| `Cannot find a Java installation ... languageVersion=17`  | Cài JDK 17 như Phần 2, rồi mở terminal hoặc IDE mới      |
| `java` không có trên PATH                                 | Cài JDK 17 và đặt `JAVA_HOME`                            |
| `adb` không có trên PATH                                  | Thêm `platform-tools` vào PATH                           |

## Checkpoint

Ghi lại kết quả các lệnh sau để đối chiếu khi gặp lỗi build:

```bash
git --version
git config --global user.email
java -version
adb version
```

---

- Bài tiếp theo: [Clone Repo và Mở Project KMP Lần Đầu](https://dantech.academy/courses/kotlin-accelerator/engineer-builder/00-setup-app-running/lesson-02-clone-repo-open-project.md)
