Chạy Winscope

Tính năng theo dõi Winscope là một phần của khung Android. Trang này trình bày các bước cần thiết để tải xuống, tạo và chạy trình xem dấu vết Winscope cục bộ.

Tạo Winscope cục bộ

Làm theo các bước sau để thiết lập máy tính chạy trình theo dõi Winscope:

  1. Tải nguồn Android xuống.
  2. Chuyển đến thư mục Winscope:

    cd development/tools/winscope
    
  3. Cài đặt các phần phụ thuộc bằng cách sử dụng:

    npm install
    

    Để xem danh sách các lệnh hiện có, hãy chạy: npm run

  4. Tạo tất cả các mục tiêu kiểm thử và mục tiêu phát hành công khai bằng cách sử dụng:

    npm run build:prod
    
  5. Chạy Winscope bằng cách:

    npm run start
    

Xây dựng các phần riêng biệt

Bạn có thể tạo riêng từng phần của Winscope bằng các lệnh sau:

Lệnh Mô tả
build:trace_processor Kiểm tra và tạo lại phiên bản mới nhất của
trace_processor Perfetto.
build:protos Biên dịch lại các định nghĩa proto.

Chạy chương trình kiểm thử

Winscope chứa các kiểm thử đơn vị và kiểm thử toàn diện. Để chạy các kiểm thử này, hãy sử dụng npm run <command>:

Lệnh Mô tả
test:unit:ci Chạy các kiểm thử đơn vị ở định dạng ít chi tiết hơn cho CI
hoặc lệnh gọi trước khi gửi.
test:unit:dev Chạy các kiểm thử đơn vị ở định dạng chi tiết hơn cho quá trình phát triển cục bộ
. Chế độ này theo dõi các thay đổi và tự động chạy lại các quy trình kiểm thử chính xác.
test:e2e Chạy các kiểm thử toàn diện, chẳng hạn như các kiểm thử cho giao thức
trên nhiều công cụ.
test:presubmit:quiet Tạo tất cả các kiểm thử đơn vị trước khi gửi, trình kiểm tra và phân tích biểu đồ
ở định dạng ít chi tiết hơn cho CI hoặc lệnh gọi trước khi gửi
.
test:presubmit Tạo tất cả các chương trình kiểm thử đơn vị trước khi gửi, trình kiểm tra và phân tích đồ thị
ở định dạng chi tiết hơn cho quá trình phát triển cục bộ
.
test:all Chạy tất cả các kiểm thử (đơn vị và toàn bộ), trình kiểm tra lỗi và phân tích biểu đồ
ở định dạng chi tiết hơn cho quá trình phát triển cục bộ.

Kiểm thử toàn diện

Trước khi chạy các kiểm thử từ đầu đến cuối, bạn phải khởi động công cụ từ xa và cài đặt đúng phiên bản trình điều khiển Chrome. Trong đoạn mã sau, lệnh run test:e2e sẽ tự động cài đặt trình điều khiển Chrome.

$ npm run start
$ npm run start:remote_tool_mock
$ npm run test:e2e

Bảng sau đây liệt kê các lệnh cần thiết và nội dung mô tả của các lệnh đó. Để chạy các lệnh này, hãy sử dụng npm run command:

Lệnh Mô tả
start:remote_tool_mock Khởi động mô hình công cụ từ xa để kiểm thử giao thức giữa các công cụ.
install:chromedriver Cài đặt trình điều khiển Chrome cần thiết để chạy các kiểm thử toàn diện.

Cập nhật mối liên kết @IntDef

@IntDef là một chú giải được dùng trong Android để hạn chế các giá trị có thể có của một số nguyên. Winscope sử dụng một mối liên kết của các chú thích này để hiển thị tên của giá trị thay vì số nguyên.

Để cập nhật mối liên kết @IntDef, hãy làm như sau:

  1. Tạo :framework-minus-apex-intdefs để bộ tiền xử lý chú thích chạy:

    mp :framework-minus-apex-intdefs
    
  2. Sao chép tệp intDefMapping.json đã tạo vào kho lưu trữ được tạo sẵn:

    $ python3 -c 'import sys,json,collections; print(json.dumps(collections.OrderedDict(sorted(collections.ChainMap(*map(lambda x:json.load(open(x)), sys.argv[1:])).items())), indent=2))' $(find out/soong/.intermediates/frameworks/base -iname intDefMapping.json) > ./development/tools/winscope/src/common/intDefMapping.json
    
  3. Tải các thay đổi lên Winscope bằng cách sử dụng repo upload.

Các lệnh khác

Ngoài các bản dựng và kiểm thử, tập lệnh Winscope còn có các chức năng khác, như minh hoạ trong bảng. Để chạy các kiểm thử này, hãy sử dụng npm run command:

Lệnh Mô tả
format:check Kiểm tra các vấn đề về định dạng mã bằng cách sử dụng prettier.
format:fix Kiểm tra và tự động khắc phục các vấn đề về định dạng mã bằng cách sử dụng prettier.
eslint:check Kiểm tra các vấn đề về định dạng mã bằng cách sử dụng eslint.
eslint:fix Kiểm tra và tự động khắc phục các vấn đề về định dạng mã bằng cách sử dụng eslint.
tslint:check Kiểm tra các vấn đề về định dạng mã bằng cách sử dụng tslint.
tslint:fix Kiểm tra và tự động khắc phục các vấn đề về định dạng mã bằng cách sử dụng tslint.
deps_graph:check_cycles Phân tích mã để tìm các phần phụ thuộc theo chu kỳ.

Khắc phục sự cố

Hãy làm theo các mẹo sau để khắc phục sự cố:

  • Lỗi ProtocolError: missing required '<FIELD>' hoặc TypeError: Cannot read property '<PROP>' of null

    • Điều này xảy ra khi tệp theo dõi được tạo bằng một định nghĩa proto mới, chứa các trường bắt buộc mới.

      1. Đảm bảo bạn đang mở dấu vết trên đúng phiên bản Winscope (master, S hoặc R).
      2. Nếu bạn tạo trường mới trên proto, hãy biên dịch lại các proto trong Winscope bằng cách sử dụng npm run build:protos.

  • Một số phiên bản phần phụ thuộc đã cài đặt không chính xác (không tạo được)

    • Huỷ bỏ các thay đổi đối với package.jsonpackage-lock.json. Xoá node_modules. Chạy lại npm install.
  • Tôi đã thêm một trường mới vào một trong các tệp proto. Làm cách nào để hiển thị thông tin này?

    • Winscope sử dụng các định nghĩa proto từ thời điểm được biên dịch, vì vậy, các trường mới sẽ không xuất hiện theo mặc định. Để hiện các trường mới, hãy tạo lại các proto bằng cách sử dụng npm run build:protos.