Android Debug Bridge (adb
) เป็นเครื่องมือบรรทัดคำสั่งอเนกประสงค์ที่ช่วยให้คุณสื่อสารกับ
อุปกรณ์ คำสั่ง adb
ช่วยอำนวยความสะดวกในการทำงานต่างๆ ของอุปกรณ์ เช่น การติดตั้งและ
แอปแก้ไขข้อบกพร่อง adb
ให้สิทธิ์เข้าถึง Unix Shell ที่คุณเรียกใช้ได้หลากหลายประเภท
คำสั่งต่างๆ ในอุปกรณ์ โปรแกรมนี้เป็นโปรแกรมแบบไคลเอ็นต์เซิร์ฟเวอร์ที่มีส่วนประกอบ 3 ส่วน ได้แก่
- ไคลเอ็นต์ ซึ่งจะส่งคำสั่ง ไคลเอ็นต์จะทำงานบนเครื่องที่กำลังพัฒนา คุณสามารถ
เรียกใช้ไคลเอ็นต์จากเทอร์มินัลบรรทัดคำสั่งด้วยการออกคำสั่ง
adb
- daemon (adbd) ซึ่งเรียกใช้คำสั่งในอุปกรณ์ Daemon ทำงานเป็นพื้นหลัง ในแต่ละอุปกรณ์
- เซิร์ฟเวอร์ ซึ่งจัดการการสื่อสารระหว่างไคลเอ็นต์และ Daemon เซิร์ฟเวอร์ ทำงานเป็นกระบวนการเบื้องหลังในเครื่องการพัฒนาของคุณ
adb
รวมอยู่ในแพ็กเกจเครื่องมือแพลตฟอร์ม Android SDK ดาวน์โหลดสิ่งนี้
แพ็กเกจที่มี SDK Manager ซึ่งจะติดตั้ง
เวลา android_sdk/platform-tools/
ถ้าคุณต้องการใช้ Android SDK แบบสแตนด์อโลน
แพ็กเกจเครื่องมือแพลตฟอร์ม ดาวน์โหลดได้ที่นี่
สำหรับข้อมูลเกี่ยวกับการเชื่อมต่ออุปกรณ์สำหรับใช้กับ adb
รวมถึงวิธีใช้การเชื่อมต่อ
Assistant เพื่อแก้ปัญหาทั่วไป โปรดดู
เรียกใช้แอปในอุปกรณ์ฮาร์ดแวร์
วิธีการทำงานของ adb
เมื่อคุณเริ่มต้นไคลเอ็นต์ adb
ไคลเอ็นต์จะตรวจสอบก่อนว่ามี
กระบวนการของเซิร์ฟเวอร์ adb
ทำงานอยู่แล้ว หากไม่มี จะเป็นการเริ่มกระบวนการของเซิร์ฟเวอร์
เมื่อเซิร์ฟเวอร์เริ่มทำงาน เซิร์ฟเวอร์จะเชื่อมโยงกับพอร์ต TCP 5037 ในเครื่องและรอคำสั่งที่ส่งจาก
adb
รายการ
หมายเหตุ: ไคลเอ็นต์ adb
ทั้งหมดใช้พอร์ต 5037 ในการสื่อสาร
กับเซิร์ฟเวอร์ adb
จากนั้นเซิร์ฟเวอร์จะตั้งค่าการเชื่อมต่อกับอุปกรณ์ทั้งหมดที่กำลังทำงานอยู่
ช่วยค้นหาโปรแกรมจำลองโดยการสแกนพอร์ตเลขคี่ในช่วง
5555 ถึง 5585 ซึ่งเป็นช่วงที่โปรแกรมจำลอง 16 ตัวแรกใช้ ตำแหน่งที่เซิร์ฟเวอร์พบ adb
Daemon (adbd) ก็จะตั้งค่าการเชื่อมต่อกับพอร์ตนั้น
โปรแกรมจำลองแต่ละตัวจะใช้คู่พอร์ตตามลำดับ ซึ่งก็คือพอร์ตที่มีเลขคู่สำหรับ
การเชื่อมต่อคอนโซลและพอร์ตหมายเลขคี่สำหรับการเชื่อมต่อ adb
เช่น
โปรแกรมจำลอง 1, คอนโซล: 5554
โปรแกรมจำลอง 1, adb
: 5555
โปรแกรมจำลอง 2, คอนโซล: 5556
โปรแกรมจำลอง 2, adb
: 5557
เป็นต้น
ตามที่แสดง โปรแกรมจำลองที่เชื่อมต่อกับ adb
บนพอร์ต 5555 เหมือนกับโปรแกรมจำลอง
ที่ใช้คอนโซลที่รอการเชื่อมต่อผ่านพอร์ต 5554
เมื่อตั้งค่าเซิร์ฟเวอร์ให้เชื่อมต่อกับอุปกรณ์ทั้งหมดแล้ว คุณจะใช้คำสั่ง adb
เพื่อ
เข้าถึงอุปกรณ์เหล่านั้น เนื่องจากเซิร์ฟเวอร์จัดการการเชื่อมต่อกับอุปกรณ์และแฮนเดิล
คำสั่งจากไคลเอ็นต์ adb
หลายตัว คุณสามารถควบคุมอุปกรณ์ใดก็ได้จากไคลเอ็นต์หรือ
จากสคริปต์
เปิดใช้การแก้ไขข้อบกพร่อง adb บนอุปกรณ์ของคุณ
หากต้องการใช้ adb กับอุปกรณ์ที่เชื่อมต่อผ่าน USB คุณต้องเปิดใช้งาน การแก้ไขข้อบกพร่อง USB ในการตั้งค่าระบบอุปกรณ์ในส่วน ตัวเลือกสำหรับนักพัฒนาแอป ใน Android 4.2 (API ระดับ 17) ขึ้นไป หน้าจอตัวเลือกสำหรับนักพัฒนาซอฟต์แวร์ ซ่อนอยู่โดยค่าเริ่มต้น หากต้องการให้แสดง ให้เปิดใช้งาน ตัวเลือกสำหรับนักพัฒนาแอป
ตอนนี้คุณเชื่อมต่ออุปกรณ์ด้วย USB ได้แล้ว คุณสามารถยืนยันว่าอุปกรณ์
เชื่อมต่อโดยเรียกใช้ adb devices
จาก
ไดเรกทอรี android_sdk/platform-tools/
หากเชื่อมต่อแล้ว
คุณจะเห็นชื่ออุปกรณ์แสดงเป็น "อุปกรณ์"
หมายเหตุ: เมื่อคุณเชื่อมต่ออุปกรณ์ที่ใช้ Android 4.2.2 (API) ระดับ 17) หรือสูงกว่า ระบบจะแสดงกล่องโต้ตอบที่ถามว่าจะยอมรับคีย์ RSA ที่อนุญาตหรือไม่ การแก้ไขข้อบกพร่องผ่านคอมพิวเตอร์เครื่องนี้ กลไกการรักษาความปลอดภัยนี้จะปกป้องอุปกรณ์ของผู้ใช้เนื่องจาก การแก้ไขข้อบกพร่อง USB และคำสั่ง adb อื่นๆ นั้นจะไม่สามารถทำงานได้ จนกว่าคุณจะปลดล็อก อุปกรณ์และรับทราบกล่องโต้ตอบ
สําหรับข้อมูลเพิ่มเติมเกี่ยวกับการเชื่อมต่ออุปกรณ์ผ่าน USB โปรดอ่าน เรียกใช้แอปในอุปกรณ์ฮาร์ดแวร์
เชื่อมต่ออุปกรณ์ผ่าน Wi-Fi
หมายเหตุ: วิธีการด้านล่างไม่มีผลกับอุปกรณ์ Wear ที่ใช้ Android 11 (API ระดับ 30) ดูคู่มือสำหรับ การแก้ไขข้อบกพร่องของแอป Wear OS สำหรับ ข้อมูลเพิ่มเติม
Android 11 (API ระดับ 30) ขึ้นไปรองรับการติดตั้งใช้งานและการแก้ไขข้อบกพร่องของแอปแบบไร้สายจาก เวิร์กสเตชันของคุณโดยใช้ Android Debug Bridge (adb) เช่น คุณสามารถทำให้โปรแกรมแก้ไขข้อบกพร่องใช้งานได้ กับอุปกรณ์ระยะไกลหลายเครื่อง โดยไม่จำเป็นต้องเชื่อมต่ออุปกรณ์ผ่าน USB ทำให้ไม่จำเป็นต้องจัดการกับปัญหาการเชื่อมต่อ USB ทั่วไป เช่น ไดรเวอร์ ของคุณ
ก่อนที่จะเริ่มใช้การแก้ไขข้อบกพร่องผ่าน Wi-Fi ให้ทำตามขั้นตอนต่อไปนี้
-
ตรวจสอบว่าเวิร์กสเตชันและอุปกรณ์เชื่อมต่อกับเครือข่ายไร้สายเดียวกัน
-
ตรวจสอบว่าอุปกรณ์ใช้ Android 11 (API ระดับ 30) ขึ้นไปสำหรับโทรศัพท์หรือ Android 13 (API ระดับ 33) ขึ้นไปสำหรับ TV และ WearOS สำหรับข้อมูลเพิ่มเติม โปรดดู ตรวจสอบและ อัปเดต เวอร์ชัน Android
-
หากใช้ IDE ให้ตรวจสอบว่าคุณได้ติดตั้ง Android Studio เวอร์ชันล่าสุดแล้ว คุณดาวน์โหลดได้ ที่นี่
-
ในเวิร์กสเตชัน ให้อัปเดตเป็นเวอร์ชันล่าสุด เครื่องมือแพลตฟอร์ม SDK
หากต้องการใช้การแก้ไขข้อบกพร่องผ่าน Wi-Fi คุณต้องจับคู่อุปกรณ์กับเวิร์กสเตชันโดยใช้คิวอาร์โค้ดหรือ รหัสการจับคู่ เวิร์กสเตชันและอุปกรณ์ต้องเชื่อมต่อกับเครือข่ายไร้สายเดียวกัน ถึง เชื่อมต่อกับอุปกรณ์ของคุณ ให้ทำตามขั้นตอนต่อไปนี้
-
เปิดใช้ตัวเลือกสำหรับนักพัฒนาแอป บนอุปกรณ์ของคุณ
-
เปิด Android Studio แล้วเลือกจับคู่อุปกรณ์โดยใช้ Wi-Fi จากการเรียกใช้ เมนูการกำหนดค่า
รูปที่ 1 เรียกใช้เมนูการกำหนดค่าหน้าต่างจับคู่อุปกรณ์ผ่าน Wi-Fi จะปรากฏขึ้นดังที่แสดงในรูปที่ 2
รูปที่ 2 หน้าต่างป๊อปอัปสำหรับจับคู่อุปกรณ์โดยใช้คิวอาร์โค้ดหรือการจับคู่ โค้ด -
ในอุปกรณ์ ให้แตะการแก้ไขข้อบกพร่องผ่าน Wi-Fi แล้วจับคู่อุปกรณ์โดยทำดังนี้
รูปที่ 3 ภาพหน้าจอของการตั้งค่าการแก้ไขข้อบกพร่องผ่าน Wi-Fi โทรศัพท์ Google Pixel-
หากต้องการจับคู่อุปกรณ์กับคิวอาร์โค้ด ให้เลือกจับคู่อุปกรณ์กับคิวอาร์โค้ด แล้วสแกน คิวอาร์โค้ดที่ได้รับจากป๊อปอัปจับคู่อุปกรณ์ผ่าน Wi-Fi ที่แสดงในรูปที่ 2
-
หากต้องการจับคู่อุปกรณ์ด้วยรหัสการจับคู่ ให้เลือกจับคู่อุปกรณ์ด้วยรหัสการจับคู่จาก ป๊อปอัปจับคู่อุปกรณ์ผ่าน Wi-Fi บนอุปกรณ์ของคุณ ให้เลือก จับคู่โดยใช้ รหัสการจับคู่ และจดบันทึกรหัส 6 หลักที่ให้ไว้ เมื่ออุปกรณ์ปรากฏใน จับคู่อุปกรณ์ผ่าน Wi-Fi คุณสามารถเลือกจับคู่และป้อนตัวเลข 6 หลัก ที่แสดงในอุปกรณ์ของคุณ
รูปที่ 4 ตัวอย่างการป้อนรหัส 6 หลัก
-
-
หลังจากจับคู่อุปกรณ์แล้ว คุณอาจลองทำให้แอปใช้งานได้ในอุปกรณ์
หากต้องการจับคู่อุปกรณ์อื่นหรือไม่จำอุปกรณ์ปัจจุบันบนเวิร์กสเตชัน ให้ไปที่ การแก้ไขข้อบกพร่องผ่าน Wi-Fi ในอุปกรณ์ แตะชื่อเวิร์กสเตชันของคุณในส่วนจับคู่แล้ว อุปกรณ์ต่างๆ แล้วเลือกไม่จำ
-
หากคุณต้องการเปิดและปิดการแก้ไขข้อบกพร่องผ่าน Wi-Fi อย่างรวดเร็ว คุณสามารถใช้ การ์ดการตั้งค่าด่วนสำหรับนักพัฒนาแอป การแก้ไขข้อบกพร่องผ่าน Wi-Fi ซึ่งอยู่ในตัวเลือกสำหรับนักพัฒนาซอฟต์แวร์ > นักพัฒนาการตั้งค่าด่วน ไทล์
รูปที่ 5 การตั้งค่าการ์ดการตั้งค่าด่วนสำหรับนักพัฒนาแอป ช่วยให้คุณเปิดและปิดการแก้ไขข้อบกพร่องผ่าน Wi-Fi ได้อย่างรวดเร็ว
การเชื่อมต่อ Wi-Fi โดยใช้บรรทัดคำสั่ง
หรือหากต้องการเชื่อมต่อกับอุปกรณ์โดยใช้บรรทัดคำสั่งโดยไม่ใช้ Android Studio ให้ทำตาม ขั้นตอนเหล่านี้:
-
เปิดใช้ตัวเลือกสำหรับนักพัฒนาแอปในอุปกรณ์ของคุณตามที่อธิบายไว้ก่อนหน้านี้
-
เปิดใช้การแก้ไขข้อบกพร่องผ่าน Wi-Fi ในอุปกรณ์ตามที่อธิบายไว้ก่อนหน้านี้
-
บนเวิร์กสเตชัน ให้เปิดหน้าต่างเทอร์มินัลและไปที่
android_sdk/platform-tools
-
ค้นหาที่อยู่ IP, หมายเลขพอร์ต และรหัสการจับคู่โดยเลือกจับคู่อุปกรณ์กับ รหัสการจับคู่ จดที่อยู่ IP, หมายเลขพอร์ต และรหัสการจับคู่ที่แสดงอยู่ใน อุปกรณ์
-
เรียกใช้
adb pair ipaddr:port
บนเครื่องชำระเงินของเวิร์กสเตชัน ใช้ที่อยู่ IP และหมายเลขพอร์ตจากด้านบน -
เมื่อได้รับข้อความแจ้ง ให้ป้อนรหัสการจับคู่ดังที่แสดงด้านล่าง
รูปที่ 6 จะมีข้อความระบุว่าอุปกรณ์สำเร็จแล้ว จับคู่แล้ว
แก้ปัญหาการเชื่อมต่อแบบไร้สาย
หากพบปัญหาในการเชื่อมต่ออุปกรณ์แบบไร้สาย ให้ลองทำตามขั้นตอนต่อไปนี้ ขั้นตอนการแก้ปัญหาได้
ตรวจสอบว่าเวิร์กสเตชันและอุปกรณ์ของคุณมีคุณสมบัติตรงตามข้อกำหนดเบื้องต้นหรือไม่
ตรวจสอบว่าเวิร์กสเตชันและอุปกรณ์มีคุณสมบัติตรงตามข้อกำหนดเบื้องต้นที่ระบุไว้ที่ จุดเริ่มต้นของส่วนนี้
ตรวจสอบปัญหาที่ทราบอื่นๆ
ต่อไปนี้คือรายการปัญหาที่ทราบแล้วในปัจจุบันเกี่ยวกับการแก้ไขข้อบกพร่องผ่าน Wi-Fi (โดยใช้ adb หรือ Android Studio) และวิธีแก้ไข
-
Wi-Fi ไม่เชื่อมต่อ: เครือข่าย Wi-Fi ที่ปลอดภัย เช่น เครือข่าย Wi-Fi ขององค์กร อาจบล็อกการเชื่อมต่อแบบ p2p และไม่ให้คุณเชื่อมต่อผ่าน Wi-Fi ลองเชื่อมต่อด้วยสาย หรือ เครือข่าย Wi-Fi อื่น (ที่ไม่ใช่บริษัท) การเชื่อมต่อแบบไร้สายโดยใช้
adb connect ip:port
ผ่าน tcp/ip (หลังจากการเชื่อมต่อ USB ครั้งแรก) เป็นอีกตัวเลือกหนึ่ง ในกรณีที่เลือกใช้เครือข่ายที่ไม่ใช่องค์กร -
บางครั้งผ่าน Wi-Fi
adb
จะปิดโดยอัตโนมัติ: ปัญหานี้อาจเกิดขึ้นได้หากอุปกรณ์ สลับเครือข่าย Wi-Fi หรือยกเลิกการเชื่อมต่อกับเครือข่าย เชื่อมต่ออีกครั้งเพื่อแก้ไขปัญหา กับเครือข่าย -
อุปกรณ์ไม่เชื่อมต่อหลังจากจับคู่สำเร็จ:
adb
จะใช้ mDNS เพื่อทำงาน ค้นพบและเชื่อมต่อกับอุปกรณ์ที่จับคู่แล้วโดยอัตโนมัติ หากเครือข่ายหรืออุปกรณ์ของคุณ ไม่สนับสนุน mDNS หรือปิดการใช้งาน mDNS แล้ว คุณต้องกำหนดค่าด้วยตนเอง เชื่อมต่อกับอุปกรณ์โดยใช้adb connect ip:port
เชื่อมต่อแบบไร้สายกับอุปกรณ์หลังจากเชื่อมต่อ USB ครั้งแรก (ตัวเลือกมีเฉพาะใน Android 10 และต่ำกว่าเท่านั้น)
หมายเหตุ: เวิร์กโฟลว์นี้ยังใช้ได้กับ Android 11 ด้วย (และ สูงกว่า) มีคำเตือนว่าจะต้องเชื่อมต่อ *เบื้องต้น* ผ่าน USB จริง
หมายเหตุ: คำแนะนำต่อไปนี้ใช้ไม่ได้กับอุปกรณ์ Wear ที่ใช้ Android 10 (API ระดับ 29) หรือต่ำกว่า ดูคำแนะนำเกี่ยวกับ การแก้ไขข้อบกพร่องของแอป Wear OS สำหรับ ข้อมูลเพิ่มเติม
โดยปกติแล้ว adb
จะสื่อสารกับอุปกรณ์ผ่าน USB แต่คุณยังสามารถใช้
adb
ผ่าน Wi-Fi วิธีเชื่อมต่ออุปกรณ์ที่ใช้ Android 10 (API ระดับ 29) หรือต่ำกว่า
ทำตามขั้นตอนเบื้องต้นเหล่านี้ผ่าน USB
-
เชื่อมต่ออุปกรณ์ Android ของคุณและคอมพิวเตอร์โฮสต์
adb
กับเครือข่าย Wi-Fi ทั่วไป - เชื่อมต่ออุปกรณ์กับคอมพิวเตอร์โฮสต์ด้วยสาย USB
-
ตั้งค่าอุปกรณ์เป้าหมายให้ฟังการเชื่อมต่อ TCP/IP บนพอร์ต 5555:
adb tcpip 5555
- ถอดสาย USB ออกจากอุปกรณ์เป้าหมาย
- ค้นหาที่อยู่ IP ของอุปกรณ์ Android เช่น ในอุปกรณ์ Nexus คุณจะเห็น ที่อยู่ IP ที่การตั้งค่า > เกี่ยวกับแท็บเล็ต (หรือเกี่ยวกับโทรศัพท์) > สถานะ > ที่อยู่ IP
-
เชื่อมต่ออุปกรณ์โดยใช้ที่อยู่ IP:
adb connect device_ip_address:5555
-
ตรวจสอบว่าคอมพิวเตอร์โฮสต์เชื่อมต่อกับอุปกรณ์เป้าหมายแล้ว โดยทำดังนี้
$ adb devices List of devices attached device_ip_address:5555 device
หมายเหตุ: โปรดระวังว่าจุดเข้าใช้งานทั้งหมดไม่ได้
เหมาะสม คุณอาจต้องใช้จุดเข้าใช้งาน
ซึ่งมีไฟร์วอลล์ที่กำหนดค่าอย่างเหมาะสมให้รองรับ adb
อุปกรณ์ของคุณเชื่อมต่อกับ adb
แล้ว
หากการเชื่อมต่อ adb
กับอุปกรณ์หายไป ให้ทำดังนี้
- ตรวจสอบว่าโฮสต์ยังคงเชื่อมต่อเครือข่าย Wi-Fi เดียวกันกับอุปกรณ์ Android
-
เชื่อมต่อใหม่โดยทําตามขั้นตอน
adb connect
อีกครั้ง -
หากไม่ได้ผล ให้รีเซ็ตโฮสต์
adb
วันที่adb kill-server
จากนั้นให้เริ่มใหม่ตั้งแต่ต้น
การค้นหาอุปกรณ์
ก่อนออกคำสั่ง adb
คุณควรทราบว่าอุปกรณ์อินสแตนซ์ใดเชื่อมต่ออยู่
ไปยังเซิร์ฟเวอร์ adb
สร้างรายการอุปกรณ์ที่แนบโดยใช้
คำสั่ง devices
:
adb devices -l
adb
จะพิมพ์ข้อมูลสถานะนี้สำหรับอุปกรณ์แต่ละเครื่องในการตอบกลับ
- หมายเลขซีเรียล:
adb
สร้างสตริงเพื่อระบุอุปกรณ์โดยไม่ซ้ำกัน ตามหมายเลขพอร์ต ต่อไปนี้คือตัวอย่างหมายเลขซีเรียล:emulator-5554
- สถานะ: สถานะการเชื่อมต่อของอุปกรณ์อาจเป็นอย่างใดอย่างหนึ่งต่อไปนี้
offline
: อุปกรณ์ไม่ได้เชื่อมต่อกับadb
หรือไม่ได้ต่อ ตอบกลับdevice
: อุปกรณ์เชื่อมต่อกับเซิร์ฟเวอร์ของadb
โปรดทราบว่า สถานะนี้ไม่ได้บอกเป็นนัยว่าระบบ Android บูตขึ้นอย่างสมบูรณ์และทำงานได้เพราะ อุปกรณ์เชื่อมต่อกับadb
ขณะที่ระบบยังบูตอยู่ หลังจากเปิดเครื่องแล้ว นี่จะเป็นการดำเนินการตามปกติ สถานะของอุปกรณ์no device
: ไม่มีอุปกรณ์เชื่อมต่ออยู่
- คำอธิบาย: หากคุณรวมตัวเลือก
-l
แอตทริบิวต์devices
ที่บอกว่าอุปกรณ์คืออะไร ข้อมูลนี้จะเป็นประโยชน์เมื่อคุณมีอุปกรณ์หลายเครื่อง เชื่อมต่ออยู่ เพื่อให้แยกความแตกต่างได้
ตัวอย่างต่อไปนี้แสดงคำสั่ง devices
และเอาต์พุต มี 3 แบบ
อุปกรณ์ที่กำลังใช้งานอยู่ 2 บรรทัดแรกในรายการคือโปรแกรมจำลอง และบรรทัดที่สามคือฮาร์ดแวร์
อุปกรณ์ที่ต่ออยู่กับคอมพิวเตอร์
$ adb devices List of devices attached emulator-5556 device product:sdk_google_phone_x86_64 model:Android_SDK_built_for_x86_64 device:generic_x86_64 emulator-5554 device product:sdk_google_phone_x86 model:Android_SDK_built_for_x86 device:generic_x86 0a388e93 device usb:1-1 product:razor model:Nexus_7 device:flo
ไม่มีโปรแกรมจำลองอยู่ในรายการ
คำสั่ง adb devices
มีลำดับคำสั่งแบบพิมพ์เล็กแบบมุมที่ทำให้เรียกใช้ได้
แม้ว่าโปรแกรมจำลองจะไม่แสดงในเอาต์พุต adb devices
โปรแกรมจำลองจะแสดงบนเดสก์ท็อปของคุณ กรณีนี้จะเกิดขึ้นเมื่อสิ่งต่อไปนี้ทั้งหมด
เป็นจริงดังนี้
- เซิร์ฟเวอร์
adb
ไม่ทำงาน - คุณใช้คำสั่ง
emulator
กับ-port
หรือ ตัวเลือก-ports
ที่มีค่าพอร์ตเป็นเลขคี่ระหว่าง 5554 ถึง 5584 - พอร์ตหมายเลขคี่ที่คุณเลือกไม่ไม่ว่าง จึงสามารถเชื่อมต่อพอร์ตได้ที่ หมายเลขพอร์ตที่ระบุ หรือหากพอร์ตไม่ว่าง โปรแกรมจำลองจะเปลี่ยนเป็น อีกพอร์ตหนึ่งที่มีคุณสมบัติตรงตามข้อกำหนดข้อ 2.
- คุณเริ่มต้นเซิร์ฟเวอร์
adb
หลังจากที่เริ่มโปรแกรมจำลอง
วิธีหนึ่งที่จะหลีกเลี่ยงสถานการณ์นี้ได้คือการให้โปรแกรมจำลองเลือกพอร์ตของตัวเองและไม่ต้องเรียกใช้อีก
โปรแกรมจำลองมากกว่า 16 รายการพร้อมกัน อีกวิธีหนึ่งคือการเริ่มต้นเซิร์ฟเวอร์ adb
ก่อนคุณเสมอ
ให้ใช้คำสั่ง emulator
ตามที่อธิบายไว้ในตัวอย่างต่อไปนี้
ตัวอย่างที่ 1: ในลำดับคำสั่งต่อไปนี้ คำสั่ง adb devices
จะเริ่มต้น
เซิร์ฟเวอร์ adb
แต่รายการอุปกรณ์ไม่ปรากฏขึ้น
หยุดเซิร์ฟเวอร์ adb
แล้วป้อนคำสั่งต่อไปนี้ตามลำดับที่แสดง สำหรับ AVD
โปรดระบุชื่อ AVD ที่ถูกต้องจากระบบของคุณ หากต้องการดูรายการชื่อ AVD ให้พิมพ์
emulator -list-avds
คำสั่ง emulator
อยู่ใน
ไดเรกทอรี android_sdk/tools
$ adb kill-server $ emulator -avd Nexus_6_API_25 -port 5555 $ adb devices List of devices attached * daemon not running. starting it now on port 5037 * * daemon started successfully *
ตัวอย่างที่ 2: ในลำดับคำสั่งต่อไปนี้ adb devices
จะแสดงคำสั่ง
รายการอุปกรณ์เนื่องจากเซิร์ฟเวอร์ adb
เริ่มทำงานก่อน
หากต้องการดูโปรแกรมจำลองในเอาต์พุต adb devices
ให้หยุดเซิร์ฟเวอร์ adb
และ
จากนั้นเริ่มต้นอีกครั้งหลังจากใช้คำสั่ง emulator
และก่อนใช้
adb devices
ดังนี้
$ adb kill-server $ emulator -avd Nexus_6_API_25 -port 5557 $ adb start-server $ adb devices List of devices attached emulator-5557 device
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือกบรรทัดคำสั่งโปรแกรมจำลอง โปรดดูบรรทัดคำสั่ง ตัวเลือกการเริ่มต้นใช้งาน
ส่งคำสั่งไปยังอุปกรณ์ที่ต้องการ
หากมีอุปกรณ์หลายเครื่อง คุณต้องระบุอุปกรณ์เป้าหมาย
เมื่อคุณออกคำสั่ง adb
หากต้องการระบุเป้าหมาย ให้ทำตามขั้นตอนต่อไปนี้
- ใช้คำสั่ง
devices
เพื่อดูหมายเลขซีเรียลของเป้าหมาย - เมื่อคุณมีหมายเลขซีเรียลแล้ว ให้ใช้
-s
พร้อมคำสั่งadb
เพื่อระบุหมายเลขซีเรียล- หากคุณต้องการออกคำสั่ง
adb
จำนวนมาก คุณสามารถตั้งค่า ตัวแปรสภาพแวดล้อม$ANDROID_SERIAL
ที่จะมีหมายเลขซีเรียล แทน - หากคุณใช้ทั้ง 2 รูปแบบ
-s
และ$ANDROID_SERIAL
ลบล้าง-s
$ANDROID_SERIAL
- หากคุณต้องการออกคำสั่ง
ในตัวอย่างต่อไปนี้ จะได้รับรายการอุปกรณ์ที่แนบ จากนั้นจะอยู่ในรูปแบบซีเรียล
หมายเลขของอุปกรณ์ 1 เครื่องที่ใช้ติดตั้ง helloWorld.apk
ในอุปกรณ์นั้น
$ adb devices List of devices attached emulator-5554 device emulator-5555 device 0.0.0.0:6520 device # To install on emulator-5555 $ adb -s emulator-5555 install helloWorld.apk # To install on 0.0.0.0:6520 $ adb -s 0.0.0.0:6520 install helloWorld.apk
หมายเหตุ: หากคุณออกคำสั่งโดยไม่ระบุอุปกรณ์เป้าหมาย
เมื่อมีอุปกรณ์หลายเครื่อง adb
จะแสดงข้อผิดพลาด
"adb: มากกว่าหนึ่งอุปกรณ์/โปรแกรมจำลอง"
หากคุณมีอุปกรณ์หลายเครื่อง แต่มีเครื่องเดียวที่เป็นโปรแกรมจำลอง
ใช้ตัวเลือก -e
เพื่อส่งคำสั่งไปยังโปรแกรมจำลอง ถ้ามี
แต่มีอุปกรณ์ฮาร์ดแวร์เพียงเครื่องเดียวเชื่อมต่ออยู่ ให้ใช้ตัวเลือก -d
เพื่อส่งคำสั่งไปยัง
อุปกรณ์ฮาร์ดแวร์
ติดตั้งแอป
คุณใช้ adb
เพื่อติดตั้ง APK ในโปรแกรมจำลองหรืออุปกรณ์ที่เชื่อมต่อได้
ด้วยคำสั่ง install
:
adb install path_to_apk
คุณต้องใช้ตัวเลือก -t
กับ install
เมื่อคุณติดตั้ง APK ทดสอบ สำหรับข้อมูลเพิ่มเติม
ดู -t
หากต้องการติดตั้ง APK หลายรายการ ให้ใช้ install-multiple
วิธีนี้มีประโยชน์หากคุณดาวน์โหลด
APK สำหรับอุปกรณ์ที่เฉพาะเจาะจงของแอปจาก Play Console และต้องการติดตั้งใน
โปรแกรมจำลองหรืออุปกรณ์จริง
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีการสร้างไฟล์ APK ที่คุณสามารถติดตั้งในโปรแกรมจำลอง/อุปกรณ์ได้ โปรดดูสร้างและเรียกใช้แอป
หมายเหตุ: หากคุณใช้ Android Studio คุณไม่จำเป็นต้องใช้
adb
โดยตรงเพื่อติดตั้งแอปของคุณในโปรแกรมจำลองหรืออุปกรณ์ แต่จะใช้ Android Studio แทน
จะจัดการบรรจุภัณฑ์และการติดตั้งแอปให้คุณ
ตั้งค่าการส่งต่อพอร์ต
ใช้คำสั่ง forward
เพื่อตั้งค่าการส่งต่อพอร์ตที่กำหนดเอง
ส่งต่อคำขอในพอร์ตของโฮสต์ที่ระบุไปยังพอร์ตอื่นในอุปกรณ์
ตัวอย่างต่อไปนี้ตั้งค่าการส่งต่อพอร์ตของโฮสต์ 6100 ไปยังพอร์ตของอุปกรณ์ 7100
adb forward tcp:6100 tcp:7100
ตัวอย่างต่อไปนี้เป็นการตั้งค่าการส่งต่อของพอร์ตโฮสต์ 6100 ไปยัง local:logd
adb forward tcp:6100 local:logd
ซึ่งอาจเป็นประโยชน์หากคุณต้องการลบสิ่งที่กำลังส่งไปยังพอร์ตที่กำหนดใน อุปกรณ์ ข้อมูลที่ได้รับทั้งหมดจะเขียนลงใน Daemon ที่บันทึกระบบและแสดง อยู่ในบันทึกของอุปกรณ์
คัดลอกไฟล์ไปที่และจากอุปกรณ์
ใช้คำสั่ง pull
และ push
เพื่อคัดลอกไฟล์ไปที่
และจากอุปกรณ์ ซึ่งต่างจากคำสั่ง install
ซึ่งคัดลอกไฟล์ APK ไปยังตำแหน่งที่เฉพาะเจาะจงเท่านั้น pull
และ push
คุณจะคัดลอกไดเรกทอรีและไฟล์ที่กำหนดเองไปยังตำแหน่งใดก็ได้ในอุปกรณ์
หากต้องการคัดลอกไฟล์หรือไดเรกทอรีและไดเรกทอรีย่อยจากอุปกรณ์ ให้ทำดังนี้ ให้ทำดังนี้
adb pull remote local
หากต้องการคัดลอกไฟล์หรือไดเรกทอรีและไดเรกทอรีย่อยไปยังอุปกรณ์ ให้ทำดังนี้ ให้ทำดังนี้
adb push local remote
แทนที่ local
และ remote
ด้วยเส้นทางไปยัง
ไฟล์/ไดเรกทอรีเป้าหมายในเครื่องการพัฒนา (ในเครื่อง) และใน
อุปกรณ์ (รีโมต) เช่น
adb push myfile.txt /sdcard/myfile.txt
หยุดเซิร์ฟเวอร์ adb
ในบางกรณี คุณอาจต้องสิ้นสุดกระบวนการของเซิร์ฟเวอร์ adb
แล้วจึงรีสตาร์ท
เพื่อแก้ไขปัญหา ตัวอย่างเช่น กรณีนี้อาจเกิดขึ้นหาก adb
ไม่ตอบสนองต่อคําสั่ง
หากต้องการหยุดเซิร์ฟเวอร์ adb
ให้ใช้คำสั่ง adb kill-server
จากนั้นคุณจะรีสตาร์ทเซิร์ฟเวอร์ได้โดยออกคำสั่ง adb
อื่น
ออกคำสั่ง adb
ออกคำสั่ง adb
จากบรรทัดคำสั่งบนเครื่องพัฒนาหรือจากสคริปต์โดยใช้
ดังต่อไปนี้:
adb [-d | -e | -s serial_number] command
หากมีโปรแกรมจำลองที่ทำงานอยู่เพียง 1 รายการ หรือเชื่อมต่ออุปกรณ์อยู่เพียง 1 เครื่อง คำสั่ง adb
ส่งไปยังอุปกรณ์นั้นโดยค่าเริ่มต้น หากมีโปรแกรมจำลองหลายตัวทำงานอยู่ และ/หรืออุปกรณ์หลายเครื่องทำงานอยู่
ที่แนบมา คุณต้องใช้ -d
, -e
หรือ -s
เพื่อระบุอุปกรณ์เป้าหมายที่ควรส่งคำสั่ง
ดูรายการคำสั่ง adb
ทั้งหมดที่รองรับโดยละเอียดได้โดยใช้คำสั่งต่อไปนี้
คำสั่ง:
adb --help
ออกคำสั่ง Shell
คุณใช้คําสั่ง shell
เพื่อออกคําสั่งของอุปกรณ์ผ่าน adb
หรือเพื่อเริ่ม
Shell แบบอินเทอร์แอกทีฟ หากต้องการออกคำสั่งเดียว ให้ใช้คำสั่ง shell
ดังนี้
adb [-d |-e | -s serial_number] shell shell_command
หากต้องการเริ่ม Shell แบบอินเทอร์แอกทีฟในอุปกรณ์ ให้ใช้คำสั่ง shell
ดังนี้
adb [-d | -e | -s serial_number] shell
หากต้องการออกจาก Shell แบบอินเทอร์แอกทีฟ ให้กด Control+D
หรือพิมพ์ exit
Android มีเครื่องมือบรรทัดคำสั่ง Unix ทั่วไปส่วนใหญ่ สำหรับรายการเครื่องมือที่ใช้ได้ ให้ใช้ คำสั่งต่อไปนี้
adb shell ls /system/bin
มีความช่วยเหลือสำหรับคำสั่งส่วนใหญ่ผ่านอาร์กิวเมนต์ --help
คำสั่ง Shell จำนวนมากมาจาก
toybox
คุณรับความช่วยเหลือทั่วไปเกี่ยวกับคำสั่ง Toybox ทั้งหมดได้ที่ toybox --help
เมื่อใช้เครื่องมือแพลตฟอร์ม Android เวอร์ชัน 23 ขึ้นไป adb
จะจัดการอาร์กิวเมนต์ในลักษณะเดียวกับที่
คำสั่ง ssh(1)
การเปลี่ยนแปลงนี้ได้แก้ไขปัญหาหลายอย่างเกี่ยวกับ
การแทรกคำสั่ง
และช่วยให้เรียกใช้คำสั่งที่มี Shell ได้อย่างปลอดภัย
อักขระเมตา
เช่น adb install Let\'sGo.apk
การเปลี่ยนแปลงนี้หมายถึงการตีความ
ของคำสั่งที่มีอักขระเมตาเชลล์ก็มีการเปลี่ยนแปลงด้วย
ตัวอย่างเช่น ตอนนี้ adb shell setprop key 'value'
เป็นข้อผิดพลาด เนื่องจาก
เครื่องหมายคำพูดเดี่ยว ('
) ถูกกลืนโดย Shell ในเครื่อง และอุปกรณ์จะเห็น
adb shell setprop key value
หากต้องการให้คำสั่งทำงานได้ ให้พูด 2 ครั้ง
สำหรับเชลล์ในเครื่องและอีกครั้งสำหรับ Shell ระยะไกล เช่นเดียวกับที่คุณทำกับ
ssh(1)
เช่น adb shell setprop key 'value'
โปรดดูเพิ่มเติมที่เครื่องมือบรรทัดคำสั่งของ Logcat ซึ่งจะเป็นประโยชน์ สำหรับการตรวจสอบบันทึกของระบบ
เครื่องมือจัดการกิจกรรมการโทร
ภายใน Shell ของ adb
คุณสามารถออกคำสั่งกับเครื่องมือเครื่องมือจัดการกิจกรรม (am
) เพื่อ
ดำเนินการต่างๆ ของระบบ เช่น เริ่มกิจกรรม บังคับให้หยุดกระบวนการ
ประกาศความตั้งใจ ปรับเปลี่ยนคุณสมบัติหน้าจออุปกรณ์ และอื่นๆ
ขณะอยู่ในเชลล์ ไวยากรณ์ am
จะเป็น:
am command
นอกจากนี้คุณยังออกคำสั่งเครื่องมือจัดการกิจกรรมจาก adb
ได้โดยตรง
โดยไม่ต้องป้อน Shell ระยะไกล เช่น
adb shell am start -a android.intent.action.VIEW
ตาราง 1 คำสั่งของเครื่องมือจัดการกิจกรรมที่ใช้ได้
คำสั่ง | คำอธิบาย |
---|---|
start [options] intent
|
เริ่มต้น Activity ที่ระบุโดย
intent โปรดดู ข้อกำหนดสำหรับอาร์กิวเมนต์ Intent โดยมีตัวเลือกดังนี้
|
startservice [options] intent
|
ขึ้นต้น Service ที่ระบุโดย
intent โปรดดู ข้อกำหนดสำหรับอาร์กิวเมนต์ Intent โดยมีตัวเลือกดังนี้
|
force-stop package
|
บังคับหยุดทุกอย่างที่เกี่ยวข้องกับ package
|
kill [options] package
|
ปิดใช้งานกระบวนการทั้งหมดที่เกี่ยวข้องกับ package คำสั่งนี้จะปิดใช้งานเท่านั้น
กระบวนการที่ปลอดภัยซึ่งจะไม่ส่งผลกระทบกับผู้ใช้
ประสบการณ์การใช้งาน
โดยมีตัวเลือกดังนี้
|
kill-all
|
ยกเลิกกระบวนการเบื้องหลังทั้งหมด |
broadcast [options] intent
|
เผยแพร่เจตนาในการออกอากาศ โปรดดู ข้อกำหนดสำหรับอาร์กิวเมนต์ Intent โดยมีตัวเลือกดังนี้
|
instrument [options] component
|
เริ่มการตรวจสอบด้วย
Instrumentation
โดยปกติจะเป็น component เป้าหมาย
คือแบบฟอร์ม test_package/runner_class โดยมีตัวเลือกดังนี้
|
profile start process file
|
เริ่มใช้เครื่องมือสร้างโปรไฟล์ใน process เขียนผลลัพธ์ไปยัง file
|
profile stop process
|
หยุดเครื่องมือสร้างโปรไฟล์ใน process
|
dumpheap [options] process file
|
ถ่ายโอนฮีปของ process เขียนไปยัง file โดยมีตัวเลือกดังนี้
|
set-debug-app [options] package
|
ตั้งค่าแอป package เพื่อแก้ไขข้อบกพร่อง โดยมีตัวเลือกดังนี้
|
clear-debug-app
|
ล้างแพ็กเกจที่ตั้งค่าไว้ก่อนหน้านี้เพื่อแก้ไขข้อบกพร่องด้วย set-debug-app
|
monitor [options]
|
เริ่มตรวจสอบข้อขัดข้องหรือ ANR โดยมีตัวเลือกดังนี้
|
screen-compat {on | off} package
|
ควบคุมหน้าจอ
ความเข้ากันได้ของ package
|
display-size [reset | widthxheight]
|
ลบล้างขนาดการแสดงผลของอุปกรณ์
คำสั่งนี้มีประโยชน์สำหรับการทดสอบแอปบนหน้าจอขนาดต่างๆ โดยการเลียนแบบ
ความละเอียดของหน้าจอโดยใช้อุปกรณ์ที่มีหน้าจอขนาดใหญ่ หรือในทางกลับกัน
ตัวอย่าง: |
display-density dpi
|
ลบล้างความหนาแน่นของการแสดงผลของอุปกรณ์
คำสั่งนี้มีประโยชน์สำหรับการทดสอบแอปกับความหนาแน่นของหน้าจอระดับต่างๆ โดยเลียนแบบความหนาแน่นสูง
ที่ใช้หน้าจอความหนาแน่นต่ำ หรือหน้าจอความหนาแน่นต่ำ
ตัวอย่าง: |
to-uri intent
|
พิมพ์ข้อกำหนด Intent ที่ระบุเป็น URI |
to-intent-uri intent
|
พิมพ์ข้อกำหนด Intent ที่ระบุเป็น URI intent: |
ข้อกำหนดสำหรับอาร์กิวเมนต์ Intent
สำหรับคำสั่งของเครื่องมือจัดการกิจกรรมที่ใช้อาร์กิวเมนต์ intent
คุณจะดำเนินการต่อไปนี้ได้
ให้ระบุ Intent ด้วยตัวเลือกต่อไปนี้
ผู้จัดการแพ็กเกจการโทร (pm
)
ใน Shell ของ adb
คุณสามารถออกคำสั่งกับเครื่องมือจัดการแพ็กเกจ (pm
) เพื่อ
ดำเนินการและการค้นหาในแพ็กเกจแอปที่ติดตั้งในอุปกรณ์
ขณะอยู่ในเชลล์ ไวยากรณ์ pm
จะเป็น:
pm command
นอกจากนี้คุณยังออกคำสั่งตัวจัดการแพ็กเกจจาก adb
ได้โดยตรง
โดยไม่ต้องป้อน Shell ระยะไกล เช่น
adb shell pm uninstall com.example.MyApp
ตาราง 2 คำสั่งตัวจัดการแพ็กเกจที่ใช้ได้
คำสั่ง | คำอธิบาย |
---|---|
list packages [options] filter
|
พิมพ์แพ็กเกจทั้งหมด (ไม่บังคับ)
ผู้ที่มีชื่อแพ็กเกจมีข้อความในภาษา filter ตัวเลือก:
|
list permission-groups
|
พิมพ์กลุ่มสิทธิ์ที่รู้จักทั้งหมด |
list permissions [options] group
|
พิมพ์สิทธิ์ที่รู้จักทั้งหมด (ไม่บังคับ)
เหล่านั้นใน group ตัวเลือก:
|
list instrumentation [options]
|
แสดงรายการแพ็กเกจการทดสอบทั้งหมด ตัวเลือก:
|
list features
|
พิมพ์ฟีเจอร์ทั้งหมดของระบบ |
list libraries
|
พิมพ์ไลบรารีทั้งหมดที่อุปกรณ์ปัจจุบันรองรับ |
list users
|
พิมพ์ผู้ใช้ทั้งหมดในระบบ |
path package
|
พิมพ์เส้นทางไปยัง APK ของ package ที่ระบุ
|
install [options] path
|
ติดตั้งแพ็กเกจที่ระบุโดย path ไปยังระบบ ตัวเลือก:
|
uninstall [options] package
|
นำแพ็กเกจออกจากระบบ ตัวเลือก:
|
clear package
|
ลบข้อมูลทั้งหมดที่เชื่อมโยงกับแพ็กเกจ |
enable package_or_component
|
เปิดใช้แพ็กเกจหรือคอมโพเนนต์ที่กำหนด (เขียนเป็น "package/class") |
disable package_or_component
|
ปิดใช้แพ็กเกจหรือคอมโพเนนต์ที่กำหนด (ซึ่งเขียนเป็น "package/class") |
disable-user [options] package_or_component
|
ตัวเลือก:
|
grant package_name permission
|
ให้สิทธิ์แก่แอป สำหรับอุปกรณ์ที่ใช้ Android 6.0 (API ระดับ 23) และสูงกว่าสิทธิ์ดังกล่าวอาจเป็นสิทธิ์ที่ประกาศไว้ในไฟล์ Manifest ของแอป ในอุปกรณ์ ที่ใช้งาน Android 5.1 (API ระดับ 22) และต่ำกว่า ต้องเป็นสิทธิ์ที่ไม่บังคับตามที่กำหนดโดย แอป |
revoke package_name permission
|
เพิกถอนสิทธิ์จากแอป สำหรับอุปกรณ์ที่ใช้ Android 6.0 (ระดับ API 23) ขึ้นไป สิทธิ์อาจเป็นสิทธิ์ที่ประกาศไว้ในไฟล์ Manifest ของแอป ในอุปกรณ์ ที่ใช้งาน Android 5.1 (API ระดับ 22) และต่ำกว่า ต้องเป็นสิทธิ์ที่ไม่บังคับตามที่กำหนดโดย แอป |
set-install-location location
|
เปลี่ยนตำแหน่งการติดตั้งเริ่มต้น ค่าตำแหน่ง:
หมายเหตุ: วิธีนี้ใช้สำหรับการแก้ไขข้อบกพร่องเท่านั้น การใช้สิ่งนี้อาจทำให้ เพื่อทำให้แอปเสียหายและพฤติกรรมที่ไม่พึงประสงค์อื่นๆ |
get-install-location
|
แสดงตำแหน่งการติดตั้งปัจจุบัน แสดงผลค่า:
|
set-permission-enforced permission [true | false]
|
ระบุว่าควรบังคับใช้สิทธิ์ที่กำหนดหรือไม่ |
trim-caches desired_free_space
|
ตัดไฟล์แคชออกให้ถึงพื้นที่ว่างที่กำหนด |
create-user user_name
|
สร้างผู้ใช้ใหม่ด้วย user_name ที่ระบุ
พิมพ์ตัวระบุผู้ใช้ใหม่ของผู้ใช้
|
remove-user user_id
|
นำผู้ใช้ที่มี user_id ที่ระบุออก
กำลังลบข้อมูลทั้งหมดที่เกี่ยวข้องกับผู้ใช้รายนั้น
|
get-max-users
|
พิมพ์จำนวนผู้ใช้สูงสุดที่อุปกรณ์รองรับ |
get-app-links [options] [package]
|
พิมพ์สถานะการยืนยันโดเมนสำหรับ package ที่ระบุ หรือสำหรับทั้งหมด แพ็กเกจ หากไม่ได้ระบุไว้ รหัสรัฐมีคำจำกัดความดังนี้
โดยมีตัวเลือกดังนี้
|
reset-app-links [options] [package]
|
รีเซ็ตสถานะการยืนยันโดเมนสำหรับแพ็กเกจที่ระบุ หรือสำหรับทั้งหมด แพ็กเกจ หากไม่ได้ระบุไว้
โดยมีตัวเลือกดังนี้
|
verify-app-links [--re-verify] [package]
|
เผยแพร่คำขอยืนยันสำหรับ package ที่ระบุหรือทั้งหมด แพ็กเกจ หากไม่ได้ระบุไว้ ส่งเฉพาะในกรณีที่เคยมีพัสดุมาก่อนเท่านั้น ไม่ได้บันทึกคำตอบ
|
set-app-links [--package package] state domains
|
ตั้งค่าสถานะของโดเมนสำหรับแพ็กเกจด้วยตนเอง โดเมนต้องเป็น แพ็กเกจที่ประกาศเป็น autoVerify เพื่อให้การทำงานนี้ใช้งานได้ คำสั่งนี้ จะไม่รายงานความล้มเหลวสำหรับโดเมนที่ใช้ไม่ได้
|
set-app-links-user-selection --user user_id [--package package]
enabled domains
|
ตั้งค่าสถานะการเลือกผู้ใช้โฮสต์สำหรับแพ็กเกจด้วยตนเอง โดเมน ต้องได้รับการประกาศโดยแพ็กเกจเพื่อให้ใช้งานได้ คำสั่งนี้จะไม่ รายงานความล้มเหลวสำหรับโดเมนที่ใช้ไม่ได้
|
set-app-links-user-selection --user user_id [--package package]
enabled domains
|
ตั้งค่าสถานะการเลือกผู้ใช้โฮสต์สำหรับแพ็กเกจด้วยตนเอง โดเมน ต้องได้รับการประกาศโดยแพ็กเกจเพื่อให้ใช้งานได้ คำสั่งนี้จะไม่ รายงานความล้มเหลวสำหรับโดเมนที่ใช้ไม่ได้
|
set-app-links-allowed --user user_id [--package package] allowed
|
สลับการตั้งค่าการจัดการลิงก์ที่ได้รับการยืนยันอัตโนมัติสำหรับแพ็กเกจ
|
get-app-link-owners --user user_id [--package package] domains
|
พิมพ์เจ้าของโดเมนที่เจาะจงสำหรับผู้ใช้ที่กำหนดตามลำดับลำดับความสำคัญต่ำไปสูง
|
โทรหาตัวจัดการนโยบายด้านอุปกรณ์ (dpm
)
เพื่อช่วยในการพัฒนาและทดสอบแอปการจัดการอุปกรณ์
ไปยังเครื่องมือตัวจัดการนโยบายด้านอุปกรณ์ (dpm
) ใช้เครื่องมือเพื่อควบคุม
แอปผู้ดูแลระบบหรือเปลี่ยนข้อมูลสถานะของนโยบายในอุปกรณ์
ในตัวอย่าง ไวยากรณ์ dpm
จะเป็นดังนี้
dpm command
นอกจากนี้คุณยังออกคำสั่งตัวจัดการนโยบายด้านอุปกรณ์ได้โดยตรงจาก adb
โดยไม่ต้องป้อน Shell ระยะไกล:
adb shell dpm command
ตารางที่ 3 คำสั่งของตัวจัดการนโยบายด้านอุปกรณ์ที่ใช้ได้
คำสั่ง | คำอธิบาย |
---|---|
set-active-admin [options] component
|
ตั้ง component เป็นผู้ดูแลระบบที่ใช้งานอยู่
โดยมีตัวเลือกดังนี้
|
set-profile-owner [options] component
|
ตั้ง component เป็นผู้ดูแลระบบที่ใช้งานอยู่และแพ็กเกจเป็นเจ้าของโปรไฟล์สำหรับผู้ใช้ที่มีอยู่
โดยมีตัวเลือกดังนี้
|
set-device-owner [options] component
|
ตั้ง component เป็นผู้ดูแลระบบที่ใช้งานอยู่และแพ็กเกจเป็นเจ้าของอุปกรณ์
โดยมีตัวเลือกดังนี้
|
remove-active-admin [options] component
|
ปิดใช้ผู้ดูแลระบบที่ใช้งานอยู่ แอปต้องประกาศ
android:testOnly
ในไฟล์ Manifest คำสั่งนี้จะนำเจ้าของอุปกรณ์และโปรไฟล์ออกด้วย
โดยมีตัวเลือกดังนี้
|
clear-freeze-period-record
|
ล้างบันทึกของอุปกรณ์เกี่ยวกับช่วงหยุดทำงานที่กำหนดไว้ก่อนหน้านี้สำหรับการอัปเดต OTA ของระบบ มีประโยชน์
เพื่อหลีกเลี่ยงข้อจำกัดในการตั้งเวลาอุปกรณ์เมื่อพัฒนาแอปที่จัดการช่วงหยุดทำงาน โปรดดู
จัดการการอัปเดตระบบ
รองรับในอุปกรณ์ที่ใช้ Android 9.0 (API ระดับ 28) ขึ้นไป |
force-network-logs
|
บังคับให้ระบบสร้างบันทึกเครือข่ายที่มีอยู่ให้พร้อมสำหรับการดึงข้อมูลโดย DPC หากมี
หรือบันทึก DNS ที่มีอยู่ DPC จะได้รับ
onNetworkLogsAvailable()
Callback ดูการบันทึกกิจกรรมของเครือข่าย
คำสั่งนี้มีการจำกัดอัตรา รองรับในอุปกรณ์ที่ใช้ Android 9.0 (API ระดับ 28) ขึ้นไป |
force-security-logs
|
บังคับให้ระบบสร้างบันทึกความปลอดภัยที่มีอยู่สำหรับ DPC หากมีบันทึก
DPC จะได้รับ
onSecurityLogsAvailable()
Callback โปรดดูที่บันทึกอุปกรณ์ขององค์กร
กิจกรรม
คำสั่งนี้มีการจำกัดอัตรา รองรับในอุปกรณ์ที่ใช้ Android 9.0 (API ระดับ 28) ขึ้นไป |
ถ่ายภาพหน้าจอ
คำสั่ง screencap
เป็นยูทิลิตี Shell สำหรับถ่ายภาพหน้าจอของอุปกรณ์
จอแสดงผล
ขณะอยู่ในเชลล์ ไวยากรณ์ screencap
จะเป็น:
screencap filename
หากต้องการใช้ screencap
จากบรรทัดคำสั่ง ให้ป้อนข้อมูลต่อไปนี้
วันที่
adb shell screencap /sdcard/screen.png
ต่อไปนี้คือตัวอย่างเซสชันภาพหน้าจอที่ใช้ Shell adb
เพื่อจับภาพหน้าจอ
และคำสั่ง pull
เพื่อดาวน์โหลดไฟล์จากอุปกรณ์
$ adb shell shell@ $ screencap /sdcard/screen.png shell@ $ exit $ adb pull /sdcard/screen.png
บันทึกวิดีโอ
คำสั่ง screenrecord
เป็นยูทิลิตี Shell สำหรับบันทึกการแสดงผลของอุปกรณ์
ที่ใช้ Android 4.4 (API ระดับ 19) ขึ้นไป ยูทิลิตีจะบันทึกกิจกรรมบนหน้าจอไปยัง MPEG-4
คุณใช้ไฟล์นี้เพื่อสร้างวิดีโอโปรโมตหรือฝึกอบรม รวมถึงแก้ไขข้อบกพร่องและทดสอบได้
ใน Shell ให้ใช้ไวยากรณ์ต่อไปนี้
screenrecord [options] filename
หากต้องการใช้ screenrecord
จากบรรทัดคำสั่ง ให้ป้อนข้อมูลต่อไปนี้
วันที่
adb shell screenrecord /sdcard/demo.mp4
หยุดบันทึกหน้าจอโดยกด Control+C มิเช่นนั้น ไฟล์บันทึก
หยุดโดยอัตโนมัติที่เวลา 3 นาที หรือตามเวลาที่กำหนดโดย --time-limit
หากต้องการเริ่มบันทึกหน้าจอของอุปกรณ์ ให้เรียกใช้คำสั่ง screenrecord
เพื่อบันทึก
ในวิดีโอ จากนั้นเรียกใช้คำสั่ง pull
เพื่อดาวน์โหลดวิดีโอจากอุปกรณ์ไปยังโฮสต์
คอมพิวเตอร์ ตัวอย่างเซสชันการบันทึกมีดังนี้
$ adb shell shell@ $ screenrecord --verbose /sdcard/demo.mp4 (press Control + C to stop) shell@ $ exit $ adb pull /sdcard/demo.mp4
ยูทิลิตี screenrecord
จะบันทึกที่ความละเอียดและอัตราบิตที่รองรับใดก็ได้
ขณะที่รักษาอัตราส่วนของการแสดงผลของอุปกรณ์ไว้ ระเบียนยูทิลิตีที่เนทีฟ
ความละเอียดและการวางแนวในการแสดงผลโดยค่าเริ่มต้น โดยมีความยาวสูงสุดได้ 3 นาที
ข้อจำกัดของยูทิลิตี screenrecord
:
- ระบบจะไม่บันทึกเสียงกับไฟล์วิดีโอ
- การบันทึกวิดีโอไม่พร้อมใช้งานสำหรับอุปกรณ์ที่ใช้ Wear OS
- อุปกรณ์บางรุ่นอาจบันทึกที่ความละเอียดของจอแสดงผลในเครื่องไม่ได้ หากพบปัญหาเกี่ยวกับการบันทึกหน้าจอ ให้ลองใช้ความละเอียดหน้าจอที่ต่ำลง
- ไม่รองรับการหมุนหน้าจอระหว่างการบันทึก หากหน้าจอหมุนในระหว่าง หน้าจอบางส่วนจะถูกตัดออกขณะบันทึก
ตาราง 4 screenrecord
ตัวเลือก
ตัวเลือก | คำอธิบาย |
---|---|
--help
|
แสดงไวยากรณ์คำสั่งและตัวเลือก |
--size widthxheight
|
กำหนดขนาดวิดีโอ: 1280x720 ค่าเริ่มต้นคือเนทีฟของอุปกรณ์
ความละเอียดในการแสดงผล (หากรองรับ) เป็น 1280x720 หากไม่มี โปรดใช้ขนาดที่รองรับเพื่อให้ได้ผลลัพธ์ที่ดีที่สุด
โดยโปรแกรมเปลี่ยนไฟล์ Advanced Video Coding (AVC) ของอุปกรณ์ |
--bit-rate rate |
กำหนดอัตราบิตของวิดีโอเป็นเมกะบิตต่อวินาที ค่าเริ่มต้นคือ 20 Mbps
คุณสามารถเพิ่มอัตราบิตเพื่อปรับปรุงคุณภาพวิดีโอ แต่การทำเช่นนี้จะทำให้ภาพยนตร์มีขนาดใหญ่ขึ้น
ตัวอย่างต่อไปนี้ตั้งค่าอัตราบิตการบันทึกเป็น 6 Mbps
screenrecord --bit-rate 6000000 /sdcard/demo.mp4 |
--time-limit time |
กำหนดเวลาบันทึกสูงสุดเป็นวินาที ค่าเริ่มต้นและค่าสูงสุดคือ 180 (3 นาที) |
--rotate |
หมุนเอาต์พุต 90 องศา ฟีเจอร์นี้อยู่ในขั้นทดลอง |
--verbose |
แสดงข้อมูลบันทึกในหน้าจอบรรทัดคำสั่ง หากไม่ได้เลือกตัวเลือกนี้ ยูทิลิตีจะไม่แสดงข้อมูลใดๆ ขณะเรียกใช้ |
อ่านโปรไฟล์ ART สำหรับแอป
เริ่มตั้งแต่ Android 7.0 (API ระดับ 24) Android Runtime (ART) จะรวบรวมโปรไฟล์การดำเนินการสำหรับ แอปที่ติดตั้งแล้ว ซึ่งใช้เพื่อเพิ่มประสิทธิภาพการทำงานของแอป ตรวจสอบโปรไฟล์ที่รวบรวมไว้เพื่อทำสิ่งต่อไปนี้ ทำความเข้าใจว่าวิธีใดมีการใช้งานบ่อยและคลาสใดที่ใช้ในระหว่างการเริ่มต้นแอป
หมายเหตุ: คุณจะเรียกโปรไฟล์การดำเนินการได้เท่านั้น ชื่อไฟล์ หากคุณมีสิทธิ์เข้าถึงระดับรูทไปยังระบบไฟล์ เช่น ในโปรแกรมจำลอง
หากต้องการสร้างรูปแบบข้อความของข้อมูลโปรไฟล์ ให้ใช้คำสั่งต่อไปนี้
adb shell cmd package dump-profiles package
หากต้องการเรียกดูไฟล์ที่สร้าง ให้ใช้รูปแบบต่อไปนี้
adb pull /data/misc/profman/package.prof.txt
รีเซ็ตอุปกรณ์ทดสอบ
หากคุณทดสอบแอปผ่านอุปกรณ์ทดสอบหลายเครื่อง การรีเซ็ตอุปกรณ์ในช่วง
เช่น นำข้อมูลผู้ใช้ออกและรีเซ็ตสภาพแวดล้อมการทดสอบ คุณสามารถดำเนินการจากโรงงานได้
การรีเซ็ตอุปกรณ์ทดสอบที่ใช้ Android 10 (API ระดับ 29) ขึ้นไปโดยใช้
คำสั่ง Shell testharness
adb
ตามที่แสดง:
adb shell cmd testharness enable
เมื่อคืนค่าอุปกรณ์โดยใช้ testharness
อุปกรณ์จะสำรองข้อมูล RSA โดยอัตโนมัติ
ที่ช่วยให้แก้ไขข้อบกพร่องผ่านเวิร์กสเตชันปัจจุบันในตำแหน่งถาวรได้ นั่นก็คือ หลังจาก
รีเซ็ตอุปกรณ์แล้ว เวิร์กสเตชันจะยังคงแก้ไขข้อบกพร่องและออกคำสั่ง adb
เพื่อ
อุปกรณ์โดยไม่ต้องลงทะเบียนคีย์ใหม่ด้วยตนเอง
นอกจากนี้ เพื่อช่วยให้คุณทดสอบแอปอย่างต่อเนื่องได้ง่ายและปลอดภัยยิ่งขึ้น โดยใช้
testharness
ในการคืนค่าอุปกรณ์จะเปลี่ยนการตั้งค่าอุปกรณ์ต่อไปนี้ด้วย
- อุปกรณ์จะตั้งค่าระบบบางอย่างเพื่อไม่ให้วิซาร์ดการตั้งค่าอุปกรณ์เริ่มต้นปรากฏขึ้น กล่าวคือ อุปกรณ์จะเข้าสู่สถานะที่คุณสามารถติดตั้ง แก้ไขข้อบกพร่อง และทดสอบแอปได้อย่างรวดเร็ว
- การตั้งค่า
- ปิดใช้หน้าจอล็อก
- ปิดใช้การแจ้งเตือนเหตุฉุกเฉิน
- ปิดการซิงค์อัตโนมัติสำหรับบัญชี
- ปิดใช้งานการอัปเดตระบบอัตโนมัติ
- อื่นๆ:
- ปิดใช้แอปความปลอดภัยที่ติดตั้งไว้ล่วงหน้า
หากแอปต้องตรวจหาและปรับให้เข้ากับการตั้งค่าเริ่มต้นของ testharness
ให้ใช้
ActivityManager.isRunningInUserTestHarness()
SQL Lite
sqlite3
เริ่มต้นโปรแกรมบรรทัดคำสั่ง sqlite
สำหรับตรวจสอบฐานข้อมูล SQLite
ซึ่งมีคำสั่งต่างๆ เช่น .dump
เพื่อพิมพ์เนื้อหาของตารางและ
.schema
เพื่อพิมพ์ใบแจ้งยอด SQL CREATE
สำหรับตารางที่มีอยู่
นอกจากนี้คุณยังเรียกใช้คำสั่ง SQLite จากบรรทัดคำสั่งได้ ดังที่ปรากฏดังนี้
$ adb -s emulator-5554 shell $ sqlite3 /data/data/com.example.app/databases/rssitems.db SQLite version 3.3.12 Enter ".help" for instructions
หมายเหตุ: คุณจะเข้าถึงฐานข้อมูล SQLite ได้เท่านั้น หากคุณมีสิทธิ์เข้าถึงระดับรากไปยังระบบไฟล์ เช่น ในโปรแกรมจำลอง
ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบของบรรทัดคำสั่ง sqlite3
แบ็กเอนด์ USB ของ adb
เซิร์ฟเวอร์ adb สามารถโต้ตอบกับสแต็ก USB ผ่านแบ็กเอนด์ 2 แบบ อาจใช้โฆษณาเนทีฟ
ของระบบปฏิบัติการ (Windows, Linux หรือ macOS) หรือใช้แบ็กเอนด์ libusb
ได้
ฟีเจอร์บางอย่าง เช่น attach
, detach
และการตรวจจับความเร็ว USB มีการ
ใช้ได้เฉพาะเมื่อใช้แบ็กเอนด์ libusb
คุณเลือกแบ็กเอนด์ได้โดยใช้ตัวแปรสภาพแวดล้อม ADB_LIBUSB
หากไม่ได้ตั้งค่าไว้ adb จะใช้แบ็กเอนด์เริ่มต้น ลักษณะการทำงานเริ่มต้นจะแตกต่างกันไปในแต่ละระบบปฏิบัติการ เริ่มต้น
ร่วมกับ ADB v34,
ระบบจะใช้แบ็กเอนด์ liubusb
เป็นค่าเริ่มต้นบนระบบปฏิบัติการทั้งหมดยกเว้น Windows ซึ่งแบ็กเอนด์เนทีฟคือ
ใช้โดยค่าเริ่มต้น หาก ADB_LIBUSB
คือ
ก็จะกำหนดว่าจะใช้แบ็กเอนด์เนทีฟหรือ libusb
โปรดดู
หน้าที่กำหนดเอง adb
เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับตัวแปรสภาพแวดล้อม adb
แบ็กเอนด์ adb mDNS
ADB สามารถใช้โปรโตคอล DNS แบบมัลติแคสต์เพื่อเชื่อมต่อเซิร์ฟเวอร์และอุปกรณ์ได้โดยอัตโนมัติ เซิร์ฟเวอร์ ADB มาพร้อมกับแบ็กเอนด์ 2 ตัว ได้แก่ Bonjour (mdnsResponder ของ Apple) และ Openscreen
แบ็กเอนด์ Bonjour จำเป็นต้องมี Daemon ที่ทำงานในเครื่องโฮสต์
Daemon ในตัวของ Apple ใน macOS จะทำงานอยู่เสมอ แต่ใน Windows และ Linux ผู้ใช้ต้องตรวจสอบว่า Daemon mdnsd
พร้อมใช้งานอยู่
หากคำสั่ง adb mdns check
แสดงผลข้อผิดพลาด เป็นไปได้ว่า ADB กำลังใช้แบ็กเอนด์ Bonjour แต่ไม่มี Bonjour Daemon ที่กำลังทำงาน
แบ็กเอนด์ Openscreen ไม่จำเป็นต้องเรียกใช้ Daemon ในเครื่อง การรองรับแบ็กเอนด์ Openscreen ใน macOS จะเริ่มต้นที่ ADB v35 รองรับ Windows และ Linux ตั้งแต่ ADB v34
โดยค่าเริ่มต้น ADB จะใช้แบ็กเอนด์ Bonjour คุณเปลี่ยนลักษณะการทำงานนี้ได้โดยใช้ตัวแปรสภาพแวดล้อม ADB_MDNS_OPENSCREEN
(ตั้งค่าเป็น 1
หรือ 0
)
ดูรายละเอียดเพิ่มเติมในหน้าที่กำหนดเองสำหรับ ADB