Android Debug Bridge (ADB) เป็นเครื่องมือ Command-line built-in ใน Android SDK ให้สื่อสารกับอุปกรณ์ และดำเนินการต่างๆ: ติดตั้ง/ดีบั๊กแอป, โอนไฟล์สองทาง, เข้าถึง Unix Shell รันคำสั่ง
ใช้ ADB ปรับ Hidden Settings, ตั้งค่าแอปร่วมกับ ADB เปิดฟีเจอร์ 강력, ปรับปรุงประสบการณ์อุปกรณ์โดยรวม เราจะสอนตั้งค่า ADB และ Shell Commands สำคัญสำหรับการกระทำที่มีประโยชน์
ADB ทำงานยังไง?
ADB เป็นโปรแกรม Client-Server ประกอบ 3 ส่วน:
Client: รันคำสั่ง adb จาก Shell หรือ Script บน Development Machine บทบาท: ส่งคำสั่งไป Server
Daemon (adbd): รันเป็น Background Process บนอุปกรณ์ เป้าหมาย: เชื่อมต่อกับ ADB Server ผ่าน USB หรือ TCP สำหรับ Emulator ADB Server ถือว่า Device "Online" ตอนเชื่อมต่อ Daemon สำเร็จ
Server: รันเป็น Background Process บน Development Machine เป้าหมาย: ตรวจสอบ USB Port ตอนต่อ/ถอดอุปกรณ์, รักษารายการอุปกรณ์ที่เชื่อมต่อ, กำหนด State ต่างๆ: "online", "offline", "bootloader", "recovery"
ตอนเรียกคำสั่ง "adb" Client จะเช็คก่อนว่า ADB Server รันอยู่ไหม ถ้าไม่ Server พยายามเชื่อม Daemon จนเจอ เจอแล้ว จะได้ Authorization Request บนอุปกรณ์ และ Bind ไป Local TCP Port ตั้งแต่นั้นเป็นต้นไป จะฟัง Port นั้นต่อไปสำหรับคำสั่ง
ตั้งค่า ADB บนอุปกรณ์ของคุณ
ADB Package รวมอยู่ใน "Android SDK Platform Tools" built-in ใน Android Studio ถ้าคุณ Casual User หรือเพิ่งเริ่ม ADB ไม่ต้องติด IDE ไปที่ Android SDK Platform Tools เลือกลิงก์สำหรับ OS ของคุณ
Google อัปเดต Platform Tools เป็นระยะ อาจมีปัญหาตอน Upgrade แนะนำใช้ Package Manager อัปเดต ADB อัตโนมัติ และตั้ง Environment Variable (Windows) หรือ PATH (Mac) ให้ ดูคู่มือตั้งค่าและใช้ Chocolatey (Windows) และ Homebrew (Mac) จัดการ ADB
เปิด USB Debugging บน Android
เปิดแอป การตั้งค่า ไป เกี่ยวกับโทรศัพท์ เลื่อนลงสุด แตะ Build Number 7 ครั้ง จะได้ข้อความ "คุณเป็น Developer แล้ว" กลับไป การตั้งค่า > ระบบ แตะ ขั้นสูง เปิด Developer Options เปิด USB Debugging
ระดับผิว USB Debugging ให้อุปกรณ์สื่อสารกับคอมพิวเตอร์ที่รัน Android SDK รู้เพิ่มเติม อ่านคู่มือ USB Debugging Mode ทำงานยังไงบน Android
Setup ADB บน Windows
เปิด File Explorer ไปที่โฟลเดอร์เก็บ ZIP คลิกขวา Extract ไป C:\platform-tools เสียบอุปกรณ์เข้าคอมพิวเตอร์ เปลี่ยน USB Mode เป็น "File Transfer" บาง OEM อาจต้อง/ไม่ต้อง แต่โหมดนี้เข้ากันได้ดี
กดค้าง Shift คลิกขวาโฟลเดอร์ platform-tools ที่มี ADB Package เลือก Open PowerShell window here
พิมพ์:
./adb devices
หมายเหตุ: ใน PowerShell ต้องใส่ Dot-Forward Slash ก่อน "adb devices" ไม่ต้องใส่ถ้าใช้ CMD
บนอุปกรณ์ จะเห็น Prompt "Allow USB Debugging" เช็ค Always allow from this computer แตะ OK พิมพ์ "./adb devices" อีกครั้ง ถ้าสำเร็จ จะเห็น Serial Number ของอุปกรณ์
ขั้นตอนนี้ควรทำงาน แต่อาจ Fail ตอนเชื่อม ADB บน Windows ดูคู่มือขั้นตอนแก้ ADB Connection บน Windows PC
Setup ADB บน Mac
เปิด Finder Extract ZIP ไปที่ตำแหน่งที่ชอบ Desktop หรือ Downloads เสียบอุปกรณ์เข้ามาค เปลี่ยน USB Mode เปิด Terminal พิมพ์ Path ของ platform-tools
cd /Users/[UserName]/Downloads/platform-tools
พิมพ์:
adb devices
บนอุปกรณ์ ยอมรับ "Allow USB Debugging" แตะ OK อนุญาตตลอด พิมพ์ "adb devices" อีกครั้ง จะเห็น Serial Number
Setup ADB แบบ Wireless กับ Android
Setup ADB ผ่าน USB Seamless แต่ขั้นตอนซับซ้อน มีข้อเสีย: 1) จำนวนอุปกรณ์ต่อได้ ขึ้นกับ Port ที่มี 2) อาจมีปัญหา Driver Compatibility
กำจัดความซับซ้อนด้วย ADB over Wi-Fi ใช้คำสั่ง "tcpip" และ "connect" ของ ADB ใช้งานอุปกรณ์แบบ Wireless แต่ต้องเสียบ USB ก่อนเพื่อรันคำสั่งเหล่านี้
Android 11 (SDK Platform Tools 30+) ขึ้นไป ใช้ Wireless Debugging จับคู่อุปกรณ์กับคอมพิวเตอร์ ใช้คำสั่งใหม่ "pair" ทำงานคล้าย Bluetooth Pairing
ไป การตั้งค่า > Developer Options > Enable Wireless Debugging เลือก Pair device with pairing code จด Pairing Code, IP Address, Port Number
ทำตามขั้นตอนข้างต้น แล้วพิมพ์:
adb pair ipaddr:port
แทน "ipaddr" ด้วย IP Address และ "port" ด้วย Port Number ตอน Prompt ใส่ Pairing Code ที่ได้ก่อนหน้า ถ้าสำเร็จ จะเห็นข้อความว่า Device Paired แล้ว
คำสั่ง ADB ที่มีประโยชน์
ADB ทำอะไรได้เยอะ และส่วนใหญ่มีประโยชน์ทั้ง Casual Users และ Developers รายการคำสั่งที่อาจใช้ได้ (Inverted Commas ในคำสั่งเพื่ออธิบาย)
- adb devices: แสดงอุปกรณ์ที่รองรับ ADB เชื่อมต่อกับคอมพิวเตอร์
- adb reboot: รีสตาร์ทโทรศัพท์
- adb install "path_to_apk": ติดตั้งแอป
- adb pull "remote local": Copy ไฟล์และ Sub-directories จากอุปกรณ์ แทนที่ local/remote ด้วย Path ไฟล์/โฟลเดอร์เป้าหมายบนเครื่อง (local) และอุปกรณ์ (remote)
- adb push "local remote": Copy ไฟล์และ Sub-directories ไปอุปกรณ์
- adb kill-server: ยุติ ADB Server Process และ Restart
- adb fastboot: เปิด Fastboot Mode
- adb help: แสดง Help Documentation ของ ADB Commands
- adb uninstall "package name": Uninstall แอป
List All Android Packages:
adb shell pm list packages
พิมพ์รายการ Package พิมพ์ "-d" แสดงเฉพาะ Disabled, "-e" แสดงเฉพาะ Enabled, "-s" แสดงเฉพาะ System Packages
Remove Unwanted Pre-Installed Apps:
adb shell pm uninstall -k --user 0 <package name>
คำสั่งนี้ Uninstall Pre-installed Apps ได้โดยไม่ Root Package Name = ชื่อไฟล์ .apk ใช้แอปฟรี App Inspector หา Package Name
List App Components:
Components ของแอป = Activities, Services ฯลฯ ด้วยคำสั่งนี้ Launch Hidden Activities หรือส่ง Broadcast พร้อม Data เฉพาะ
adb shell dumpsys package <package name>
ดู Activities ภายใต้ Activity Resolver Table และ Services ภายใต้ Service Resolver Table
ลอง ADB Apps เหล่านี้เพื่อเปิดฟีเจอร์ 강력
ตอนแรกดูซับซ้อน—แต่ง่ายจริงๆ ต้องทำตามขั้นตอนลำดับ และจด Error ถ้ามี ตอนนี้รู้ ADB Commands แล้ว ลองแอปเหล่านี้ และตั้งค่า ADB เพื่อควบคุม Android มากขึ้น