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 trên máy.

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 phần phụ thuộc bằng cách sử dụng:

    npm install
    

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

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

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

    npm run start
    

Tạo 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 của 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 bài kiểm thử đơn vị và kiểm thử toàn diện. Để chạy các lệnh này, hãy sử dụng npm run <command>:

Lệnh Mô tả
test:unit:ci Chạy kiểm thử đơn vị ở định dạng ít chi tiết hơn cho CI
hoặc trình bổ trợ gửi trước.
test:unit:dev Chạy kiểm thử đơn vị ở định dạng chi tiết hơn để 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 bài 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 nhiều công cụ
.
test:presubmit:quiet Tạo tất cả các bài kiểm thử đơn vị, trình tìm lỗi mã nguồn và phân tích biểu đồ
trước khi gửi ở định dạng ít chi tiết hơn cho CI hoặc trình kích hoạt
trước khi gửi.
test:presubmit Tạo tất cả các chương trình kiểm thử đơn vị, trình tìm lỗi mã nguồn và phân tích
đồ thị trước khi gửi ở định dạng chi tiết hơn để phát triển
cục bộ.
test:all Chạy tất cả các chương trình kiểm thử (đơn vị và toàn diện), trình tìm lỗi mã nguồn và phân tích biểu đồ
ở định dạng chi tiết hơn để phát triển
cục bộ.

Cập nhật ánh xạ @IntDef

@IntDef là một chú giải 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ố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 để trình xử lý trước chú giải chạy:

    mp :framework-minus-apex-intdefs
    
  2. Sao chép tệp intDefMapping.json đã tạo vào kho lưu trữ 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 trong Winscope lên bằng repo upload.

Các lệnh khác

Ngoài bản dựng và kiểm thử, tập lệnh Winscope còn chứa các chức năng khác, như minh hoạ trong bảng. Để chạy các lệnh 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 prettier.
format:fix Kiểm tra và tự động khắc phục các vấn đề về định dạng mã bằng prettier.
eslint:check Kiểm tra các vấn đề về định dạng mã bằ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 eslint.
tslint:check Kiểm tra các vấn đề về định dạng mã bằ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 tslint.
deps_graph:check_cycles Phân tích mã để tìm các phần phụ thuộc tuần hoàn.

Khắc phục sự cố

Hãy sử dụng các mẹo sau đây để 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 đị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 (chính, 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 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 bản dựng)

    • 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 thị các trường mới, hãy tạo lại protos bằng npm run build:protos.