Ми налаштовуємо сервер безперервної інтеграції для нашої розробки Android, і ми швидко стикаємося з очікуванням проблеми ADB на пристрої .
Для запису, ми вже пробували багато комбінацій adb kill-server
, adb start-server
, adb devices
і т.д., але безрезультатно.
На жаль, все, що я знайшов в Інтернеті, - це варіанти "відключити мережу та відключити пристрій від мережі", що, очевидно, не є рішенням для нас (ми не можемо пошкодити людину сидіти за сервером CI, щоб вимкнути і відключити пристрої раніше кожна збірка).
Як трохи тло, ми використовуємо Jenkins на Mac, оскільки він також запускає наш CI для iOS.
Підходячи до проблеми, я подумав, що якщо на рівні ОС пристрій знайдеться, це хоча б початок. Дійсно, запускаючи таку команду, як system_profiler SPUSBDataType
успішно, знаходить пристрій, включаючи серійний номер, про який повідомляє ADB при правильній роботі.
Я спробував декілька доволі кульгавих команд "оновити" всі USB-дії, але нікуди не пішов. Справа не в тому, що ви можете встановити / відключити пристрій, але якщо чесно, я навіть не впевнений, де проблема, я не знаю достатньо про протоколи USB низького рівня, не кажучи вже про Macs. Моє приховування вихідного коду ADB було дуже-дуже тривалим.
Тож на даний момент я все чую за рішення, яке б дозволило нам послідовно працювати Android на нашому сервері CI. Будьте кілька команд перед кожним завданням Дженкінса, виправлення ADB або будь-який інший чорний фокус.