เรากำลังตั้งค่าเซิร์ฟเวอร์รวมอย่างต่อเนื่องสำหรับการพัฒนา Android ของเราและเรากำลังพบปัญหาเกี่ยวกับอุปกรณ์ของ ADB อย่างรวดเร็ว
สำหรับบันทึกที่เราได้พยายามแล้วเป็นจำนวนมากของการรวมกันของadb kill-server
, adb start-server
, adb devices
ฯลฯ จะไม่มีประโยชน์
น่าเสียดายที่สิ่งที่ฉันพบบนอินเทอร์เน็ตคือรูปแบบของ "ถอดปลั๊กและถอดปลั๊กอุปกรณ์" ซึ่งเห็นได้ชัดว่าไม่ใช่วิธีแก้ปัญหาสำหรับเรา (เราไม่สามารถให้คนนั่งบนเซิร์ฟเวอร์ CI เพื่อถอดปลั๊กและถอดปลั๊กอุปกรณ์ก่อน แต่ละบิลด์)
ในฐานะที่เป็นพื้นหลังเราใช้ Jenkins บน Mac เนื่องจากใช้ CI สำหรับ iOS ด้วย
ในขณะที่เข้าใกล้ปัญหาฉันคิดว่าถ้าในระดับระบบปฏิบัติการพบอุปกรณ์นั่นเป็นจุดเริ่มต้นอย่างน้อย ที่จริงแล้วการรันคำสั่งเช่นsystem_profiler SPUSBDataType
ค้นหาอุปกรณ์ได้สำเร็จรวมถึงหมายเลขซีเรียลที่ ADB รายงานเมื่อทำงานอย่างถูกต้อง
ฉันได้ลองคำสั่งที่ค่อนข้างง่อยเพื่อ "รีเฟรช" กิจกรรม USB ทั้งหมด แต่ฉันไม่ไปไหนเลย ไม่ใช่ว่าคุณสามารถเมานต์ / เลิกเมานท์อุปกรณ์ได้ แต่ตามจริงแล้วฉันไม่แน่ใจด้วยซ้ำว่าปัญหาอยู่ที่ไหนฉันไม่รู้จักพอเกี่ยวกับโปรโตคอล USB ระดับต่ำ การซุ่มโจมตีของซอร์สโค้ด ADBของฉันนั้นเป็นช็อตที่ยาวมาก ๆ
ดังนั้น ณ จุดนี้ฉันยินดีรับฟังวิธีแก้ปัญหาที่จะช่วยให้เราใช้ Android อย่างสม่ำเสมอบนเซิร์ฟเวอร์ CI ของเรา ไม่ว่าจะเป็นคำสั่งไม่กี่คำก่อนงานของ Jenkins, การติดตั้ง ADB หรือเคล็ดลับมายากลดำอื่น ๆ