Android geliştirmemiz için sürekli bir entegrasyon sunucusu kuruyoruz ve hızla ADB'nin cihaz sorununu beklemeye başladık .
Kayıt için, zaten kombinasyonları bir sürü denedim adb kill-server
, adb start-server
, adb devices
boşuna vb.
Ne yazık ki, internette bulduğum tek şey, "cihazın fişini çekin ve yeniden takın" varyasyonlarıdır, bu bizim için bir çözüm değildir (daha önce cihazları çıkarmak ve çıkarmak için CI sunucusu tarafından oturmak için bir insanı yedekleyemeyiz) her yapı).
Arka plan olarak, bir Mac'te Jenkins kullanıyoruz, çünkü iOS için CI'mızı da çalıştırıyor.
Soruna yaklaşırken, işletim sistemi düzeyinde cihaz bulunursa, bunun en azından bir başlangıç olduğunu düşündüm. Gerçekten, system_profiler SPUSBDataType
ADB'nin doğru çalışırken raporladığı seri numarası da dahil olmak üzere, başarılı bir komut gibi bir komutu çalıştırmak cihazı bulur.
Tüm USB aktivitelerini "yenilemek" için oldukça basit komutlar denedim, ama hiçbir yere gitmedim. Cihazı bağlayabileceğiniz / çıkarabileceğiniz değil, ama dürüst olmak gerekirse, sorunun nerede olduğundan bile emin değilim, Mac'ler için, düşük seviyeli USB protokolleri hakkında yeterince bilgim yok. ADB kaynak kodunu gizlice izlemem çok ama çok uzun sürdü.
Bu noktada, Android'i CI sunucumuzda sürekli olarak çalıştırmamıza izin veren bir çözüm için kulaklarım. Her Jenkins işinden önce birkaç komut olsun, ADB'yi veya diğer kara büyü hilelerini yamalayın.