- 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à phân loại error đầu tiên khi sync fail
Clone Repo và Mở Project Lần Đầu
Mở project app production thật thay vì một toy starter project.
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.
Mục Tiêu Bài Học
Học viên sẽ hoàn thành bài này với:
- GitHub account đã access được private course repository,
- Course codebase đã được clone vào workspace sạch,
- Android Studio đang mở đúng project root,
- Hiểu rõ Gradle sync đầu tiên đang làm gì.
Trước Khi Clone 1 Repo Trên GitHub
Cần đảm bảo:
- GitHub access: Bạn có account, và thấy private repository.
- Git authentication: máy tính của bạn có thể clone được code từ GitHub.
- Project root: Android Studio mở đúng root folder, không phải nested module.
Tài liệu official:
Phần 1: Xác Nhận GitHub Access Trong Browser
Nếu course invite trỏ tới private GitHub repository, hãy mở link đó trong browser trước.
Kiểm tra các điểm này trước khi chạm vào terminal:
- Đã đăng nhập đúng GitHub account khi mua Khóa Học.
- Repository page mở được và không trả về
404. - Thấy nút xanh
Codehoặc clone URL.
Phần 2: Chọn Cách Authenticate
Có hai cách clone phổ biến:
| Cách | Khi nào dùng | Ví dụ |
|---|---|---|
| HTTPS | Default đơn giản; hợp với GitHub CLI hoặc credential manager login | https://github.com/org/repo.git |
| SSH | Hợp nếu bạn đã quen SSH keys và biết cách debug key problems | git@github.com:org/repo.git |
Bạn hãy cài GitHub CLI. Việc này sẽ giúp bạn không phải copy-paste personal access token vào terminal commands.
Cài xong CLI, chạy:
gh --version
gh auth login
gh auth status
Làm theo browser login flow. Nếu gh auth status báo bạn đã login đúng account, máy này đã có authentication path sạch.
Đừng paste personal access token vào notes, screenshots, Discord, support messages hoặc shell history.
Phần 3: Tạo Workspace Sạch
Đừng clone course repository vào một folder download ngẫu nhiên. Hãy đặt nó ở nơi bạn sẽ giữ xuyên suốt course.
Ví dụ tốt:
mkdir -p ~/Desktop/kotlin/dan-tech-academy
cd ~/Desktop/kotlin/dan-tech-academy
Bây giờ clone repository URL từ course dashboard hoặc GitHub access invite:
git clone <course-repo-url>
Dùng đúng private repository URL mà bạn được cấp quyền.
Nếu clone fail với Repository not found, hãy kiểm tra browser access trước.
Nếu clone fail vì authentication prompt, hoàn tất GitHub CLI login hoặc credential manager setup rồi thử lại.
Phần 4: Mở Đúng Android Studio Folder
Android project thường có nhiều folder. Bạn phải mở repository root:
- không phải folder
app, - không phải
feature, - không phải
core, - không phải một nested module.
Root folder nên có các file/folder tương tự:
settings.gradle.kts
build.gradle.kts
...
Nếu bạn không thấy settings.gradle.kts, hãy dừng lại. Khả năng cao bạn đang ở sai folder.
Mở Android Studio, chọn Open, rồi chọn repo root folder. Để IDE import Gradle project.
Đây là chỗ người mới rất hay mất một giờ: Android Studio mở được nhiều folder, nhưng chỉ root folder mới cho Gradle đủ bản đồ project.
Phần 5: Để Gradle Sync Chạy Xong
Tài liệu official: Gradle build lifecycle.
First sync có thể chậm vì Gradle đang dựng local model cho project. Thường nó cần:
- Đọc
settings.gradle.ktsđể tìm included modules. - Đọc project và module build files.
- Tải Gradle plugins và library dependencies.
- Resolve Kotlin, Android Gradle Plugin, Compose và test tooling versions.
- Build IDE indexes để Android Studio hiểu code.
Đây là bình thường. Đừng cancel first sync chỉ vì progress bar đứng yên.
Nguyên tắc rất đơn giả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, Chưa Cần Tìm Hiểu Sâu Về Module
Bạn chỉ cần bản đồ thô, chưa cần đi sâu vào từng module vội:
| Khu vực | Cách hiểu cho người mới |
|---|---|
app | App entry point và wiring |
feature | Screens và user flows |
domain | Use cases và business rules |
data | Repository implementations và external services |
core | Shared technical foundations |
theme | Design system styling |
ui-components | UI building blocks dùng lại |
Chúng ta sẽ học architecture kỹ ở các module sau. Hiện tại, chiến thắng rất đơn giản: bạn mở được project và biết mình đang đứng ở đâu.
Bảng Xử Lý Lỗi
| Dạng lỗi | Kiểm tra trước |
|---|---|
Repository page trả về 404 | Sai GitHub account hoặc chưa accept invite |
Repository not found khi clone | Browser access và clone URL |
| Authentication cứ hỏi lại | gh auth status hoặc Git credential manager |
| Android Studio không có Gradle task | Bạn mở nested folder thay vì repo root |
| Không tìm thấy SDK | Mở SDK Manager và xác nhận SDK location |
| Gradle không tải được dependencies | Kiểm tra network, proxy, VPN hoặc repo access |
| JDK mismatch | Dùng bundled JDK của Android Studio |
| Plugin version error | Xác nhận bạn đang mở đúng repo branch |
Thiếu google-services.json | Học tiếp bài 04 trước khi kỳ vọng full app build |
Checkpoint
Trước khi qua bài tiếp theo, ghi lại trạng thái clone và open-project:
git status
Bạn hoàn tất bài này khi:
- Android Studio đang mở repository root, không phải nested folder.
- Gradle sync thành công, hoặc nếu sync fail, bạn đã copy được error rõ ràng đầu tiên và phân loại nó là access, SDK, JDK, network, dependency hoặc missing local config.