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

Là nhà phát triển ứng dụng dành cho 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 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 với Jetpack Compose bằng cách cung cấp các công cụ không yêu cầu một bản dựng đầy đủ để kiểm tra, sửa đổi 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 việc viết và tạo ứng dụng, nhờ đó, bạn có thể tập trung nhiều hơn vào việc viết mã 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: Thay đổi mã được áp dụng khi chúng được đẩy theo cách thủ công bằng Ctrl+' (Command+' đối với macOS)
  • Thủ công khi lưu: Áp dụng các thay đổi đối với mã khi các thay đổi này được lưu thủ công bằng cách sử dụng tổ hợp phím Control+S (Command+S trên macOS).
  • Tự động: Các thay đổi sẽ được áp dụng trong thiết bị hoặc trình mô phỏng khi bạn cập nhậ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 Chạy
biểu tượng để khởi động lại ứng dụng của bạn và tiếp tục 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 của bạn và thực hiện các 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ắ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, thì bạn có thể tạo 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. Bạn có thể lựa chọn trong số các mẫu. Đối với tính năng Chỉnh sửa trực tiếp, chọn Empty Compose Activity (Hoạt động Compose trống).
  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 vào Android Studio
    Hình 2. Ví dụ về các 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, các thay đổi đối với mã sẽ được đẩy mỗi khi bạn nhấn tổ hợp phím Control+' (Command+' trên macOS). Ở chế độ thủ công đang bật những thay đổi này sẽ được áp dụng mỗi khi bạn lưu theo cách thủ công sử dụng Control+S (Command+S trên macOS). Ở chế độ tự động, các thay đổi đối với mã sẽ được áp dụng trong thiết bị của bạn hoặc khi bạn thực hiện các thay đổi.

    Giao diện người dùng có hộp đánh dấu tính năng Chỉnh sửa trực tiếp trong phần cài đặt Android Studio
    Hình 3. Chế độ 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 Cập nhật màu xanh lục sẽ xuất hiện trong ở trên cùng bên phải 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ư minh hoạ 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ị thử nghiệm hiển thị các thay đổi của 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ố xảy ra 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 chỉ báo của tính năng Chỉnh sửa trực tiếp có hiển thị thông báo Hết hạn như trong hình 5, cho biết 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ị vô hiệu hoá.

  • [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.0-alpha05 hoặc cao hơn. Nếu dự án của bạn sử dụng phiên bản thấp hơn của AGP, tính năng Chỉnh sửa trực tiếp đã bị tắt.

  • Tính năng Chỉnh sửa trực tiếp yêu cầu một thiết bị thực hoặc trình mô phỏng đang chạy cấp độ API 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, nghĩa là bạn không thể thay đổi tên hàm hoặc chữ ký, thêm hoặc xóa hàm hoặc thay đổi các trường không phải hàm.

  • Tính năng Chỉnh sửa trực tiếp sẽ đặt lại trạng thái của ứng dụng vào 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 không được đặt lại bằng các thay đổi mã tiếp theo mà bạn thực hiện đố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 của bạn và sử dụng một bản phát hành sạch nếu bạn đang đánh giá hiệu suất.

  • Bạn phải chạy đầy đủ để trình gỡ lỗi 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 điều 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 thao tác đố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 mã byte sẽ là được áp dụng khi tạo dự án 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 toàn bộ 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 bộ 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 với các phương thức triển khai nhiều thiết bị (triển khai cho nhiều thiết bị được tạo thông qua tính năng Chọn nhiều thiết bị trong trình đơn thiết bị mục tiêu thả xuống). 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 chúng.

  • Tính năng Áp dụng các thay đổi/Áp dụng các thay đổi về 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 khởi động lại ứng dụng đang chạy.

  • Tính năng Chỉnh sửa trực tiếp hiện không hỗ trợ các dự án Android Automotive.

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. Cách bật tính năng này: chuyển đến Tệp > Cài đặt > Người chỉnh sửa > Chỉnh sửa trực tiếp (Android Studio > Cài đặt > Người chỉnh sửa > Live Edit (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 thấy những 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ư các cập nhật về đối tượng sửa đổi và ảnh động) có hiệu lực trong trải nghiệm tổng thể của ứng dụng.

  • Khi nào tôi 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. 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 phần Các giới hạn của tính năng Chỉnh sửa trực tiếp.

  • Khi nào tôi 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ẻ. Xem trước trực quan hoá các thành phần Compose và tự động làm mới để hiển thị tác động của việc thay đổi 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ác cấu hình và trạng thái, 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 các giá trị cố định trong mã nguồn, khi đó bản xem trước cập nhật theo phương thức động

Bạn có thể xem các giá trị cố định liên tục kích hoạt bản 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:

Bật tính năng Chỉnh sửa trực tiếp
Giá trị cố định

Áp dụng thay đổi

Áp dụng 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 trên trình mô phỏng hoặc thiết bị thực (có một số giới hạn).

Bất cứ khi nào 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 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 "áp dụng thay đổi"