API ProfilingManager ช่วยให้คุณรวบรวมโปรไฟล์ประสิทธิภาพของผู้ใช้จริง เช่น การติดตามของระบบและฮีปดัมพ์ของ Java จากอุปกรณ์เวอร์ชันที่ใช้งานจริงที่ใช้ Android 15 (ระดับ API 35) ขึ้นไป โดยรองรับกลไกการรวบรวม 2 แบบ ได้แก่
โปรไฟล์ที่ขับเคลื่อนโดยแอปซึ่งแอปของคุณจะควบคุมการรวบรวมโปรไฟล์ตั้งแต่ต้นจนจบ (Android 15 ขึ้นไป) และโปรไฟล์ที่อิงตามทริกเกอร์ซึ่งระบบจะจัดการการบันทึกเพื่อตอบสนองต่อเหตุการณ์ที่คุณลงทะเบียนความสนใจไว้ใน Android 16 (ระดับ API 36) ขึ้นไป
คู่มือนี้ครอบคลุมหัวข้อต่อไปนี้
- โปรไฟล์การบันทึก: วิธีเริ่มและหยุดการบันทึกโปรไฟล์ที่ขับเคลื่อนโดยแอป และวิธีลงทะเบียนสำหรับการบันทึกโปรไฟล์ตามทริกเกอร์
- ดึงข้อมูลและอัปโหลดโปรไฟล์: วิธีดึงข้อมูลโปรไฟล์ในเครื่องด้วย
adbหรืออัปโหลดในเบื้องหลังด้วยWorkManager - วิเคราะห์โปรไฟล์: วิธีแสดงภาพโปรไฟล์ใน UI ของ Perfetto, ค้นหาโปรไฟล์ด้วย PerfettoSQL, วิเคราะห์การติดตามแบบกลุ่ม และวิเคราะห์โปรไฟล์ด้วย AI
- กรณีศึกษาการแก้ไขข้อบกพร่อง: วิธีใช้
ProfilingManagerตั้งแต่ต้นจนจบเพื่อแก้ไขข้อบกพร่อง ANR และแก้ไขข้อบกพร่องข้อขัดข้อง OOM - การจำกัดอัตราคำขอและลักษณะการรวบรวมข้อมูล: วิธีทำความเข้าใจการจำกัดอัตราคำขอและลักษณะการรวบรวมข้อมูลในเวอร์ชันที่ใช้งานจริง
- การแก้ไขข้อบกพร่องในเครื่อง: วิธีใช้คำสั่งแก้ไขข้อบกพร่องสำหรับการสร้างโปรไฟล์ในเครื่อง
ประเภทโปรไฟล์ที่รองรับ
ProfilingManager รองรับการรวบรวมโปรไฟล์หลายประเภทเพื่อให้คุณกำหนดเป้าหมายข้อกังวลด้านประสิทธิภาพที่เฉพาะเจาะจงในแอปได้ คุณสามารถกำหนดค่าคำขอได้โดยตรงโดยใช้ API ของแพลตฟอร์มหรือใช้ AndroidX Core Builder ดังนี้
- การติดตามของระบบ: บันทึกโดยใช้
PROFILING_TYPE_SYSTEM_TRACEหรือSystemTraceRequestBuilder- มีประโยชน์สำหรับการวินิจฉัยความกระตุก การวิเคราะห์เวลาในการตอบสนอง และการแก้ไขข้อบกพร่องด้านประสิทธิภาพทั่วไป
- ฮีปดัมป์ของ Java: บันทึกโดยใช้
PROFILING_TYPE_JAVA_HEAP_DUMPหรือJavaHeapDumpRequestBuilder- จับภาพสแนปชอตของกราฟและขนาดออบเจ็กต์ฮีป Java ของแอปเพื่อตรวจหาหน่วยความจำรั่วไหลและเพิ่มประสิทธิภาพหน่วยความจำ
- โปรไฟล์ฮีป: บันทึกโดยใช้
PROFILING_TYPE_HEAP_PROFILEหรือHeapProfileRequestBuilder- ติดตามการจัดสรรหน่วยความจำแบบเนทีฟ (หรือ Java (ไม่บังคับ)) เมื่อเวลาผ่านไปเพื่อช่วยเพิ่มประสิทธิภาพการใช้งานหน่วยความจำ
- การสุ่มตัวอย่างสแต็ก: บันทึกโดยใช้
PROFILING_TYPE_STACK_SAMPLINGหรือStackSamplingRequestBuilder- สุ่มตัวอย่างสแต็กการเรียกใช้เทรดเพื่อช่วยให้คุณเข้าใจการเรียกใช้โค้ดและวิเคราะห์การใช้งาน CPU
ผสานรวม ProfilingManager กับ AI Agent
คุณสามารถใช้ Agent การเขียนโค้ด AI เพื่อผสานรวม ProfilingManager เข้ากับแอปได้
เช่น เรียกใช้พรอมต์ต่อไปนี้ใน Agent การเขียนโค้ด AI เพื่อตั้งค่าคอลเล็กชันทริกเกอร์แอปพลิเคชันไม่ตอบสนอง (ANR) โดยแทนที่ </path/to/codebase> ด้วยเส้นทางไปยังแอปของคุณ
Read https://developer.android.com/topic/performance/tracing/profiling-manager/trigger-based-capture
and https://developer.android.com/topic/performance/tracing/profiling-manager/upload-worker
and integrate ProfilingManager ANR trigger collection (TRIGGER_TYPE_ANR) into my
app at </path/to/codebase>, including registering the result listener after app
startup completes and scheduling a WorkManager upload job when a profile is
received.
คุณสามารถปรับพรอมต์นี้เพื่อตั้งค่าทริกเกอร์ระบบอื่นๆ (เช่น TRIGGER_TYPE_OOM) หรือกำหนดค่าการบันทึกโปรไฟล์ที่ขับเคลื่อนโดยแอปโดยใช้คู่มือการสร้างโปรไฟล์ที่ขับเคลื่อนโดยแอป หลังจากผสานรวมแล้ว ให้ทดสอบการตั้งค่าในเครื่องโดยใช้คำสั่งแก้ไขข้อบกพร่องสำหรับการสร้างโปรไฟล์ในเครื่อง และวิเคราะห์โปรไฟล์ที่รวบรวมไว้ด้วย AI Agent