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:
- Tải nguồn Android xuống.
Chuyển đến thư mục Winscope:
cd development/tools/winscope
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
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
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ủatrace_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:
Tạo
:framework-minus-apex-intdefs
để trình xử lý trước chú giải chạy:mp :framework-minus-apex-intdefs
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
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ặcTypeError: 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.
- Đả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).
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.json
vàpackage-lock.json
. Xoánode_modules
. Chạy lạinpm install
.
- Huỷ bỏ các thay đổi đối với
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
.
- 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