Phát triển mã lặp lại

Là nhà phát triển thiết bị di động, bạn thường phát triển giao diện người dùng của ứng dụng theo từng bước thay vì phát triển mọi thứ cùng một lúc. Android Studio áp dụng phương pháp này cùng với Jetpack Compose bằng cách cung cấp các công cụ không yêu cầu bản dựng đầy đủ để kiểm tra, sửa đổi các giá trị và xác minh kết quả cuối cùng.

Chỉnh sửa trực tiếp

Chỉnh sửa trực tiếp là một tính năng cho phép bạn cập nhật các thành phần kết hợp trong trình mô phỏng và thiết bị thực theo thời gian thực. Chức năng này giảm thiểu việc chuyển đổi ngữ cảnh giữa thao tác viết và tạo ứng dụng, cho phép bạn tập trung viết mã trong thời gian dài hơn mà không bị gián đoạn.

Tính năng Chỉnh sửa trực tiếp có 3 chế độ:

  • Thủ công: Các thay đổi đối với mã được áp dụng khi được đẩy theo cách thủ công bằng tổ hợp phím Control + \ (Command + \ đối với macOS)
  • Lưu theo cách thủ công: Các thay đổi đối với mã được áp dụng khi được lưu thủ công bằng tổ hợp phím Control + S (Command + S đối với macOS).
  • Tự động: Các thay đổi được áp dụng trong thiết bị hoặc trình mô phỏng khi bạn cập nhật một hàm có khả năng kết hợp.

Chế độ Chỉnh sửa trực tiếp tập trung vào những thay đổi về mã liên quan đến giao diện người dùng và trải nghiệm người dùng. Tính năng này không hỗ trợ các thay đổi như cập nhật chữ ký của phương thức, thêm phương thức mới hoặc các thay đổi đối với hệ phân cấp của lớp. Để biết thêm thông tin, hãy xem danh sách Các giới hạn của tính năng Chỉnh sửa trực tiếp.

Tính năng này không thay thế cho hoạt động tạo và chạy ứng dụng hoặc cho tính năng Áp dụng các thay đổi. Thay vào đó, tính năng này được thiết kế để tối ưu hoá quy trình làm việc khi bạn tạo, triển khai và làm đi làm lại nhằm phát triển giao diện người dùng trong Compose.

Quy trình thực hành các phương pháp hay nhất như sau:

  1. Thiết lập để ứng dụng của bạn có thể chạy.
  2. Chỉnh sửa trực tiếp nhiều nhất có thể, cho đến khi bạn cần thực hiện thay đổi mà tính năng Chỉnh sửa trực tiếp không hỗ trợ, chẳng hạn như thêm phương thức mới trong khi ứng dụng đang chạy.
  3. Sau khi bạn thực hiện một thay đổi không được hỗ trợ, hãy nhấp vào biểu tượng Chạy Biểu tượng chạy để khởi động lại ứng dụng và tiếp tục tính năng Chỉnh sửa trực tiếp.

Làm quen với tính năng Chỉnh sửa trực tiếp

Để bắt đầu, hãy làm theo các bước sau để tạo một Hoạt động Compose trống, bật tính năng Chỉnh sửa trực tiếp cho dự án và thực hiện thay đổi bằng tính năng Chỉnh sửa trực tiếp.

Thiết lập dự án mới

  1. Trước khi bạn bắt đầu, hãy đảm bảo bạn đã cài đặt Android Studio Giraffe trở lên và cấp độ API của thiết bị thực hoặc trình mô phỏng là từ 30 trở lên.

  2. Mở Android Studio rồi chọn New Project (Dự án mới) trong hộp thoại Welcome to Android Studio (Chào mừng bạn đến với Android Studio). Nếu đã mở một dự án, bạn có thể tạo một dự án mới bằng cách chuyển đến File > New > New Project (Tệp > Mới > Dự án mới).

  3. Chọn mẫu Empty Compose Activity cho Điện thoại và máy tính bảng, rồi nhấp vào Tiếp theo.

    Chọn mẫu trong Android Studio
    Hình 1. Các mẫu bạn có thể chọn. Đối với tính năng Chỉnh sửa trực tiếp, hãy chọn Empty Compose Activity (Hoạt động trống trong Compose).
  4. Điền các thông tin bắt buộc: tên, tên gói, vị trí lưu, SDK tối thiểu và ngôn ngữ cấu hình bản dựng vào hộp thoại New Project (Dự án mới).

    Ví dụ về các chế độ cài đặt dự án ở Bước 4 được nhập trong Android Studio
    Hình 2. Ví dụ về chế độ cài đặt dự án.
  5. Nhấp vào Hoàn tất.

