# Android Studio, JDK và KMP plugin

> JDK 17+, Android Studio stable, plugin Kotlin Multiplatform, Xcode nếu bạn dùng macOS, và kdoctor để kiểm tra máy.

- URL: https://dantech.academy/courses/kotlin-mobile-101/00-setup-first-run/lesson-01-install-android-studio
- Khóa học: [Kotlin Mobile 101](https://dantech.academy/courses/kotlin-mobile-101.md)
- Module: Setup & App Đầu Tiên
- Thời lượng: 15 phút
- Độ khó: beginner
- Truy cập: Miễn phí, đọc toàn bài

## Mục tiêu

- Cài JDK 17+, Android Studio bản stable và plugin Kotlin Multiplatform
- Cài đúng Android SDK Platform 37.0 và 36, rồi chuẩn bị nơi chạy app: máy Android thật hoặc emulator, và iOS simulator nếu bạn có macOS

---

Khóa này giúp bạn bắt đầu với **Kotlin Multiplatform**: bằng một codebase Kotlin duy nhất, một bộ giao diện Compose, app của bạn chạy được trên cả Android và iOS.

Ngày đầu tiên chỉ có một việc: làm cho máy tính của bạn build được project KMP.

## Bạn Sẽ Chạy Được Trên Những Đâu

**Build được app iOS thì bắt buộc phải có máy macOS.**

| Máy của bạn   | Android | iOS                     | Học được khóa này không                     |
| ------------- | ------- | ----------------------- | ------------------------------------------- |
| Windows       | Có      | Không                   | Có. Bỏ qua các bước iOS, mọi thứ khác y hệt |
| Linux         | Có      | Không                   | Có. Như trên                                |
| macOS (Intel) | Có      | Có, simulator chậm      | Có                                          |
| macOS (Apple) | Có      | Có, simulator chạy mượt | Có, trải nghiệm tốt nhất                    |

Nếu bạn dùng Windows hoặc Linux: **đừng bỏ khóa này**. Toàn bộ kiến trúc, code và bài tập đều nằm trong phần chia sẻ chung. Bạn chỉ mất phần bấm nút chạy trên iOS. Ngày nào có máy Mac, code của bạn chạy được ngay mà không cần sửa một dòng.

## Yêu Cầu Máy Tính

| Thành phần   | Tối thiểu                               | Khuyến nghị  |
| ------------ | --------------------------------------- | ------------ |
| RAM          | 8GB                                     | 16GB         |
| Ổ cứng trống | 25GB                                    | 40GB+        |
| OS           | Windows 10/11, macOS 14+, Ubuntu 22.04+ | Bản mới nhất |

KMP nặng hơn Android thuần một chút vì phải build cho nhiều target. Nếu máy chỉ có 8GB RAM: bạn vẫn học được, chỉ cần ưu tiên chạy trên **máy Android thật** thay vì emulator.

## Phần 1: JDK 17 Trở Lên

Gradle và Kotlin cần một JDK. Android Studio mang sẵn một bản JDK riêng.

Kiểm tra trước xem đã có chưa:

```bash
java -version
```

Thấy số phiên bản từ `17` trở lên là đủ. Nếu báo lệnh không tồn tại hoặc số nhỏ hơn 17, cài [Temurin JDK 21](https://adoptium.net/), bản miễn phí, không cần đăng ký.

Vì sao 17 là sàn: Android Gradle Plugin 9 từ chối chạy trên JDK cũ hơn. Project bạn tạo mới bằng KMP wizard dùng AGP `9.1.1`, còn TicTac, app của cả khóa, dùng `9.0.1`.

## Phần 2: Android Studio Và SDK Platform 37, 36

Tải từ trang chính thức: [developer.android.com/studio](https://developer.android.com/studio). Chọn bản **stable** mới nhất. Không chọn Canary hay Beta, các bản đó dành cho người cần tính năng mới và chấp nhận bug.

Bản Studio quá cũ sẽ không mở nổi project dùng AGP `9.1.1` hay `9.0.1`; nó báo thẳng là cần bản mới hơn.

Khi trình cài đặt hỏi, giữ nguyên mặc định:

- **Android SDK**: bắt buộc, đây là toolchain build app.
- **Android Virtual Device**: giữ, kể cả khi bạn định dùng máy thật.

Lần tải SDK đầu tiên mất 10-20 phút. Cứ để nó chạy trong khi bạn pha một ly cà phê.

Xong rồi thì mở **Settings → Languages & Frameworks → Android SDK**, tab **SDK Platforms**, tick **Android SDK Platform 37.0** (Android 17) và **Android SDK Platform 36** (Android 16) rồi Apply. Nếu tab chỉ hiện tên Android 17, Android 16, bật **Show Package Details** để thấy tên gói. Project tạo mới bằng KMP wizard biên dịch với `compileSdk = 37`, còn TicTac dùng `compileSdk = 36`. Mỗi project biên dịch bằng đúng bản SDK nó khai, nên cần cả hai.

Còn một con số nữa cần biết: `minSdk = 24`, tức Android 7.0, giống nhau ở cả hai project. Máy Android nào từ 7.0 trở lên đều cài được app bạn build. Máy cũ hơn thì không, và đó là lựa chọn có chủ đích, đổi lấy việc không phải viết code vá cho những bản Android gần như không còn ai dùng.

## Phần 3: Plugin Kotlin Multiplatform

Bước này chỉ project KMP mới cần. Plugin này cho phép Android Studio chạy và debug phần iOS ngay trong IDE.

**Settings → Plugins → Marketplace**, gõ `Kotlin Multiplatform`, nhấn **Install**, rồi restart IDE.

Sau khi restart, bạn sẽ thấy thêm cấu hình chạy `iosApp` trong danh sách run configuration mỗi khi mở một project KMP.

> **Trên Windows và Linux:** plugin vẫn cài được và vẫn hữu ích (nó hiểu cấu trúc source set của KMP), chỉ là mục `iosApp` sẽ không chạy được.

## Phần 4: Chuẩn Bị Nơi Chạy App

Bạn cần ít nhất một nơi để app hiện ra.

### Android: máy thật (khuyến nghị)

1. Mở **Settings → About phone**, nhấn 7 lần vào **Build number** cho đến khi thấy "You are now a developer".
2. Vào **Settings → System → Developer options**, bật **USB debugging**.
3. Cắm cáp USB. Khi điện thoại hỏi "Allow USB debugging?", chọn **Allow**.

### Android: emulator

1. Trong Android Studio, mở **Device Manager** (icon điện thoại ở thanh bên phải).
2. **Create Virtual Device** → chọn **Pixel 8** hoặc bất kỳ Pixel nào.
3. Chọn system image mới nhất có nhãn **Recommended**, tải về nếu chưa có.
4. Finish, rồi nhấn nút Play để khởi động.

Lần khởi động đầu tiên chậm. Lần sau nhanh hơn nhiều.

### iOS: chỉ trên macOS

1. Cài **Xcode** từ Mac App Store. Nó nặng khoảng 15-25GB.
2. Mở Xcode một lần, chấp nhận license, để nó cài nốt các component phụ.
3. Chạy lệnh này để trỏ command line tool vào đúng Xcode:

```bash
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
```

4. Mở một simulator để chắc chắn nó chạy được:

```bash
open -a Simulator
```

## Phần 5: Kiểm Tra Bằng kdoctor (Windows, Linux không cần)

Đừng đoán xem máy đã sẵn sàng chưa. `kdoctor` trả lời chính xác câu đó.

Trên macOS:

```bash
brew install kdoctor
kdoctor
```

`kdoctor` in ra một danh sách, mỗi dòng một thành phần:

```
[✓] Operating System
[✓] Java
[✓] Android Studio
[✓] Xcode
[✓] CocoaPods
```

Dấu `✗` hoặc `!` kèm theo mô tả và **lệnh cần chạy để sửa**. Làm theo đúng thứ tự từ trên xuống, chạy lại `kdoctor` sau mỗi lần sửa cho đến khi sạch.

Trên Windows và Linux chưa có `kdoctor`. Bạn kiểm tra tay bằng hai lệnh:

```bash
java -version   # cần 17 trở lên
adb devices     # cần liệt kê ít nhất một device
```

Kết quả `adb devices` mong đợi (thiết bị phải chạy Android 7.0 trở lên):

```
List of devices attached
RF8N30XXXXX	device
```

Nếu danh sách trống:

- Máy thật: rút cáp cắm lại, kiểm tra đã Allow USB debugging chưa, thử cáp khác. Rất nhiều cáp chỉ sạc được chứ không truyền dữ liệu.
- Emulator: kiểm tra emulator đã boot xong chưa (thấy màn hình home của Android).

Nếu `adb` báo không tìm thấy lệnh, thêm thư mục `platform-tools` của Android SDK vào biến môi trường `PATH`. Đường dẫn mặc định:

| OS      | Đường dẫn                                   |
| ------- | ------------------------------------------- |
| macOS   | `~/Library/Android/sdk/platform-tools`      |
| Linux   | `~/Android/Sdk/platform-tools`              |
| Windows | `%LOCALAPPDATA%\Android\Sdk\platform-tools` |

Tick hết checkpoint bên phải nghĩa là phần khó nhất của ngày đầu đã qua. Máy của bạn giờ có đủ JDK, Android Studio, SDK Platform 37 và 36, và một nơi để app hiện ra: đúng những gì cần để bắt đầu build.

## Checklist thực hành

- [ ] `java -version` in ra 17 trở lên
- [ ] Android Studio bản stable mở được, không báo thiếu SDK
- [ ] SDK Manager có tick xanh ở **Android SDK Platform 37.0** và **Android SDK Platform 36**
- [ ] Plugin Kotlin Multiplatform đã cài, IDE đã restart
- [ ] `adb devices` liệt kê ít nhất một device chạy Android 7.0 trở lên
- [ ] Nếu dùng macOS: `kdoctor` sạch, simulator mở được

---

- Bài tiếp theo: [App KMP đầu tiên trên Android và iOS](https://dantech.academy/courses/kotlin-mobile-101/00-setup-first-run/lesson-02-first-app-on-device.md)
