【LDPlayer】คู่มือการใช้งานคำสั่ง ADB (อัปเดต 26-09-03)
ADB (Android Debug Bridge หรือ Android Debug Bridge) เป็นเครื่องมือบรรทัดคำสั่งทั่วไปสำหรับเชื่อมต่อคอมพิวเตอร์กับอุปกรณ์ Android แต่ละอินสแตนซ์ของ LDPlayer จะเปิดพอร์ตสำหรับการดีบักผ่าน ADB นักพัฒนาสามารถใช้ adb โดยตรงเพื่อเชื่อมต่อ ติดตั้งแอป จำลองการป้อนข้อมูล ถ่ายภาพหน้าจอ โอนไฟล์ และดำเนินงานด้านการดีบักและระบบอัตโนมัติทั้งหมด โดยไม่จำเป็นต้องพึ่งพาตัวครอบคำสั่งบรรทัดคำสั่งเฉพาะใด ๆ
สารบัญ
- การชนกันของหลายอุปกรณ์และการระบุเป้าหมายด้วย -s
-
- 1. เปิดสิทธิ์ ROOT
- 2. รูปแบบการทำงานเมื่อมีหลายอุปกรณ์
- 3. ติดตั้งและถอนการติดตั้ง apk
- 4. ดูชื่อแพ็กเกจของแอปที่ติดตั้ง
- 5. ดูชื่อ Activity
- 6. ดูหมายเลขเวอร์ชันของแอป
- 7. ล้างข้อมูลแอป
- 8. จำลองการป้อนข้อมูล
- 9. โอนไฟล์ระหว่างคอมพิวเตอร์และอีมูเลเตอร์
- 10. ถ่ายภาพหน้าจอ
- 11. บันทึกวิดีโอ
- 12. ดูข้อมูลอุปกรณ์
- 13. ปิดโหมดนักพัฒนา
- ตัวอย่างการใช้งาน adb จริง
พอร์ต adb และการเชื่อมต่อของ LDPlayer
1. ตรวจสอบพอร์ต adb
แต่ละอินสแตนซ์ของ LDPlayer จะเปิดพอร์ตสำหรับการดีบัก ADB โดยใช้รูปแบบการตั้งชื่อทั่วไปดังนี้:
|
ลำดับอินสแตนซ์ |
พอร์ต adb เริ่มต้น |
|
0 (อินสแตนซ์หลัก) |
5554 |
|
1 |
5556 |
|
2 |
5558 |
|
… |
เพิ่มขึ้นทีละ +2 |
หลังจากเริ่มอินสแตนซ์ 0 แล้ว โดยปกติ `adb devices` จะแสดงเป็น serial เช่น `emulator-5554`
เมื่อเปิดหลายอินสแตนซ์ อินสแตนซ์ 1 จะสอดคล้องกับ `emulator-5556` และอินสแตนซ์ 2 กับ `emulator-5558` โดยประมาณ **ให้ยึด serial ที่แสดงจาก `adb devices` บนเครื่องจริงเป็นหลัก**
adb devices # ตรวจสอบ serial ของอินสแตนซ์ทั้งหมดบนเครื่อง
📌 **คำเตือนพอร์ตชนกันเมื่อใช้ LDPlayer 9 + LDPlayer 14 บนเครื่องเดียวกัน**: หากเปิด **อินสแตนซ์ 0** ของ LDPlayer 9 และ LDPlayer 14 พร้อมกัน ทั้งสองจะพยายามใช้ `5555` อินสแตนซ์ที่เปิดก่อนจะลงทะเบียนได้ตามปกติ ส่วนอินสแตนซ์ที่เปิดทีหลังจะถูกกดทับพอร์ต adb และ **จะไม่ปรากฏใน `adb devices`**
✅ **วิธีแก้ไข**: หลีกเลี่ยงการเปิดอินสแตนซ์ 0 ซ้ำกันบนเครื่องเดียวกัน หรือเปิดใช้งานเพียงเวอร์ชันเดียว
2. วิธีเชื่อมต่อ adb (อินสแตนซ์เดียว)
1. เปิดโฟลเดอร์ติดตั้ง LDPlayer (เช่น `E:\leidian\LDPlayer14`) จากนั้นพิมพ์ `CMD` ในแถบที่อยู่แล้วกด Enter เพื่อเปิด Command Prompt
2. พิมพ์ `adb devices` แล้วกด Enter เพื่อตรวจสอบว่าอินสแตนซ์แสดงอยู่หรือไม่ (เช่น `emulator-5554`)
3. พิมพ์ `adb shell` แล้วกด Enter เพื่อเข้าสู่ Android shell
E:\LDPlayer\LDPlayer14> adb devices
List of devices attached
emulator-5554 device
E:\LDPlayer\LDPlayer14> adb shell
xxx:/ #
3. วิธีเชื่อมต่อ adb ของอินสแตนซ์หลายตัว
เมื่อมีหลายอินสแตนซ์ทำงานพร้อมกัน แต่ละอินสแตนซ์จะลงทะเบียน serial ของตัวเอง ให้ใช้ `adb devices` เพื่อดูทั้งหมดก่อน จากนั้นใช้ `-s <serial>` เพื่อระบุเป้าหมาย:
adb devices # ตรวจสอบ serial ทั้งหมดก่อน
adb -s emulator-5554 shell # เชื่อมต่ออินสแตนซ์ 0
adb -s emulator-5554 shell pm list packages -3
หาก serial ไม่ปรากฏ ให้ตรวจสอบว่าอินสแตนซ์ที่เกี่ยวข้องกำลังทำงานอยู่ จากนั้นเรียก `adb devices` อีกครั้งเพื่อรีเฟรช
การชนกันของหลายอุปกรณ์และการระบุเป้าหมายด้วย -s
เมื่อคอมพิวเตอร์เชื่อมต่อกับอีมูเลเตอร์หลายเครื่อง (หรือหลายอินสแตนซ์) **คำสั่ง adb ใด ๆ ที่ไม่มี `-s` จะเกิดข้อผิดพลาด**:
adb.exe: more than one device/emulator
วิธีแก้มีเพียงวิธีเดียว: **ใช้ `-s <serial>` เพื่อระบุอุปกรณ์เป้าหมายอย่างชัดเจนเสมอ** โดยใส่ serial เป็นอาร์กิวเมนต์ตัวแรกของ adb:
adb -s emulator-5554 shell input tap 500 500
📌 **เกี่ยวกับความเสถียรของ serial**: serial ของอินสแตนซ์ที่กำลังทำงาน (เช่น `emulator-5554`) จะได้รับการดูแลโดย adb server ของ LDPlayer อย่างต่อเนื่อง หลัง `adb disconnect` จะถูกนำกลับมาโดยอัตโนมัติภายในไม่กี่วินาที หากต้องการตัดการเชื่อมต่ออย่างสมบูรณ์ ต้องปิดอินสแตนซ์หรือใช้ `adb kill-server` (แต่เมื่อเรียกคำสั่ง adb ใด ๆ อีกครั้ง ระบบจะลงทะเบียนใหม่) ดังนั้นสำหรับสคริปต์ การใช้ `-s` เพื่อล็อก serial จริงจาก `adb devices` จึงสะดวกที่สุด
แนวทางการใช้คำสั่ง adb ที่พบบ่อย
คำสั่งบางส่วนต้องใช้สิทธิ์ หากจำเป็นสามารถเปิด ROOT ก่อน (ดูข้อ 3.1) ตัวอย่างต่อไปนี้ถือว่าได้เข้าสู่ Android ด้วย `adb shell` แล้ว หรือใส่ `adb -s <serial>` ไว้ด้านหน้า
1. เปิดสิทธิ์ ROOT
เปิด «ศูนย์การตั้งค่า → อื่น ๆ → เปิดสิทธิ์ ROOT» หลังเชื่อมต่อ adb แล้วให้พิมพ์ `adb shell` หากพรอมต์เป็น `$` แสดงว่าสิทธิ์ไม่เพียงพอ:
adb shell # หลังเข้าสู่ระบบจะเห็น $
exit # กลับไปยังระดับก่อนหน้า
adb root # รีสตาร์ท adb daemon ด้วยสิทธิ์ root
adb shell # เข้าสู่อีกครั้ง พรอมต์ควรเป็น #
2. รูปแบบการทำงานเมื่อมีหลายอุปกรณ์
adb -s <serial> <คำสั่งอื่น>
# ตัวอย่าง:
adb -s emulator-5554 shell pm list packages -3
หากเครื่องมีอีมูเลเตอร์เพียงหนึ่งเครื่อง สามารถละเว้น `-s` และใช้ `adb <คำสั่ง>` ได้โดยตรง
3. ติดตั้งและถอนการติดตั้ง apk
adb install C:\xx.apk # ติดตั้ง
adb install -r C:\xx.apk # ติดตั้งทับ (เก็บข้อมูลเดิมไว้)
adb uninstall <package name> # ถอนการติดตั้ง
4. ดูชื่อแพ็กเกจของแอปที่ติดตั้ง
adb shell pm list packages # แอปทั้งหมด
adb shell pm list packages -3 # แอปของบุคคลที่สาม
adb shell pm list packages -s # แอประบบ
adb shell dumpsys window | findstr mCurrentFocus # แอปที่กำลังทำงาน
5. ดูชื่อ Activity
adb shell cmd package resolve-activity --brief <package name> | tail -n 1
6. ดูหมายเลขเวอร์ชันของแอป
adb shell dumpsys package <package name> | findstr version
7. ล้างข้อมูลแอป
adb shell pm clear <package name>
8. จำลองการป้อนข้อมูล
|
การทำงาน |
คำสั่ง |
คำอธิบาย |
|
ปุ่ม |
adb shell input keyevent **<key value>** |
เช่น **3** คือปุ่ม HOME และ **4** คือปุ่มย้อนกลับ |
|
ข้อความ |
adb shell input text **<text>** |
เช่น **hello**; **ไม่รองรับภาษาจีน** |
|
คลิก |
adb shell input tap **<X> <Y>** |
X และ Y คือพิกัดบนหน้าจอ (พิกเซล) |
|
ปัด |
adb shell input swipe **<X1> <Y1> <X2> <Y2> [TIME]** |
TIME มีหน่วยเป็นมิลลิวินาที ค่าเริ่มต้นคือ 100 |
|
กดค้าง |
adb shell input swipe **<X> <Y> <X> <Y> <TIME>** |
จุดเริ่มต้นและจุดสิ้นสุดเหมือนกัน หมายถึงกดค้าง |
|
เปิด App |
adb shell am start -n **<package name>/<Activity>** |
ดูชื่อ Activity ได้จากข้อ 3.5 |
9. โอนไฟล์ระหว่างคอมพิวเตอร์และอีมูเลเตอร์
adb push C:\test.apk /sdcard/ # คอมพิวเตอร์ → อีมูเลเตอร์
adb pull /sdcard/test.apk C:\ # อีมูเลเตอร์ → คอมพิวเตอร์ (ใช้ไดรฟ์ Windows ห้ามใช้ /c/)
✅ **ทดสอบแล้วใช้งานได้**: บน LDPlayer 9 / LDPlayer 14 คำสั่ง `adb push` / `adb pull` แบบ native สามารถโอนไฟล์ได้ตามปกติ (ทดสอบการโอนไฟล์เดียวกันทั้งสองทิศทางสำเร็จ) พาธปลายทางให้ใช้ไดรฟ์ Windows เช่น `C:\` แทน `/c/`
10. ถ่ายภาพหน้าจอ
adb shell screencap /sdcard/screen.png # จับภาพหน้าจอปัจจุบันและบันทึกลงอุปกรณ์
adb pull /sdcard/screen.png C:\ # ดาวน์โหลดลงคอมพิวเตอร์
11. บันทึกวิดีโอ
adb shell screenrecord /sdcard/test.mp4 # เริ่มบันทึก
# กด CTRL+C เพื่อสิ้นสุด
adb pull /sdcard/test.mp4 C:\ # ส่งออก
12. ดูข้อมูลอุปกรณ์
adb shell getprop ro.product.model # รุ่น
adb shell getprop ro.product.brand # แบรนด์
adb shell getprop ro.product.board # โปรเซสเซอร์
adb shell getprop ro.build.version.release # เวอร์ชัน Android
adb shell wm size # ความละเอียด
adb shell dumpsys SurfaceFlinger | findstr "GLES" # โหมดการเรนเดอร์
13. ปิดโหมดนักพัฒนา
adb shell settings put global development_settings_enabled 0
ตัวอย่างการใช้งาน adb จริง
เมื่อนำคำสั่งข้างต้นมาประกอบกัน จะสามารถทำระบบอัตโนมัติบน LDPlayer ได้อย่างครบถ้วน ตัวอย่างสถานการณ์ที่พบบ่อย:
|
วัตถุประสงค์ |
คำสั่ง |
|
คลิกพิกัดในอินสแตนซ์เดียว |
adb shell input tap 500 500 |
|
คลิกพิกัดในอินสแตนซ์ที่ระบุ |
adb -s emulator-5554 shell input tap 500 500 |
|
ป้อนข้อความภาษาอังกฤษ |
adb shell input text hello |
|
การปัด |
adb shell input swipe 300 800 300 300 500 |
|
กลับหน้าหลัก |
adb shell input keyevent 3 |
|
ตรวจสอบเวอร์ชัน Android |
adb shell getprop ro.build.version.release |
|
เปิดการตั้งค่าระบบ |
adb shell am start -n com.android.settings/.Settings |
|
ถ่ายภาพหน้าจอและส่งออก |
adb shell screencap /sdcard/s.png แล้วตามด้วย adb pull /sdcard/s.png C:\ |
|
ส่งไฟล์ไปยังอุปกรณ์ |
adb push C:\conf.txt /sdcard/ |