6 puan yazan GN⁺ 2024-01-02 | 1 yorum | WhatsApp'ta paylaş

Android geliştiricilerinin neden artık Windows USB sürücülerine ihtiyaç duymadığı

  • Android platformunun ilk dönemlerinde geliştiriciler cihazları Linux veya Mac OS X üzerinde USB kablosuyla bağlayabiliyordu, ancak Windows kullanıcılarının sürücü bulup yüklemesi gerekiyordu.
  • Artık sürücüye ihtiyaç yok.

USB sürücüleri/işletim sistemi 101

  • Bir USB cihazı porta bağlandığında, işletim sistemi USB descriptor katmanını inceleyerek arayüz için bir sürücü yüklemelidir.
  • USB cihazlarının çoğu, otomatik çalışmaları için işletim sistemine dahil olan yerleşik 'Device Class' sürücüleriyle desteklenir.
  • Windows, yerleşik 'Device Class' sürücüsünü bulamazsa veya daha iyi bir sürücü varsa, kullanıcının yüklediği sürücüyü yükler.

Neden çalışmıyordu

  • Sürücü bulunamazsa Linux usbfs, Mac OS ise IOKit yükleyerek kullanıcı alanı programlarının cihaza erişmesine izin verir.
  • Windows hata bildirir ve sürücü yüklemez; bu yüzden Android cihazına erişilemezdi.

Android sürücüsü neden işe yarıyordu

  • Sürücü kurulurken neler olduğunu anlamak için, Google USB sürücüsünün 'beyni' olan android_winusb.inf inceleniyor.
  • WinUSB, Linux'taki usbfs ve Mac OS'teki IOKite benzer bir USB sürücüsüdür; kullanıcı alanı programlarının arayüzleri numaralandırmasına ve endpoint'lerden okuma-yazma yapmasına olanak tanır.

Android cihazlarının neden artık Windows sürücüsüne ihtiyaç duymadığı

  • Eski yöntemin bariz bir kusuru vardı: Android cihazının VID/PID'si listede yoksa winusb yüklenmiyordu.
  • Windows 8, INF dosyalarından daha iyi bir yöntemle ihtiyaç duyulan sürücüyü doğrudan cihazdan arayüz bazında ister.
  • Cihaz Microsoft OS Descriptor (MOD) ile uyumluysa, Windows Extended Compat ID OS Feature Descriptor'ü ister.
  • Bunun sayesinde winusb.sys yüklenir ve kullanıcı alanı çalıştırılabilir dosyası olan adb, cihazı açıp arayüzü talep ederek geliştiricinin çalışmaya başlamasını sağlar.

Hangi cihazlar Microsoft OS Descriptor'ü destekliyor

  • Kişisel olarak sahip olunan Pixel cihazlara bakıldığında, MOD desteği Pixel 2 (2017) ile Pixel 3a (2019) arasında başlamış görünüyor.

Extended Properties OS Feature Descriptor

  • Pixel 8 gibi daha yeni cihazlarda Extended Properties OS Feature Descriptor bulunuyor; bu, GUID, yardım sayfası, URL ve hatta simge bile içerebiliyor.

GN⁺ görüşü

  • Bu yazının en önemli noktası, Android cihazların artık Windows'ta ayrı bir sürücü kurulumu olmadan da geliştirme için kullanılabilmesi.
  • Microsoft OS Descriptor ve Extended Compat ID OS Feature Descriptor'ün kullanıma girmesiyle kullanıcı deneyimi büyük ölçüde iyileşti.
  • Bu değişim, Android geliştiricilerine kolaylık sağlıyor ve geliştirme ortamına erişilebilirliği artırmaya katkıda bulunuyor.

1 yorum

 
GN⁺ 2024-01-02
Hacker News görüşleri
  • ADB (Android Debug Bridge) sevgisi

    • ADB çok kullanışlı bir araçtır; VPN üzerinden port yeniden yönlendirme bile yapabilir.
    • Android geliştiricisi olmasanız bile bir İsviçre çakısı gibidir ve Android’i tercih etmenin başlıca nedenlerinden biridir.
    • İş profili sayesinde işle ilgili materyaller ile kişisel mahremiyet ihlali unsurları ayrılabildiği için ikinci bir telefona gerek kalmaz.
  • Pixel cihazlarda MOD (Modern Operating Devices) desteğinin başlaması

    • Kişisel Pixel koleksiyonuna bakılırsa, MOD desteği Pixel 2 (2017) ile Pixel 3a (2019) arasında başlamış görünüyor.
    • Muhtemelen Pixel 3’e de uygulanmıştır ve Android 11’i destekleyen tüm CTS (Compatibility Test Suite) uyumlu cihazlar için geçerlidir.
    • OEM’lerin CTS testini geçmek için USB HAL içinde basit bir değer ayarlaması gerekir.
  • Windows Precision Touchpad sürücüsü

    • Bingxing Wang tarafından geliştirilen Apple MacBook/Magic Trackpad 2 için Windows Precision Touchpad uygulamasından bahsediliyor.
  • ADB sürücülerinin gelişimi

    • Geçmişte Windows’un her yeni cihaz için bir .inf sürücü dosyası kurması gerekiyordu; ancak Windows 8 ve sonrasında cihaz, Microsoft OS Descriptors aracılığıyla hangi sürücüye ihtiyaç duyduğunu bildiriyor.
    • Bu da kullanıcı deneyimini iyileştirdi ve yalnızca geliştiriciler için değil, daha iyi bir Android deneyimi isteyen kullanıcılar için de önem taşıyor.
  • Windows’ta USB sürücüsü sorunu

    • Windows’ta USB sürücüleri karmaşık ve bazen tehlikeli olabiliyor.
    • Bazı öğrencilerin Linux’ta sorunsuz çalışan Arduino klonlarını Windows’ta kullanamadığına tanık olunmuş.
    • Windows’un “sahte” sayılan cihazları etkisizleştiren sürücüleri otomatik kurması gibi sorunlar yüzünden, depolama aygıtları dışındaki bir şeyi Windows cihazına bağlamak son çare olarak görülüyor.
  • Microsoft’a özel USB tanımlayıcıları eklenmesine yönelik eleştiri

    • Telefon üreticilerinin Microsoft’a özel USB tanımlayıcıları eklemek zorunda olmasına eleştiri yöneltiliyor.
    • Windows’un, Linux veya macOS’teki gibi standartlaştırılmış bir kullanıcı alanı arayüzüne geçmek yerine Microsoft’a özel özellikler istemesi mantıksız bulunuyor.
  • ADB sorun giderme deneyimi

    • Yakın zamanda Lenovo M7 ile bir sihirli ayna projesi yapılırken ADB sorunlarıyla karşılaşılmış.
    • İlgili tüm Stack Overflow gönderileri bulunup denenmiş ama başarılı olunamamış; bu sorunun çözüldüğünün söylenmesi şaşkınlıkla karşılanıyor.
  • HID protokolü kullanma deneyimi

    • USB’ye bağlı cihazlarda raw HID protokolü kullanılmış ve tüm Windows sürümlerinde iyi çalıştığı görülmüş.
    • Her gereksinim için uygun olmasa da bazı durumlarda oldukça iyi uyuyor.