Bật tính năng Chỉnh sửa trực tiếp

  1. Chuyển đến phần cài đặt để bật tính năng Chỉnh sửa trực tiếp.

    • Trên Windows hoặc Linux, hãy chuyển đến File > Settings > Editor > Live Edit (Tệp > Cài đặt > Trình chỉnh sửa > Chỉnh sửa trực tiếp).
    • Trên macOS, hãy chuyển đến Android Studio > Settings > Editor > Live Edit (Android Studio > Cài đặt > Trình chỉnh sửa > Chỉnh sửa trực tiếp).
  2. Chọn tuỳ chọn Live Edit (Chỉnh sửa trực tiếp) và chế độ bạn muốn chạy trong phần cài đặt.

    Ở chế độ thủ công, những thay đổi đối với mã sẽ được áp dụng mỗi khi bạn nhấn tổ hợp phím Control + \ (hoặc Command + \ đối với macOS). Ở chế độ thủ công khi lưu, những thay đổi về mã sẽ được áp dụng mỗi khi bạn lưu thủ công, bằng cách sử dụng tổ hợp phím Control + S (Command + S trên macOS). Ở chế độ tự động, những thay đổi về mã sẽ được áp dụng trong thiết bị hoặc trình mô phỏng khi bạn thay đổi.

    Giao diện người dùng có hộp đánh dấu tính năng Live Edit (Chỉnh sửa trực tiếp) trong phần cài đặt Android Studio
    Hình 3. Phần cài đặt của tính năng Chỉnh sửa trực tiếp.
  3. Trong trình chỉnh sửa, hãy mở tệp MainActivity. Đây là điểm truy cập cho ứng dụng của bạn.

  4. Nhấp vào biểu tượng Chạy Nút giao diện người dùng để triển khai ứng dụng.

  5. Sau khi bạn bật tính năng Chỉnh sửa trực tiếp, dấu kiểm Up-to-date (Đã cập nhật) màu xanh lục sẽ xuất hiện ở góc trên cùng bên phải của cửa sổ công cụ Running Devices (Thiết bị đang chạy):

    Giao diện người dùng có dấu kiểm màu xanh lục của tính năng Chỉnh sửa trực tiếp

Thực hiện và xem lại các thay đổi

Khi bạn thực hiện các thay đổi được hỗ trợ trong trình chỉnh sửa, thiết bị kiểm thử thực hoặc ảo sẽ tự động cập nhật.

Ví dụ: chỉnh sửa phương thức Greeting hiện có trong MainActivity thành như sau:

@Composable
fun Greeting(name: String) {
    Text(
        text = "Hello $name!",
        Modifier
            .padding(80.dp) // Outer padding; outside background
            .background(color = Color.Cyan) // Solid element background color
            .padding(16.dp) // Inner padding; inside background, around text)
    )
}

Các thay đổi của bạn sẽ xuất hiện ngay lập tức trên thiết bị kiểm thử, như trong hình 4.

Các thay đổi đối với phương thức Greeting được áp dụng trên thiết bị
Hình 4. Thiết bị kiểm thử hiển thị các thay đổi về tính năng Chỉnh sửa trực tiếp đối với phương thức Greeting.

Khắc phục sự cố đối với tính năng Chỉnh sửa trực tiếp

Nếu bạn không thấy nội dung chỉnh sửa của mình trên thiết bị kiểm thử, có thể Android Studio đã không cập nhật được nội dung bạn đã chỉnh sửa. Kiểm tra xem tính năng Chỉnh sửa trực tiếp có hiển thị chỉ báo Out Of Date (Đã lỗi thời) như minh hoạ trong hình 5 hay không. Chỉ báo này cho biết có lỗi biên dịch. Để biết thông tin về lỗi và các cách khắc phục được đề xuất, hãy nhấp vào chỉ báo.

