การดีบัก WebView จากระยะไกล

แก้ไขข้อบกพร่อง WebView ในแอป Android ที่มาพร้อมเครื่องโดยใช้เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ Chrome

ใน Android 4.4 (KitKat) ขึ้นไป ให้ใช้เครื่องมือสำหรับนักพัฒนาเว็บเพื่อแก้ไขข้อบกพร่องของเนื้อหา WebView ใน Android ที่มาพร้อมเครื่อง แอปพลิเคชัน

สรุป

  • เปิดใช้การแก้ไขข้อบกพร่อง WebView ในแอป Android ที่มากับเครื่อง แก้ไขข้อบกพร่อง WebView ในเครื่องมือสำหรับนักพัฒนาเว็บใน Chrome
  • เข้าถึงรายการ WebView ที่เปิดใช้การแก้ไขข้อบกพร่องผ่าน chrome://inspect
  • การแก้ไขข้อบกพร่อง WebView จะเหมือนกับการแก้ไขข้อบกพร่องของหน้าเว็บผ่านการแก้ไขข้อบกพร่องระยะไกล

กำหนดค่า WebView สำหรับการแก้ไขข้อบกพร่อง

ต้องเปิดใช้การแก้ไขข้อบกพร่อง WebView จากภายในแอปพลิเคชัน หากต้องการเปิดใช้การแก้ไขข้อบกพร่อง WebView ให้เรียกใช้ เมธอดแบบคงที่ setWebContentsDebuggingEnabled ในคลาส WebView

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    WebView.setWebContentsDebuggingEnabled(true);
}

การตั้งค่านี้มีผลกับ WebView ของแอปพลิเคชันทั้งหมด

เคล็ดลับ: การแก้ไขข้อบกพร่อง WebView ไม่ได้รับผลกระทบจากสถานะของ Flag debuggable ใน ไฟล์ Manifest ของแอปพลิเคชัน หากต้องการเปิดใช้การแก้ไขข้อบกพร่อง WebView เฉพาะเมื่อ debuggable คือtrue ทดสอบ Flag ขณะรันไทม์

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    if (0 != (getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE))
    { WebView.setWebContentsDebuggingEnabled(true); }
}

เปิด WebView ในเครื่องมือสำหรับนักพัฒนาเว็บ

หน้า chrome://inspect จะแสดงรายการ WebView ที่เปิดใช้การแก้ไขข้อบกพร่องในอุปกรณ์ของคุณ

หากต้องการเริ่มแก้ไขข้อบกพร่อง ให้คลิกตรวจสอบใต้ WebView ที่ต้องการแก้ไขข้อบกพร่อง ใช้เครื่องมือสำหรับนักพัฒนาเว็บเหมือนกับที่คุณทำ สำหรับแท็บเบราว์เซอร์ระยะไกล

การตรวจสอบองค์ประกอบใน WebView

กราฟิกสีเทาที่แสดงอยู่พร้อมกับ WebView จะแสดงขนาดและตำแหน่งที่เกี่ยวข้องกับ บนหน้าจอ หาก WebView ของคุณมีการตั้งค่าชื่อไว้ ระบบจะแสดงชื่อดังกล่าวด้วย

การแก้ปัญหา

หากไม่เห็น WebView ในหน้า chrome://inspect

  • ตรวจสอบว่าได้เปิดใช้การแก้ไขข้อบกพร่อง WebView สำหรับแอปแล้ว
  • เปิดแอปที่มี WebView ที่ต้องการแก้ไขข้อบกพร่องในอุปกรณ์ จากนั้นรีเฟรช chrome://inspect