Dan Tech Academy
Sau bài này bạn sẽ
  • Xác thực GitHub access bằng GitHub CLI và clone private course repository
  • Mở đúng repository root trong Android Studio thay vì một nested module folder
  • Hiểu Gradle sync đầu tiên làm gì với project KMP và phân loại error đầu tiên khi sync fail
Thời lượng12 phút
Độ khóBeginner

Clone Repo và Mở Project KMP Lần Đầu

Mở project Kotlin Multiplatform production thật thay vì một toy starter project.

Video đang cập nhật

Video bài học sắp lên sóng

Trong lúc chờ, bạn hãy đọc bản text của bài học bên dưới: đầy đủ lý thuyết, code mẫu và checklist thực hành.

Bản quay đang trong khâu hậu kỳ

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

Sau bài này bạn có:

  • GitHub account đã access được private course repository,
  • Course codebase đã clone vào một workspace cố định,
  • Android Studio đang mở đúng project root,
  • Hiểu Gradle sync đầu tiên làm gì với một project Kotlin Multiplatform.

Trước Khi Clone

Cần đảm bảo ba điều:

  • GitHub access: bạn có account và thấy private repository.
  • Git authentication: máy của bạn clone được code từ GitHub.
  • Project root: Android Studio mở đúng root folder của repo.

Tài liệu official:

Phần 1: Xác Nhận GitHub Access Trong Browser

Mở link course invite trong browser trước và kiểm tra:

  1. Bạn đăng nhập đúng GitHub account đã dùng khi mua khóa học.
  2. Repository page mở được, không trả về 404.
  3. Bạn thấy nút xanh Code hoặc clone URL.

Phần 2: Chọn Cách Authenticate

CáchKhi nào dùngVí dụ
HTTPSDefault đơn giản; hợp với GitHub CLI hoặc credential manager loginhttps://github.com/org/repo.git
SSHHợp nếu bạn đã quen SSH keys và biết cách debug key problemsgit@github.com:org/repo.git

Cài GitHub CLI để khỏi phải copy-paste personal access token vào terminal. Sau đó chạy:

bash
gh --version
gh auth login
gh auth status

Làm theo browser login flow. Khi gh auth status báo bạn đã login đúng account, máy đã có đường authenticate sạch.

Đừng paste personal access token vào notes, screenshots, Discord, support messages hoặc shell history.

Phần 3: Tạo Workspace Cố Định

Đặt repo ở một nơi bạn sẽ giữ suốt khóa học, không phải folder download ngẫu nhiên:

bash
mkdir -p ~/Desktop/kotlin/dan-tech-academy
cd ~/Desktop/kotlin/dan-tech-academy
git clone <course-repo-url>

Dùng đúng private repository URL mà bạn được cấp quyền. Nếu clone báo Repository not found, kiểm tra lại browser access. Nếu clone cứ hỏi authentication, hoàn tất gh auth login hoặc credential manager rồi thử lại.

Phần 4: Mở Đúng Root Folder

Repo có nhiều folder và nhiều module. Bạn phải mở repository root, không mở app, feature, core, shared-app hay iosApp.

Root folder có các file như:

text
settings.gradle.kts
build.gradle.kts
gradlew

Không thấy settings.gradle.kts nghĩa là bạn đang ở sai folder. Mở Android Studio, chọn Open, chọn repo root và để IDE import Gradle project. Chỉ root folder mới cho Gradle biết toàn bộ danh sách module.

Folder iosApp/ chứa Xcode project. Android Studio không dùng nó. Nếu bạn có Mac, đây là project bạn mở bằng Xcode để chạy bản iOS.

Phần 5: Để Gradle Sync Chạy Xong

Tài liệu official: Gradle build lifecycle.

Sync đầu tiên chậm vì Gradle dựng model của project:

  • Đọc settings.gradle.kts để biết các module được include.
  • Build build-logic/, nơi chứa convention plugin dùng chung cho mọi module.
  • Đọc build file của từng module.
  • Tải Gradle wrapper, plugins và library dependencies (Kotlin Multiplatform, Android Gradle Plugin, Compose Multiplatform, Koin, Ktor...).
  • Dựng index để Android Studio hiểu code trong commonMain, androidMain và iosMain.

Đừng cancel sync chỉ vì progress bar đứng yên. Chờ tới khi có success rõ ràng hoặc error đầu tiên rõ ràng. Stack trace dài thường chỉ có một nguyên nhân thật, nằm gần phía trên.

Định Hướng Nhanh

Bạn chỉ cần bản đồ thô lúc này để biết mỗi folder chứa gì.

Khu vựcCách hiểu cho người mới
appAndroid entry point
iosAppXcode project, iOS entry point (không phải Gradle module)
shared-appPhần app dùng chung cho cả hai nền tảng: khởi động, navigation
featureScreens và user flows
domainUse cases và business rules
dataRepository implementations và external services
core, kernelShared technical foundations
themeDesign system styling
ui-componentsUI building blocks dùng lại

Bảng Xử Lý Lỗi

Dạng lỗiKiểm tra trước
Repository page trả về 404Sai GitHub account hoặc chưa accept invite
Repository not found khi cloneBrowser access và clone URL
Authentication cứ hỏi lạigh auth status hoặc Git credential manager
Android Studio không có Gradle taskBạn mở nested folder thay vì repo root
Không tìm thấy SDKMở SDK Manager và xác nhận SDK location
Gradle không tải được dependenciesNetwork, proxy, VPN hoặc repo access
Cannot find a Java installation ... languageVersion=17Máy chưa có JDK 17. Cài JDK 17 và đặt JAVA_HOME trỏ vào nó
Plugin version errorCập nhật Android Studio stable mới nhất (repo dùng AGP 9)
Thiếu google-services.jsonCần tải file này từ Firebase Console vào app/ rồi mới build app đầy đủ

Checkpoint

bash
git status

Bạn hoàn tất bài này khi:

  • Android Studio đang mở repository root.
  • Gradle sync thành công. Nếu sync fail, bạn đã copy được error đầu tiên và phân loại nó: access, SDK, JDK, network, dependency hay thiếu local config.
Đăng nhập