Biểu tượng cho biết tính năng Chỉnh sửa trực tiếp đã lỗi thời
Hình 5. Chỉ báo trạng thái của tính năng Chỉnh sửa trực tiếp.

Các giới hạn của tính năng Chỉnh sửa trực tiếp

Dưới đây là danh sách các giới hạn hiện có.

  • [Chỉ áp dụng cho Android Studio Giraffe trở lên] Tính năng Chỉnh sửa trực tiếp yêu cầu Compose Runtime 1.3.0 trở lên. Nếu dự án của bạn sử dụng phiên bản Compose thấp hơn, thì tính năng Chỉnh sửa trực tiếp sẽ bị tắt.

  • [Chỉ áp dụng cho Android Studio Giraffe trở lên] Tính năng Chỉnh sửa trực tiếp yêu cầu AGP 8.1 trở lên. Nếu dự án của bạn sử dụng phiên bản AGP thấp hơn, thì tính năng Chỉnh sửa trực tiếp sẽ bị tắt.

  • Tính năng Chỉnh sửa trực tiếp yêu cầu trình mô phỏng hoặc thiết bị thực phải chạy API cấp 30 trở lên.

  • Tính năng Chỉnh sửa trực tiếp chỉ hỗ trợ chỉnh sửa nội dung hàm, tức là bạn không thay đổi được tên hàm hoặc chữ ký, thêm hoặc xoá hàm hay thay đổi các trường không phải hàm.

  • Tính năng Chỉnh sửa trực tiếp đặt lại trạng thái của ứng dụng trong lần đầu tiên bạn thay đổi hàm Compose trong một tệp. Điều này chỉ xảy ra sau lần thay đổi mã đầu tiên – trạng thái ứng dụng sẽ không được đặt lại khi bạn thay đổi mã tiếp theo đối với các hàm Compose trong tệp đó.

  • Có thể các lớp của tính năng Chỉnh sửa trực tiếp được sửa đổi phải chịu một số hao tổn về hiệu suất. Chạy ứng dụng và dùng bản phát hành sạch nếu bạn đang đánh giá hiệu suất của ứng dụng.

  • Bạn phải thực hiện chạy đầy đủ để trình gỡ lỗi có thể hoạt động trên các lớp mà bạn đã sửa đổi bằng tính năng Chỉnh sửa trực tiếp.

  • Ứng dụng đang chạy có thể gặp sự cố khi bạn chỉnh sửa bằng tính năng Chỉnh sửa trực tiếp. Nếu tình trạng này xảy ra, bạn có thể triển khai lại ứng dụng bằng nút Run (Chạy) Nút giao diện người dùng.

  • Tính năng Chỉnh sửa trực tiếp không thực hiện bất kỳ thao tác nào đối với mã byte được xác định trong tệp bản dựng của dự án. Ví dụ: thao tác với mã byte sẽ được áp dụng khi dự án được tạo bằng các tuỳ chọn trong trình đơn Build (Tạo) hoặc bằng cách nhấp vào nút Build (Tạo) hoặc Run (Chạy).

  • Các hàm không có khả năng kết hợp được cập nhật trực tiếp trên thiết bị hoặc trình mô phỏng và kích hoạt quá trình kết hợp lại. Quá trình kết hợp lại có thể sẽ không gọi hàm được cập nhật. Đối với các hàm không có khả năng kết hợp, bạn phải kích hoạt các hàm mới cập nhật hoặc chạy lại ứng dụng.

  • Tính năng Chỉnh sửa trực tiếp sẽ không tiếp tục quá trình khởi động lại ứng dụng. Bạn phải chạy lại ứng dụng.

  • Tính năng Chỉnh sửa trực tiếp chỉ hỗ trợ các quy trình có thể gỡ lỗi.

  • Tính năng Chỉnh sửa trực tiếp không hỗ trợ các dự án sử dụng giá trị tuỳ chỉnh cho moduleName trong kotlinOptions ở cấu hình bản dựng.

  • Không dùng được tính năng Chỉnh sửa trực tiếp trong quá trình triển khai nhiều triển khai. Điều này có nghĩa là bạn không triển khai được cho một thiết bị và sau đó đến một thiết bị khác. Tính năng Chỉnh sửa trực tiếp chỉ hoạt động trên nhóm thiết bị gần nhất mà ứng dụng được triển khai.

  • Tính năng Chỉnh sửa trực tiếp hoạt động trong quá trình triển khai trên nhiều thiết bị (triển khai cho nhiều thiết bị được tạo thông qua tuỳ chọn Chọn nhiều thiết bị trong trình đơn thả xuống về thiết bị mục tiêu). Tuy nhiên, tính năng này không được hỗ trợ chính thức và có thể gây ra vấn đề. Nếu bạn gặp vấn đề, vui lòng báo cáo vấn đề đó.

  • Tính năng Áp dụng các thay đổi/Áp dụng thay đổi mã không tương thích với tính năng Chỉnh sửa trực tiếp và yêu cầu phải khởi động lại ứng dụng đang chạy.

