การติดตาม Winscope เป็นส่วนหนึ่งของเฟรมเวิร์ก Android หน้านี้อธิบาย ขั้นตอนที่จำเป็นในการดาวน์โหลด สร้าง และเรียกใช้โปรแกรมดูการติดตาม Winscope ในเครื่อง
สร้าง Winscope ในเครื่อง
ทำตามขั้นตอนต่อไปนี้เพื่อตั้งค่าคอมพิวเตอร์ให้เรียกใช้เครื่องมือติดตาม Winscope
- ดาวน์โหลดแหล่งข้อมูล Android
ไปที่โฟลเดอร์ Winscope โดยทำดังนี้
cd development/tools/winscope
ติดตั้งการอ้างอิงโดยใช้คำสั่งต่อไปนี้
npm install
หากต้องการดูรายการคำสั่งที่ใช้ได้ ให้เรียกใช้
npm run
สร้างเป้าหมายการทดสอบและเป้าหมายการผลิตทั้งหมดโดยใช้
npm run build:prod
เรียกใช้ Winscope โดยใช้คำสั่งต่อไปนี้
npm run start
สร้างชิ้นส่วนแยกกัน
คุณสร้างส่วนต่างๆ ของ Winscope แยกกันได้โดยใช้คำสั่งต่อไปนี้
คำสั่ง | คำอธิบาย |
---|---|
build:trace_processor |
ตรวจสอบและสร้างtrace_processor เวอร์ชันล่าสุดของ Perfetto ใหม่ |
build:protos |
คอมไพล์คำจำกัดความของโปรโตอีกครั้ง |
ทำการทดสอบ
Winscope มีการทดสอบหน่วยและการทดสอบแบบครบวงจร หากต้องการเรียกใช้ ให้ใช้ npm run
<command>
ดังนี้
คำสั่ง | คำอธิบาย |
---|---|
test:unit:ci |
เรียกใช้การทดสอบหน่วยในรูปแบบที่มีรายละเอียดน้อยกว่าสำหรับ CI หรือฮุกก่อนส่ง |
test:unit:dev |
เรียกใช้การทดสอบหน่วยในรูปแบบที่ละเอียดกว่าสำหรับ การพัฒนาในเครื่อง โหมดนี้จะตรวจสอบการเปลี่ยนแปลงและ เรียกใช้การทดสอบที่ถูกต้องอีกครั้งโดยอัตโนมัติ |
test:e2e |
เรียกใช้การทดสอบแบบครบวงจร เช่น การทดสอบสำหรับ โปรโตคอลข้ามเครื่องมือ |
test:presubmit:quiet |
สร้างการทดสอบหน่วยก่อนส่งทั้งหมด, Linter และการวิเคราะห์กราฟ ในรูปแบบที่กระชับมากขึ้นสำหรับ CI หรือฮุกก่อนส่ง |
test:presubmit |
สร้างการทดสอบ 1 หน่วยก่อนส่ง, Linter และการวิเคราะห์กราฟ ทั้งหมดในรูปแบบที่ละเอียดมากขึ้นสำหรับการพัฒนาในเครื่อง |
test:all |
เรียกใช้การทดสอบทั้งหมด (Unit Test และการทดสอบจากต้นทางถึงปลายทาง) เครื่องมือตรวจสอบโค้ด และ การวิเคราะห์กราฟในรูปแบบที่ละเอียดกว่าสำหรับการพัฒนาในเครื่อง |
การทดสอบตั้งแต่ต้นจนจบ
ก่อนที่จะเรียกใช้การทดสอบแบบครบวงจร คุณต้องเริ่มเครื่องมือระยะไกลและติดตั้ง Chrome Driver เวอร์ชันที่ถูกต้อง ในข้อมูลโค้ดต่อไปนี้ คำสั่ง
run test:e2e
จะติดตั้งไดรเวอร์ Chrome โดยอัตโนมัติ
$ npm run start
$ npm run start:remote_tool_mock
$ npm run test:e2e
ตารางต่อไปนี้แสดงคำสั่งที่จำเป็นและคำอธิบาย หากต้องการเรียกใช้
ให้ใช้ npm run command
คำสั่ง | คำอธิบาย |
---|---|
start:remote_tool_mock |
เริ่มการจำลองเครื่องมือระยะไกลเพื่อทดสอบโปรโตคอลข้ามเครื่องมือ |
install:chromedriver |
ติดตั้งไดรเวอร์ Chrome ที่จำเป็นต่อการเรียกใช้การทดสอบแบบครบวงจร |
อัปเดตการแมป @IntDef
@IntDef
เป็นคำอธิบายประกอบที่ใช้ใน Android เพื่อจำกัดค่าที่เป็นไปได้ของจำนวนเต็ม
Winscope ใช้การแมปคำอธิบายประกอบเหล่านี้เพื่อแสดงชื่อของ
ค่าแทนจำนวนเต็ม
หากต้องการอัปเดตการแมป @IntDef
ให้ทำดังนี้
สร้าง
:framework-minus-apex-intdefs
เพื่อให้ตัวประมวลผลล่วงหน้าของคำอธิบายประกอบทำงานmp :framework-minus-apex-intdefs
คัดลอกไฟล์
intDefMapping.json
ที่สร้างขึ้นไปยังที่เก็บ prebuilts$ 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
อัปโหลดการเปลี่ยนแปลงใน Winscope โดยใช้
repo upload
คำสั่งอื่นๆ
นอกเหนือจากการสร้างและการทดสอบแล้ว สคริปต์ Winscope ยังมีความสามารถอื่นๆ ดังที่แสดงในตาราง
หากต้องการเรียกใช้ ให้ใช้ npm run command
ดังนี้
คำสั่ง | คำอธิบาย |
---|---|
format:check |
ตรวจสอบปัญหาการจัดรูปแบบโค้ดโดยใช้ prettier |
format:fix |
ตรวจสอบและแก้ไขปัญหาการจัดรูปแบบโค้ดโดยอัตโนมัติโดยใช้ prettier |
eslint:check |
ตรวจสอบปัญหาการจัดรูปแบบโค้ดโดยใช้ eslint |
eslint:fix |
ตรวจสอบและแก้ไขปัญหาการจัดรูปแบบโค้ดโดยอัตโนมัติโดยใช้ eslint |
tslint:check |
ตรวจสอบปัญหาการจัดรูปแบบโค้ดโดยใช้ tslint |
tslint:fix |
ตรวจสอบและแก้ไขปัญหาการจัดรูปแบบโค้ดโดยอัตโนมัติโดยใช้ tslint |
deps_graph:check_cycles |
วิเคราะห์โค้ดเพื่อหาการขึ้นต่อกันแบบเวียนกลับ |
แก้ปัญหา
ใช้เคล็ดลับต่อไปนี้ในการแก้ปัญหา
ข้อผิดพลาด
ProtocolError: missing required '<FIELD>'
หรือTypeError: Cannot read property '<PROP>' of null
ปัญหานี้เกิดขึ้นเมื่อสร้างไฟล์การติดตามด้วยคำจำกัดความ Proto ใหม่ ซึ่งมีฟิลด์ใหม่ที่ต้องระบุ
- ตรวจสอบว่าคุณเปิดการติดตามใน Winscope เวอร์ชันที่ถูกต้อง (มาสเตอร์, S หรือ R)
หากสร้างฟิลด์ใหม่ใน Proto ให้คอมไพล์ Proto อีกครั้งใน Winscope โดยใช้
npm run build:protos
เวอร์ชันทรัพยากร Dependency ที่ติดตั้งบางรายการไม่ถูกต้อง (บิลด์ไม่สำเร็จ)
- เปลี่ยนกลับการเปลี่ยนแปลงใน
package.json
และpackage-lock.json
นำออกnode_modules
เรียกใช้npm install
อีกครั้ง
- เปลี่ยนกลับการเปลี่ยนแปลงใน
ฉันเพิ่มฟิลด์ใหม่ลงในไฟล์ Proto ไฟล์หนึ่ง ฉันจะแสดงข้อมูลนี้ได้อย่างไร
- Winscope ใช้คำจำกัดความของ Proto จากตอนที่คอมไพล์ ดังนั้นฟิลด์ใหม่
จึงไม่ปรากฏโดยค่าเริ่มต้น หากต้องการแสดงฟิลด์ใหม่ ให้สร้างโปรโตคอลบัฟเฟอร์ใหม่
โดยใช้
npm run build:protos
- Winscope ใช้คำจำกัดความของ Proto จากตอนที่คอมไพล์ ดังนั้นฟิลด์ใหม่
จึงไม่ปรากฏโดยค่าเริ่มต้น หากต้องการแสดงฟิลด์ใหม่ ให้สร้างโปรโตคอลบัฟเฟอร์ใหม่
โดยใช้