Android Debug Bridge (adb
) เป็นเครื่องมือบรรทัดคำสั่งอเนกประสงค์ที่ช่วยให้คุณสื่อสารกับอุปกรณ์ได้ adb
คำสั่งนี้ช่วยให้ดำเนินการต่างๆ ในอุปกรณ์ได้ เช่น การติดตั้งและ
การแก้ไขข้อบกพร่องของแอป adb
ให้สิทธิ์เข้าถึงเชลล์ Unix ที่คุณใช้เรียกใช้คำสั่งต่างๆ
ในอุปกรณ์ได้ เป็นโปรแกรมไคลเอ็นต์-เซิร์ฟเวอร์ที่มีคอมโพเนนต์ 3 อย่าง ได้แก่
- ไคลเอ็นต์ที่ส่งคำสั่ง ไคลเอ็นต์จะทำงานในเครื่องพัฒนาของคุณ คุณเรียกใช้ไคลเอ็นต์จากเทอร์มินัลบรรทัดคำสั่งได้โดยใช้คำสั่ง
adb
- Daemon (adbd) ซึ่งเรียกใช้คำสั่งในอุปกรณ์ โดย Daemon จะทำงานเป็นกระบวนการเบื้องหลัง ในแต่ละอุปกรณ์
- เซิร์ฟเวอร์ที่จัดการการสื่อสารระหว่างไคลเอ็นต์กับ Daemon เซิร์ฟเวอร์ จะทำงานเป็นกระบวนการเบื้องหลังในเครื่องที่ใช้พัฒนา
adb
รวมอยู่ในแพ็กเกจเครื่องมือแพลตฟอร์ม Android SDK ดาวน์โหลดแพ็กเกจนี้
ด้วย SDK Manager ซึ่งจะติดตั้ง
แพ็กเกจที่ android_sdk/platform-tools/
หากต้องการแพ็กเกจเครื่องมือแพลตฟอร์ม Android SDK แบบสแตนด์อโลน ให้ดาวน์โหลดที่นี่
ดูข้อมูลเกี่ยวกับการเชื่อมต่ออุปกรณ์เพื่อใช้ผ่าน adb
รวมถึงวิธีใช้ผู้ช่วยการเชื่อมต่อ
เพื่อแก้ปัญหาที่พบบ่อยได้ที่
เรียกใช้แอปในอุปกรณ์ฮาร์ดแวร์
วิธีการทำงานของ adb
เมื่อคุณเริ่มไคลเอ็นต์ adb
ไคลเอ็นต์จะตรวจสอบก่อนว่ามีกระบวนการเซิร์ฟเวอร์ adb
ทำงานอยู่หรือไม่ หากไม่มี ระบบจะเริ่มกระบวนการของเซิร์ฟเวอร์
เมื่อเซิร์ฟเวอร์เริ่มต้นทำงาน เซิร์ฟเวอร์จะเชื่อมโยงกับพอร์ต TCP ในเครื่อง 5037 และรอรับคำสั่งที่ส่งจากไคลเอ็นต์ adb
หมายเหตุ: ไคลเอ็นต์ adb
ทั้งหมดใช้พอร์ต 5037 ในการสื่อสารกับเซิร์ฟเวอร์ adb
จากนั้นเซิร์ฟเวอร์จะตั้งค่าการเชื่อมต่อกับอุปกรณ์ทั้งหมดที่ทำงานอยู่
โดยจะค้นหาโปรแกรมจำลองด้วยการสแกนพอร์ตเลขคี่ในช่วง
5555 ถึง 5585 ซึ่งเป็นช่วงที่โปรแกรมจำลอง 16 ตัวแรกใช้ เมื่อเซิร์ฟเวอร์พบ adb
daemon (adbd) เซิร์ฟเวอร์จะตั้งค่าการเชื่อมต่อกับพอร์ตนั้น
โปรแกรมจำลองแต่ละโปรแกรมใช้พอร์ต 2 พอร์ตที่เรียงตามลำดับ โดยใช้พอร์ตหมายเลขคู่สำหรับการเชื่อมต่อคอนโซล และใช้พอร์ตหมายเลขคี่สำหรับการเชื่อมต่อ 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) ขึ้นไปสำหรับทีวีและ WearOS ดูข้อมูลเพิ่มเติมได้ที่ ตรวจสอบและอัปเดต เวอร์ชัน Android
-
หากใช้ IDE โปรดตรวจสอบว่าคุณได้ติดตั้ง Android Studio เวอร์ชันล่าสุดแล้ว คุณสามารถดาวน์โหลดได้ ที่นี่
-
ในเวิร์กสเตชัน ให้อัปเดตเป็นเวอร์ชันล่าสุดของ เครื่องมือแพลตฟอร์ม SDK
หากต้องการใช้การแก้ไขข้อบกพร่องแบบไร้สาย คุณต้องจับคู่อุปกรณ์กับเวิร์กสเตชันโดยใช้คิวอาร์โค้ดหรือ รหัสการจับคู่ เวิร์กสเตชันและอุปกรณ์ต้องเชื่อมต่อกับเครือข่ายไร้สายเดียวกัน หากต้องการ เชื่อมต่อกับอุปกรณ์ ให้ทำตามขั้นตอนต่อไปนี้
-
เปิดใช้ตัวเลือกสำหรับนักพัฒนาแอป ในอุปกรณ์
-
เปิด Android Studio แล้วเลือกจับคู่อุปกรณ์โดยใช้ Wi-Fi จากเมนูการกำหนดค่าการเรียกใช้
รูปที่ 1 เมนูการกำหนดค่าการเรียกใช้หน้าต่างจับคู่อุปกรณ์ผ่าน Wi-Fi จะปรากฏขึ้นดังแสดงในรูปที่ 2
รูปที่ 2 หน้าต่างป๊อปอัปเพื่อจับคู่อุปกรณ์โดยใช้คิวอาร์โค้ดหรือรหัสการจับคู่ -
ในอุปกรณ์ ให้แตะการแก้ไขข้อบกพร่องแบบไร้สาย แล้วจับคู่อุปกรณ์
รูปที่ 3 ภาพหน้าจอของการตั้งค่าการแก้ไขข้อบกพร่องแบบไร้สายใน โทรศัพท์ Google Pixel-
หากต้องการจับคู่อุปกรณ์ด้วยคิวอาร์โค้ด ให้เลือกจับคู่อุปกรณ์ด้วยคิวอาร์โค้ด แล้วสแกน คิวอาร์โค้ดที่ได้จากป๊อปอัปจับคู่อุปกรณ์ผ่าน Wi-Fi ที่แสดงในรูปที่ 2
-
หากต้องการจับคู่อุปกรณ์ด้วยรหัสการจับคู่ ให้เลือกจับคู่อุปกรณ์ด้วยรหัสการจับคู่จาก ป๊อปอัปจับคู่อุปกรณ์ผ่าน Wi-Fi ในอุปกรณ์ ให้เลือกจับคู่โดยใช้รหัส การจับคู่และจดรหัส 6 หลักที่ระบุไว้ เมื่ออุปกรณ์ปรากฏในหน้าต่างจับคู่อุปกรณ์ผ่าน Wi-Fi แล้ว คุณสามารถเลือกจับคู่และป้อนรหัส 6 หลัก ที่แสดงในอุปกรณ์
รูปที่ 4 ตัวอย่างการป้อนรหัส 6 หลัก
-
-
หลังจากจับคู่อุปกรณ์แล้ว คุณจะพยายามติดตั้งใช้งานแอปในอุปกรณ์ได้
หากต้องการจับคู่อุปกรณ์อื่นหรือลืมอุปกรณ์ปัจจุบันในเวิร์กสเตชัน ให้ไปที่ การแก้ไขข้อบกพร่องแบบไร้สายในอุปกรณ์ แตะชื่อเวิร์กสเตชันในส่วนอุปกรณ์ที่จับคู่ แล้วเลือกเลิกจำ
-
หากต้องการเปิดและปิดการแก้ไขข้อบกพร่องแบบไร้สายอย่างรวดเร็ว คุณสามารถใช้การ์ดการตั้งค่าด่วนสำหรับนักพัฒนาแอปสำหรับการแก้ไขข้อบกพร่องแบบไร้สายได้ ซึ่งอยู่ในตัวเลือกสำหรับนักพัฒนาแอป > การ์ดการตั้งค่าด่วนสำหรับนักพัฒนาแอป
รูปที่ 5 การตั้งค่าองค์ประกอบการตั้งค่าด่วนสำหรับนักพัฒนาแอป ช่วยให้คุณเปิดและปิดการแก้ไขข้อบกพร่องแบบไร้สายได้อย่างรวดเร็ว
การเชื่อมต่อ Wi-Fi โดยใช้บรรทัดคำสั่ง
หรือหากต้องการเชื่อมต่อกับอุปกรณ์โดยใช้บรรทัดคำสั่งโดยไม่ต้องใช้ Android Studio ให้ทำตาม ขั้นตอนต่อไปนี้
-
เปิดใช้ตัวเลือกสำหรับนักพัฒนาแอปในอุปกรณ์ตามที่อธิบายไว้ก่อนหน้านี้
-
เปิดใช้การแก้ไขข้อบกพร่องแบบไร้สายในอุปกรณ์ตามที่อธิบายไว้ก่อนหน้านี้
-
ในเวิร์กสเตชัน ให้เปิดหน้าต่างเทอร์มินัลแล้วไปที่
android_sdk/platform-tools
-
ค้นหาที่อยู่ IP หมายเลขพอร์ต และรหัสการจับคู่โดยเลือกจับคู่อุปกรณ์ด้วยรหัสการจับคู่ จดที่อยู่ IP หมายเลขพอร์ต และรหัสจับคู่ที่แสดงใน อุปกรณ์
-
เรียกใช้
adb pair ipaddr:port
ในเทอร์มินัลของเวิร์กสเตชัน ใช้ที่อยู่ IP และหมายเลขพอร์ตจากด้านบน -
เมื่อได้รับข้อความแจ้ง ให้ป้อนรหัสการจับคู่ตามที่แสดงด้านล่าง
รูปที่ 6 ข้อความจะระบุว่าจับคู่อุปกรณ์เรียบร้อยแล้ว
แก้ไขปัญหาการเชื่อมต่อแบบไร้สาย
หากพบปัญหาในการเชื่อมต่อกับอุปกรณ์แบบไร้สาย ให้ลองทำตามขั้นตอนการแก้ปัญหาต่อไปนี้เพื่อแก้ไขปัญหา
ตรวจสอบว่าเวิร์กสเตชันและอุปกรณ์ของคุณมีคุณสมบัติตรงตามข้อกำหนดเบื้องต้นหรือไม่
ตรวจสอบว่าเวิร์กสเตชันและอุปกรณ์เป็นไปตามข้อกำหนดเบื้องต้นที่ระบุไว้ที่ตอนต้นของส่วนนี้
ตรวจสอบปัญหาอื่นๆ ที่ทราบ
ต่อไปนี้คือรายการปัญหาที่ทราบแล้วในปัจจุบันเกี่ยวกับการแก้ไขข้อบกพร่องแบบไร้สาย (ด้วย adb หรือ Android Studio) และวิธีแก้ไขปัญหา
-
Wi-Fi ไม่เชื่อมต่อ: เครือข่าย Wi-Fi ที่ปลอดภัย เช่น เครือข่าย Wi-Fi ขององค์กร อาจบล็อกการเชื่อมต่อแบบ P2P และไม่ให้คุณเชื่อมต่อผ่าน Wi-Fi ลองเชื่อมต่อด้วยสายหรือ เครือข่าย Wi-Fi อื่น (ที่ไม่ใช่ขององค์กร) การเชื่อมต่อแบบไร้สายโดยใช้
adb connect ip:port
ผ่าน tcp/ip (หลังจากเชื่อมต่อ USB ครั้งแรก) เป็นอีกตัวเลือกหนึ่ง ในกรณีที่การใช้เครือข่ายที่ไม่ใช่ขององค์กรเป็นตัวเลือก -
adb
ผ่าน Wi-Fi บางครั้งจะปิดโดยอัตโนมัติ: กรณีนี้อาจเกิดขึ้นหากอุปกรณ์ เปลี่ยนเครือข่าย 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 บรรทัดแรกในรายการคือโปรแกรมจำลอง และบรรทัดที่ 3 คืออุปกรณ์ฮาร์ดแวร์
ที่เชื่อมต่อกับคอมพิวเตอร์
$ 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
ให้มีหมายเลขซีเรียลแทนได้ - หากคุณใช้ทั้ง
-s
และ$ANDROID_SERIAL
-s
จะลบล้าง$ANDROID_SERIAL
- หากต้องการออก
ในตัวอย่างต่อไปนี้ ระบบจะดึงรายการอุปกรณ์ที่เชื่อมต่อ จากนั้นจะใช้หมายเลขซีเรียล
ของอุปกรณ์เครื่องใดเครื่องหนึ่งเพื่อติดตั้ง 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: more than one device/emulator"
หากมีอุปกรณ์หลายเครื่องที่พร้อมใช้งาน แต่มีเพียงเครื่องเดียวที่เป็นโปรแกรมจำลอง
ให้ใช้ตัวเลือก -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
หากมีโปรแกรมจำลองทำงานอยู่เพียงโปรแกรมเดียวหรือมีอุปกรณ์เชื่อมต่ออยู่เพียงเครื่องเดียว ระบบจะส่งคำสั่ง adb
ไปยังอุปกรณ์นั้นโดยค่าเริ่มต้น
หากมีการเรียกใช้โปรแกรมจำลองหลายรายการและ/หรือมีการแนบอุปกรณ์หลายเครื่อง คุณต้องใช้ตัวเลือก -d
, -e
หรือ -s
เพื่อระบุอุปกรณ์เป้าหมายที่ควรส่งคำสั่งไป
คุณดูรายการคำสั่ง adb
ทั้งหมดที่รองรับได้โดยใช้คำสั่งต่อไปนี้
adb --help
ออกคำสั่ง Shell
คุณใช้คำสั่ง shell
เพื่อออกคำสั่งไปยังอุปกรณ์ผ่าน adb
หรือเพื่อเริ่มเชลล์แบบอินเทอร์แอกทีฟได้ หากต้องการออกคำสั่งเดียว ให้ใช้คำสั่ง shell
ดังนี้
adb [-d |-e | -s serial_number] shell shell_command
หากต้องการเริ่มเชลล์แบบอินเทอร์แอกทีฟในอุปกรณ์ ให้ใช้คำสั่ง shell
ดังนี้
adb [-d | -e | -s serial_number] shell
หากต้องการออกจากเชลล์แบบอินเทอร์แอกทีฟ ให้กด Control+D
หรือพิมพ์ exit
Android มีเครื่องมือบรรทัดคำสั่ง Unix ที่ใช้กันโดยทั่วไปส่วนใหญ่ หากต้องการดูรายการเครื่องมือที่ใช้ได้ ให้ใช้คำสั่งต่อไปนี้
adb shell ls /system/bin
คุณขอความช่วยเหลือสำหรับคำสั่งส่วนใหญ่ได้ผ่านอาร์กิวเมนต์ --help
คำสั่งเชลล์หลายคำสั่งมาจาก toybox
ความช่วยเหลือทั่วไปที่ใช้ได้กับคำสั่งทั้งหมดของกล่องเครื่องมือมีให้ใช้งานผ่าน toybox --help
เมื่อใช้ Android Platform Tools 23 ขึ้นไป adb
จะจัดการอาร์กิวเมนต์ในลักษณะเดียวกับที่คำสั่ง ssh(1)
ทำ การเปลี่ยนแปลงนี้ได้แก้ไขปัญหามากมายเกี่ยวกับ
การแทรกคำสั่ง
และทำให้สามารถเรียกใช้คำสั่งที่มีเชลล์
อักขระเมตาได้อย่างปลอดภัย
เช่น adb install Let\'sGo.apk
การเปลี่ยนแปลงนี้หมายความว่าการตีความ
คำสั่งใดๆ ที่มีอักขระเมตาของเชลล์จะเปลี่ยนแปลงไปด้วย
เช่น adb shell setprop key 'two words'
จะเป็นข้อผิดพลาด
เนื่องจากเชลล์ในเครื่องจะกลืนเครื่องหมายคำพูด และอุปกรณ์จะเห็น
adb shell setprop key two words
หากต้องการให้คำสั่งทำงาน ให้ใส่เครื่องหมายคำพูด 2 ครั้ง
ครั้งหนึ่งสำหรับเชลล์ในเครื่องและอีกครั้งสำหรับเชลล์ระยะไกล เช่นเดียวกับที่ทำกับ
ssh(1)
ตัวอย่างเช่น adb shell setprop key "'two words'"
ใช้ได้เนื่องจากเชลล์ในเครื่องจะใช้เครื่องหมายคำพูดระดับนอกสุดและอุปกรณ์
ยังคงเห็นเครื่องหมายคำพูดระดับในสุด: setprop key 'two words'
การหลีกเลี่ยงก็เป็นอีกทางเลือกหนึ่ง แต่โดยปกติแล้วการใส่เครื่องหมายคำพูด 2 ครั้งจะง่ายกว่า
ดูเครื่องมือบรรทัดคำสั่ง Logcat ด้วย ซึ่งมีประโยชน์ สำหรับการตรวจสอบบันทึกของระบบ
เครื่องมือจัดการกิจกรรมการโทร
ภายใน adb
shell คุณสามารถออกคำสั่งด้วยเครื่องมือ Activity Manager (am
) เพื่อ
ดำเนินการต่างๆ ในระบบ เช่น เริ่มกิจกรรม บังคับหยุดกระบวนการ
ออกอากาศ Intent แก้ไขพร็อพเพอร์ตี้หน้าจออุปกรณ์ และอื่นๆ
ขณะอยู่ในเชลล์ ไวยากรณ์ am
จะเป็นดังนี้
am command
นอกจากนี้ คุณยังออกคำสั่ง Activity Manager ได้โดยตรงจาก adb
โดยไม่ต้องเข้าเชลล์ระยะไกล เช่น
adb shell am start -a android.intent.action.VIEW
ตารางที่ 1 คำสั่ง Activity Manager ที่ใช้ได้
คำสั่ง | คำอธิบาย |
---|---|
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 การออกอากาศ ดูข้อกำหนดสำหรับอาร์กิวเมนต์ของ 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 ตัวเลือกมีดังนี้
|
dumpbitmaps [options] [-p process]
|
ส่งออกข้อมูลบิตแมปจาก process
(API ระดับ 36 ขึ้นไป)
ตัวเลือกมีดังนี้
process ระบบจะทิ้งบิตแมปจากกระบวนการทั้งหมด
|
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 ที่ระบุเป็น intent: URI |
ข้อกำหนดสำหรับอาร์กิวเมนต์ของ Intent
สำหรับคำสั่ง Activity Manager ที่ใช้อาร์กิวเมนต์ intent
คุณสามารถ
ระบุ Intent ด้วยตัวเลือกต่อไปนี้
เรียกใช้เครื่องมือจัดการแพ็กเกจ (pm
)
ภายใน adb
Shell คุณสามารถออกคำสั่งด้วยเครื่องมือจัดการแพ็กเกจ (pm
) เพื่อ
ดำเนินการและค้นหาแพ็กเกจแอปที่ติดตั้งในอุปกรณ์ได้
ขณะอยู่ในเชลล์ ไวยากรณ์ pm
จะเป็นดังนี้
pm command
นอกจากนี้ คุณยังออกคำสั่ง Package Manager ได้โดยตรงจาก adb
โดยไม่ต้องเข้าเชลล์ระยะไกล เช่น
adb shell pm uninstall com.example.MyApp
ตารางที่ 2 คำสั่ง Package Manager ที่ใช้ได้
คำสั่ง | คำอธิบาย |
---|---|
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-allowed --user user_id [--package package] allowed
|
สลับการตั้งค่าการจัดการลิงก์ที่ยืนยันโดยอัตโนมัติสำหรับแพ็กเกจ
|
get-app-link-owners --user user_id [--package package] domains
|
พิมพ์เจ้าของสำหรับโดเมนที่เฉพาะเจาะจงสำหรับผู้ใช้ที่กำหนดตามลำดับความสำคัญจากต่ำไปสูง
|
โทรหาผู้จัดการนโยบายอุปกรณ์ (dpm
)
ออกคำสั่งไปยังเครื่องมือ Device Policy Manager (dpm
) เพื่อช่วยคุณพัฒนาและทดสอบแอปการจัดการอุปกรณ์ ใช้เครื่องมือเพื่อควบคุมแอปผู้ดูแลระบบที่ใช้งานอยู่
หรือเปลี่ยนข้อมูลสถานะของนโยบายในอุปกรณ์
ขณะอยู่ในเชลล์ dpm
ไวยากรณ์จะเป็นดังนี้
dpm command
นอกจากนี้ คุณยังออกคำสั่ง Device Policy Manager ได้โดยตรงจาก adb
โดยไม่ต้องเข้าเชลล์ระยะไกล
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()
ดูการบันทึกกิจกรรมของเครือข่าย
คำสั่งนี้ถูกจำกัดอัตรา รองรับในอุปกรณ์ที่ใช้ Android 9.0 (API ระดับ 28) ขึ้นไป |
force-security-logs
|
บังคับให้ระบบแสดงบันทึกความปลอดภัยที่มีอยู่ต่อ DPC หากมีบันทึก
ที่พร้อมใช้งาน DPC จะได้รับการเรียกกลับ
onSecurityLogsAvailable()
ดูบันทึกกิจกรรมในอุปกรณ์ขององค์กร
คำสั่งนี้ถูกจำกัดอัตรา รองรับในอุปกรณ์ที่ใช้ Android 9.0 (API ระดับ 28) ขึ้นไป |
ถ่ายภาพหน้าจอ
คำสั่ง screencap
เป็นยูทิลิตีเชลล์สำหรับถ่ายภาพหน้าจอของจอแสดงผลของอุปกรณ์
ขณะอยู่ในเชลล์ ไวยากรณ์ screencap
จะเป็นดังนี้
screencap filename
หากต้องการใช้ screencap
จากบรรทัดคำสั่ง ให้ป้อนข้อมูลต่อไปนี้
adb shell screencap /sdcard/screen.png
ตัวอย่างเซสชันภาพหน้าจอโดยใช้เชลล์ adb
เพื่อจับภาพหน้าจอ
และคำสั่ง pull
เพื่อดาวน์โหลดไฟล์จากอุปกรณ์มีดังนี้
$ adb shell shell@ $ screencap /sdcard/screen.png shell@ $ exit $ adb pull /sdcard/screen.png
หรือหากไม่ระบุชื่อไฟล์ screencap
จะเขียนรูปภาพไปยังเอาต์พุตมาตรฐาน เมื่อใช้ร่วมกับ-p
ตัวเลือกเพื่อระบุรูปแบบ PNG คุณจะสตรีมภาพหน้าจอของอุปกรณ์ไปยังไฟล์ในเครื่องของคุณได้โดยตรง
ต่อไปนี้คือตัวอย่างการจับภาพหน้าจอและบันทึกไว้ในเครื่องด้วยคำสั่งเดียว
# use 'exec-out' instead of 'shell' to get raw data $ adb exec-out screencap -p > screen.png
บันทึกวิดีโอ
คำสั่ง screenrecord
เป็นยูทิลิตีเชลล์สำหรับบันทึกการแสดงผลของอุปกรณ์ที่ใช้ Android 4.4 (API ระดับ 19) ขึ้นไป ยูทิลิตีจะบันทึกกิจกรรมบนหน้าจอลงในไฟล์ MPEG-4
คุณใช้ไฟล์นี้เพื่อสร้างวิดีโอโปรโมตหรือวิดีโอฝึกอบรม หรือใช้สำหรับการแก้ไขข้อบกพร่องและการทดสอบได้
ในเชลล์ ให้ใช้ไวยากรณ์ต่อไปนี้
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()
sqlite
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
แบ็กเอนด์ mDNS ของ adb
ADB สามารถใช้โปรโตคอล DNS แบบหลายผู้รับเพื่อเชื่อมต่อเซิร์ฟเวอร์และอุปกรณ์โดยอัตโนมัติ เซิร์ฟเวอร์ ADB มาพร้อมกับแบ็กเอนด์ 2 รายการ ได้แก่ Bonjour (mdnsResponder ของ Apple) และ Openscreen
แบ็กเอนด์ Bonjour ต้องมี Daemon ทำงานในเครื่องโฮสต์
ใน macOS Daemon ในตัวของ Apple จะทำงานอยู่เสมอ แต่ใน 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
โหมดถ่ายภาพต่อเนื่องของ adb (เริ่มตั้งแต่ ADB 36.0.0)
โหมดถ่ายภาพต่อเนื่องเป็นฟีเจอร์ทดลองที่ช่วยให้ ADB ส่งแพ็กเก็ต ไปยังอุปกรณ์ได้ต่อไปแม้ว่าอุปกรณ์จะยังไม่ได้ตอบกลับแพ็กเก็ตก่อนหน้าก็ตาม ซึ่งจะช่วยเพิ่มปริมาณข้อมูลของ ADB อย่างมากเมื่อโอนไฟล์ขนาดใหญ่ และยังช่วยลดเวลาในการตอบสนองขณะแก้ไขข้อบกพร่องด้วย
โหมดถ่ายภาพต่อเนื่องจะปิดอยู่โดยค่าเริ่มต้น หากต้องการเปิดใช้ฟีเจอร์นี้ ให้ทำอย่างใดอย่างหนึ่งต่อไปนี้
- ตั้งค่าตัวแปรสภาพแวดล้อม
ADB_DELAYED_ACK
เป็น1
- ใน Android Studio ให้ไปที่การตั้งค่าดีบักเกอร์ที่ไฟล์ (หรือ Android Studio ใน macOS) > การตั้งค่า > สร้าง, ดำเนินการ, การติดตั้งใช้งาน > ดีบักเกอร์ แล้วตั้งค่าโหมดต่อเนื่องของเซิร์ฟเวอร์ ADB เป็นเปิดใช้