บทนำ
Android Debug Bridge (adb) เป็นเครื่องมือบรรทัดคำสั่งที่หลากหลาย ใช้สื่อสารกับอุปกรณ์ Android เช่น โทรศัพท์ แท็บเล็ต นาฬิกาอัจฉริยะ セットท็อปบ็อกซ์ ฯลฯ ADB ช่วยให้ทำสิ่งที่ไม่เหมาะสำหรับการใช้งานทั่วไปได้ เช่น ติดตั้งแอปนอก Play Store, ดีบั๊กแอป, เข้าฟีเจอร์ซ่อน, เปิด UNIX Shell ฯลฯ
เพื่อความปลอดภัย ต้องเปิด Developer Options และเปิด USB Debugging รวมถึงต้องอนุญาตการเข้าถึง USB Debugging จากคอมพิวเตอร์เฉพาะเครื่องที่เชื่อมต่อ
สถาปัตยกรรม ADB (Client-Server)
ADB เป็นโปรแกรมแบบ Client-Server ประกอบด้วย 3 ส่วนหลัก:
- Client: ส่งคำสั่ง รันบนเครื่องพัฒนา เรียกใช้ผ่านเทอร์มินัลด้วยคำสั่ง
adb - Daemon (adbd): รันคำสั่งบนอุปกรณ์ ทำงานเป็นกระบวนการพื้นหลัง
- Server: จัดการการสื่อสารระหว่าง Client และ Daemon รันเป็นกระบวนการพื้นหลังบนเครื่องพัฒนา
หลักการทำงาน
เมื่อเริ่ม ADB Client ในเทอร์มินัล Kali Linux จะตรวจสอบว่า ADB Server ทำงานอยู่หรือไม่ หากไม่ได้ จะเริ่ม Server Process Server ผูกกับพอร์ต TCP 5037 ในเครื่องท้องถิ่น และรอคำสั่งจาก ADB Clients (ทุก Client ใช้พอร์ต 5037) Server ต่อต่อกับอุปกรณ์ที่ทำงานอยู่ ระบุ Emulator โดยสแกนพอร์ตคี่ 5555-5585 (ช่วงสำหรับ Emulator 16 ตัวแรก) เมื่อพบ ADB Daemon จะตั้งค่าการเชื่อมต่อที่พอร์ตนั้น
การเปิดใช้งาน USB Debugging
- ไปที่ Settings > About phone
- แตะ Build number 7 ครั้ง
- กลับหน้าก่อนหน้า จะ thấy Developer options ล่างสุด
- เปิด USB debugging
การเชื่อมต่อ
แบบ USB
เชื่อมอุปกรณ์กับคอมพิวเตอร์ด้วยสาย USB
แบบ Wi-Fi
- เปิดเทอร์มินัล Kali Linux
- หา IP Address ของอุปกรณ์:
Settings > About tablet/phone > Status > IP address - รันคำสั่ง:
adb connect 'ip address' - ตรวจสอบการเชื่อมต่อ:
adb devices(จะแสดง Serial Number)
คำสั่ง ADB ที่ใช้บ่อย
| คำสั่ง | คำอธิบาย |
|---|---|
adb devices | แสดงอุปกรณ์ที่เชื่อมต่ออยู่ |
adb kill-server | หยุด ADB Server |
adb root | ขอสิทธิ์ Root |
adb wait-for-device | รอจนกว่าอุปกรณ์จะพร้อม |
adb shell stop thermal-engine | หยุดบริการ thermal-engine |
adb install <file.apk> | ติดตั้งแอปพลิเคชัน |
adb shell | เปิด Shell บนอุปกรณ์ |
adb shell dumpsys | แสดงรายละเอียดหน่วยความจำ |
adb pull <remote> <local> | คัดลอกไฟล์จากอุปกรณ์ |
adb push <local> <remote> | คัดลอกไฟล์ไปอุปกรณ์ |
adb forward tcp:6100 tcp:7100 | Port Forwarding |
เคล็ดลับ: ใช้
adb shellเข้า Linux Shell ของ Android ได้โดยตรง สามารถรันคำสั่ง Linux พื้นฐานส่วนใหญ่ได้