Ручне встановлення драйвера ADB
І ось тут на мене чекав неприємний сюрприз - чи то рідний драйвер виявився кривим, чи то вінда, чи провід ... взагалі драйвер то встав, диспетчер пристроїв Windows рапортував про повну працездатність девайса, але на запитadb devicesв консолі я отримував порожній список і, звичайно, тестувати програму на планшеті не вдавалося.
Я написав запит до служби підтримки TeXeT, мені навіть відповіли посиланням на сам драйвер, який, як я вже переконався, не працював. Я почав шукати відповідь в інтернеті і знайшов купу різних збірок цього драйвера і мануалів, але все одно жоден з них не завівся як треба, і навіть рідний драйвер з SDK взагалі ніяк не ставав, що спантеличило мене ... але не розпач.
Ось тут я вирішив спробувати свої сили в написанні драйверів у старому доброму методі наукового тику і відкрив inf-файл драйвера. Надію мені давало розуміння, що софтверна частина інтерфейсу adb з боку планшета повинна бути ідентичною для всіх пристроїв, а USB і так працював. І ось, після кількох невдалих проб ручного виправлення inf-файлу я знайшов рецепт лікування приправи inf-файлу так, щоб воно поставилося і, головне, працювало.
Крок 1. Завантажити драйвер.Якщо ви цього ще не зробили, відкрийте Android SDK Manager, знайдіть розділ Extras, поставте галочку навпроти Google USB Driver і натисніть Install Packages. Все просто. Чекайте, поки завантажиться.
Крок 2. Знайдіть драйвер і зробіть його копію в окрему папку. Ось її скопіюйте кудись, і там будемо проводити подальші маніпуляції. В принципі, можете правити і «оригінал», але я вважав за краще зберегти оригінал незайманим на будь-який пожежник.
Крок 3. Правимо inf-файл.У татці відкриваємо файлandroid_winusb.inf і шукаємо там рядки такого виду:
Робимо копію цих рядків, замінюємоGoogle Nexus Oneна%ім'я_вашого_девайсу%для ідентифікації в майбутньому і відкриваємо диспетчер пристроїв Windows. Шукаємо там наш пристрій (Android,Android Composite ADB Interfaceабо щось у цьому стилі). Відкриваємо властивості пристрою, вкладка «Відомості», у списку вибираємо пункт «ІД обладнання» і бачимо таку картину.

У %SingleAdbInterface% ми кінець рядка видаляємо, очевидно, в %CompositeAdbInterface% вставляємо повністю. Повторювати два рази все, напевно, не треба, але в мене вже все варто і мені ліньки експериментувати :) Зберігаємось (будьте уважні — в деяких випадках для цього потрібно запускати блокнот з правами адміністратора, тому що в режимі користувача вам не дадуть перезаписати inf-файл).Крок 4. Встановлення драйвера.Тепер, коли все підготовлено, повертаємося в диспетчер пристроїв і видаляємо всі раніше встановлені adb драйвери (якщо були). Оновлюємо список пристроїв та бачимо наш девайс без драйверів. Відкриваємо його властивості та вибираємо «оновити драйвери», вибираємо установку з папки, вказуємо папку з поправленим inf-ом і запускаємо установку — наш драйвер моментально знаходиться, але при встановленні він може лаятися про несумісність із питанням «чи продовжувати, насяльнека?». Продовжуємо. Все, драйвер встановлено.Крок 5. Фінал.Для точності робимо вийми-всунь USB-порту, чекаємо поки все виявляється, відкриваємо консоль(Win+R, вводимоcmd) і пишемоadb devices. Якщо все пройшло добре - бачимо заповітний пункт списку, що означає, що adb тепер бачить наш девайс.

Що це було?Насправді все просто. Через деякі причини (вінда мастдай/у прогерів криві руки/гугловський інф-файл писався тільки для рідних гуглівських девайсів/у вашому комп'ютері всі зіпсували бозони Хіггса) вінда не хоче їсти гугловський драйвер для негугловських девайсів, не записаних в inf-. Мабуть, там все зав'язано на цих ІД-обладнання. Але софтверна частина на переважній більшості андроїд-пристроїв в частині дебаггер-конектора до ПК ідентична, тому драйвер повинен нормально спілкуватися з будь-яким андроїд-пристроєм. Наше завдання - обдурити Windows і змусити її прийняти девайс за "драйверо-відповідний", що ми і зробили шляхом дописування його ВД в inf-файл драйвера.
PS Я не проводив масового тестування даного методу, так що не можу гарантувати, що він заробить у 100% у всіх випадках. Але в мене він запрацював на Windows 7, а потім і на Windows 8. Файл доводилося правити для кожного разу окремо, але не думаю, що це вже проблема.