วิธีใช้คำสั่ง ADB [Android] เบื้องต้น
การใช้คำสั่ง adb จาก sdk ของ Android ช่วยในการแสดงอุปกรณ์ที่เชื่อมต่อ, เชื่อมต่อแบบไร้สาย, debug การทำงานของ Android หรือดูข้อมูลพื้นฐานของอุปกรณ์ได้
เริ่มจากคำสั่งพื้นฐานที่ช่วยเช็คอุปกรณ์ที่เชื่อมต่อกับคอมพิวเตอร์อยู่
C:\Users\user>adb devices
หลังจากเชื่อมต่อกับอุปกรณ์เรียบร้อยแล้ว หน้าจอจะแสดงหมายเลขเครื่องชื่อเชื่อมต่ออยู่
List of devices attached
xxxabc device
เมื่อได้ผลลัพธ์ดังนี้เรียบร้อยแล้ว เราก็เริ่มใช้คำสั่งอื่นๆ กันได้เลย
- คำสั่ง shell เพื่อเข้าสู่ terminal ตรงกับอุปกรณ์ที่เชื่อมต่ออยู่
C:\Users\user>adb shell
เมื่อเข้าสู่ terminal ที่ต่อตรงกับอุปกรณ์แล้ว สามารถใช้คำสั่ง terminal เพื่อดูข้อมูลในอุปกรณ์ได้เลย ในส่วนนี้จะขอไม่ลงลึกกับคำสั่ง terminal นะครับ (อาจจะมีในบทความหน้า)
shell@android:/ $
2. คำสั่งเพื่อเชื่อมต่อกับอุปกรณ์ผ่าน port 5555 หรือการเชื่อมต่อแบบไร้สาย (ในกรณีที่อุปกรณ์และคอมพิวเตอร์อยู่ในลง lan เดียวกัน)
เริ่มต้นด้วยการสั่งให้เปิดการเชื่อมต่อแบบ tcp port 5555 (default port ที่นิยมใช้เชื่อมต่อกับอุปกรณ์ ส่วนมากใช้ port 5555)
C:\Users\user>adb tcpip 5555
ถ้าเชื่อมต่อสำเร็จจะขึ้นผลลัพธ์ดังนี้
restarting in TCP mode port: 5555
ขั้นตอนต่อไป เราก็จะสามารถถอดสาย USB ออกได้ และประกาศการเชื่อมต่ออุปกรณ์ผ่าน ip:port แทน
C:\Users\user>adb connect <ip:port>
**คำสั่งเพิ่มเติมเมื่ออยากรู้ ip ของอุปกรณ์ที่จะใช้เชื่อมต่อ (กรณีที่อุปกรณ์ยังเชื่อมต่อกับคอมพิวเตอร์อยู่) ในที่นี้เราสามารถใช้คำสั่ง shell เพื่อช่วยให้เราสามารถดู ip ที่อุปกรณ์ของเราใช้อยู่ได้
C:\Users\user>adb shell ip addr show wlan0
จะแสดงข้อมูล lan ที่อุปกรณ์เชื่อมต่ออยู่ (จะแสดงอยู่ในที่บรรทัด inet)
10: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether xx:xx:xx:xx:xx:xx brd xx:xx:xx:xx:xx:xx
inet 1.0.0.1/24 brd 1.0.0.255 scope global wlan0
valid_lft forever preferred_lft forever
inet6 xxxx::xxxx:xxxx:xxxx:xxx/64 scope link
valid_lft forever preferred_lft forever
และเมื่อจะกลับมาเชื่อมต่อด้วยสาย USB เหมือนเดิม ก็เสียบสาย USB และพิมพ์คำสั่ง
C:\Users\user>adb usb
ผลลัพธ์การเชื่อมต่อกับ USB ก็จะแสดงดังนี้
restarting in USB mode
3. คำสั่งที่แสดง log ทั้งหมดของอุปกรณ์
C:\Users\user>adb logcat
log การทำงานทั้งหมดของอุปกรณ์จะแสดงจนดูแทบไม่ทันเลยทีเดียว เพราะฉะนั้นเราต้องกรอกข้อมูลเฉพาะส่วนที่เราสนใจ
ในบทความนี้ผมจะหยิบคำสั่งพื้นฐาน ที่เป็นตัวอย่าง พอจะช่วย filter ให้เห็นเฉพาะส่วนที่เราสนใจได้บ้าง
เริ่มต้นที่คำสั่งนี้ จะทำให้แสดงข้อมูลเฉพาะ tag ที่เราสนใจ
C:\Users\user>adb logcat <tag> *:S
หรือสามารถใช้คำสั่งที่มีความหมายเหมือนกันดังนี้
C:\Users\user>adb logcat -s <tag>
ตัวอย่าง ผมจะกรอง tag ที่เป็น InputDispatcher (tag ที่แสดง event การ touch screen) -> เมื่อรันคำสั่งนี้แล้ว ลองสัมผัสที่หน้าจออุปกรณ์ log ใหม่ของการ touch จะแสดงเพิ่มที่ผลลัพธ์
C:\Users\user>adb logcat -s InputDispatcher
ตัวอย่างผลลัพธ์
12-21 00:44:29.093 3978 4564 I InputDispatcher: Delivering touch to (5236): action: 0x1, toolType: 1
การอ่านข้อมูลผลลัพธ์ จะเรียงด้วยข้อมูลดังนี้
<เดือน-วันที่> <เวลา> <PID> <TID> <priority> <tag> <ข้อมูล>
ต่อไปเราจะมากรองการ log ที่แสดงผล error ของอุปกรณ์ (เช่นการ Crash ของ Application) เราจะใช้คำสั่งดังนี้
C:\Users\user>adb logcat <tag> *:E
เราจะลองใส่ชื่อ tag เพื่อกรองเฉพาะ tag ที่สนใจมาแสดง แต่ครั้งนี้จะเพิ่ม priority <*:E> เข้าไปด้วย เพื่อกรองเฉพาะที่มีสถานะ error
priority ที่สามารถใส่เพื่อกรองเฉพาะสถานะของ tag ได้แก่
*:V = Verbose (เป็น default ของ <tag>อยู่แล้ว เมื่อไม่ใช่ priority ของ tag จะหมายความว่า priority เป็น V)
*:D = Debug
*:I = Info
*:W = Warn
*:E = Error
*:F = Fatal
เมื่อเราใส่ priority จะกรองเฉพาะ tag นั้นๆ ลงมา (เช่นเมื่อเราใส่ *:E ผลลัพธ์จะแสดง tag เฉพาะ priority ของ tag เป็น E และ F เท่านั้น)
ตัวอย่างการกรอง tag ด้วย priority ผมจะกรอง Activity ของอุปกรณ์ที่มีปัญหา
C:\Users\user>adb logcat ActivityManager *:E
ข้อมูลของ Activity หรือ Application ที่มีสถานะเป็น E หรือ F จะแสดงที่ผลลัพธ์
คำสั่ง logcat มีรายละเอียดเยอะมาก ที่เราต้องศึกษากันต่อไป
ถ้าสนใจรายละเอียดการใช้งาน logcat ด้วย option อื่นๆ สามารถใช้คำสั่ง help เพื่อแสดงการใช้งานอย่างละเอียดได้ครับ
C:\Users\user>adb logcat --help
ถ้าเกิดปัญหาการเชื่อมต่อหรือการเชื่อมต่อผิดปกติ และต้องการ reset การเชื่อมต่อของอุปกรณ์ ก็สามารถใช้คำสั่ง
C:\Users\user>adb kill-server
และ
C:\Users\user>adb start-server
เพื่อเริ่ม section การเชื่อมต่อกับอุปกรณ์ใหม่ได้
** เมื่ออยากรู้คำสั่งเพิ่มเติมก็สามารถพิมพ์คำสั่งนี้ เพื่อแสดงการใช้งานทั้งหมดของ คำสั่ง ADB ได้ครับ
C:\Users\user>adb --help
สุดท้ายนี้ เมื่อเรารู้คำสั่งพื้นฐาน ADB ของ sdk ใน Android ก็เป็นเครื่องมือช่วยอำนวยความสะดวกให้เราได้เยอะเลย