Câu hỏi thường gặp về tính năng Chỉnh sửa trực tiếp

  • Trạng thái hiện tại của tính năng Chỉnh sửa trực tiếp là gì?

    Tính năng Chỉnh sửa trực tiếp có trong Android Studio Giraffe. Để bật trình chỉnh sửa này, hãy chuyển đến Tệp > Cài đặt > Trình chỉnh sửa > Chỉnh sửa trực tiếp (Android Studio > Cài đặt > Trình chỉnh sửa > Chỉnh sửa trực tiếp trên macOS).

  • Khi nào nên sử dụng tính năng Chỉnh sửa trực tiếp?

    Sử dụng tính năng Chỉnh sửa trực tiếp khi bạn muốn nhanh chóng xem tác động của những nội dung cập nhật đối với các thành phần trải nghiệm người dùng (chẳng hạn như nội dung cập nhật đối với đối tượng sửa đổi và ảnh động) trong trải nghiệm tổng thể của ứng dụng.

  • Khi nào nên tránh sử dụng tính năng Chỉnh sửa trực tiếp?

    Chế độ Chỉnh sửa trực tiếp tập trung vào những thay đổi về mã liên quan đến giao diện người dùng và trải nghiệm người dùng. Thư viện này không hỗ trợ các thay đổi như cập nhật chữ ký của phương thức, thêm phương thức mới hoặc thay đổi hệ phân cấp của lớp. Để biết thêm thông tin, hãy xem Các giới hạn của tính năng Chỉnh sửa trực tiếp.

  • Khi nào nên sử dụng tính năng Xem trước trong Compose?

    Sử dụng tính năng Xem trước trong Compose khi bạn đang phát triển các thành phần kết hợp riêng lẻ. Bản xem trước trực quan hoá các phần tử Compose và tự động làm mới để cho thấy hiệu ứng của các thay đổi về mã. Bản xem trước cũng hỗ trợ xem các thành phần trên giao diện người dùng theo cấu hình và trạng thái khác nhau, chẳng hạn như giao diện tối, ngôn ngữ và tỷ lệ phông chữ.

Chỉnh sửa trực tiếp giá trị cố định (không dùng nữa)

Android Studio có thể cập nhật theo thời gian thực một số giá trị cố định là hằng số được dùng trong các thành phần kết hợp trong bản xem trước, trình mô phỏng và thiết bị thực. Sau đây là một số loại được hỗ trợ:

  • Int
  • String
  • Color
  • Dp
  • Boolean

Video về người dùng thay đổi giá trị cố định trong mã nguồn và bản xem trước cập nhật động

Bạn có thể xem các giá trị cố định liên tục kích hoạt việc cập nhật theo thời gian thực mà không cần bước biên dịch bằng cách bật trang trí giá trị cố định thông qua tính năng Chỉnh sửa trực tiếp của chỉ báo giao diện người dùng dạng chữ:

Bật tính năng Chỉnh sửa trực tiếp các từ ngữ

Áp dụng các thay đổi

Tính năng Apply Changes (Áp dụng các thay đổi) cho phép bạn cập nhật mã và tài nguyên mà không phải triển khai lại ứng dụng cho trình mô phỏng hoặc thiết bị thực (với một số giới hạn).

Mỗi khi thêm, sửa đổi hoặc xoá thành phần kết hợp, bạn có thể cập nhật ứng dụng mà không cần phải triển khai lại bằng cách nhấp vào nút Apply Code Changes (Áp dụng thay đổi mã):

Người dùng nhấp vào nút "Apply changes" (áp dụng các thay đổi)