Nous mettons en place un serveur d'intégration continue pour notre développement Android et nous avons rapidement rencontré ADB en attente de problème de périphérique .
Pour mémoire, nous avons déjà essayé beaucoup de combinaisons adb kill-server
, adb start-server
, adb devices
, etc. en vain.
Malheureusement, tout ce que j'ai trouvé sur Internet sont des variantes de "débrancher et rebrancher l'appareil", ce qui n'est évidemment pas une solution pour nous (nous ne pouvons pas épargner à un être humain de s'asseoir près du serveur CI pour débrancher et rebrancher des appareils avant chaque build).
En guise de contexte, nous utilisons Jenkins sur un Mac, car il exécute également notre CI pour iOS.
En abordant le problème, j'ai pensé que si au niveau du système d'exploitation l'appareil était trouvé, c'était au moins un début. En effet, l'exécution d'une commande comme system_profiler SPUSBDataType
réussit à trouver l'appareil, y compris le numéro de série que ADB signale lorsqu'il fonctionne correctement.
J'ai essayé quelques commandes plutôt boiteuses pour "rafraîchir" toutes les activités USB, mais je ne suis allé nulle part. Ce n'est pas que vous puissiez monter / démonter l'appareil, mais pour être honnête, je ne sais même pas où est le problème, je ne connais pas assez les protocoles USB de bas niveau, encore moins pour les Mac. Ma cachette du code source ADB était un très, très long coup.
Donc, à ce stade, je suis à l'écoute d'une solution qui nous permettrait d'exécuter constamment Android sur notre serveur CI. Que ce soit quelques commandes avant chaque travail Jenkins, patcher ADB ou tout autre tour de magie noire.