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:
- Tải nguồn Android xuống.
Chuyển đến thư mục Winscope:
cd development/tools/winscope
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
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
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:
Tạo
:framework-minus-apex-intdefs
để bộ tiền xử lý chú thích chạy:mp :framework-minus-apex-intdefs
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
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ặ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 một đị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 (master, 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 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.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 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
.
- 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