วิธีใช้คำสั่ง ADB [Android] เบื้องต้น

Mr.Rukpong
Arcadia Software Development
2 min readDec 20, 2017

การใช้คำสั่ง adb จาก sdk ของ Android ช่วยในการแสดงอุปกรณ์ที่เชื่อมต่อ, เชื่อมต่อแบบไร้สาย, debug การทำงานของ Android หรือดูข้อมูลพื้นฐานของอุปกรณ์ได้

เริ่มจากคำสั่งพื้นฐานที่ช่วยเช็คอุปกรณ์ที่เชื่อมต่อกับคอมพิวเตอร์อยู่

C:\Users\user>adb devices

หลังจากเชื่อมต่อกับอุปกรณ์เรียบร้อยแล้ว หน้าจอจะแสดงหมายเลขเครื่องชื่อเชื่อมต่ออยู่

List of devices attached
xxxabc device

เมื่อได้ผลลัพธ์ดังนี้เรียบร้อยแล้ว เราก็เริ่มใช้คำสั่งอื่นๆ กันได้เลย

  1. คำสั่ง 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 ก็เป็นเครื่องมือช่วยอำนวยความสะดวกให้เราได้เยอะเลย

--

--