Ручне встановлення драйвера 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або щось у цьому стилі). Відкриваємо властивості пристрою, вкладка «Відомості», у списку вибираємо пункт «ІД обладнання» і бачимо таку картину.

ручне
Копіюємо рядок, яка найбільше схожа на ту, що показана на малюнку(Вона, за ідеєю просто трохи коротша), і вставляємо її в наш inf-файл.

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

драйвера
З цього моменту можна спокійно запускати eclipse та будувати програми, насолоджуючись зручною автоматичною збіркою, установкою та можливістю дебагу прямо на нашому пристрої.

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

PS Я не проводив масового тестування даного методу, так що не можу гарантувати, що він заробить у 100% у всіх випадках. Але в мене він запрацював на Windows 7, а потім і на Windows 8. Файл доводилося правити для кожного разу окремо, але не думаю, що це вже проблема.