Сделай сам  -  как автоматизировать прошивку смартфонов

Иногда выдается свободное время, когда можно смастерить что-нибудь полезное из старых гаджетов.

Однажды я подумал… сколько добра пропадает! Ведь вся эта вычислительная мощность может быть еще в чем-то полезной. В общем, представляю вам свой прошивочный стенд.

Конструкция стенда включает 6 разных устройств, смонтированных на панели из ДВП. Я могу управлять ими через Wi-Fi и приложение Android для автоматического тестирования.

Иногда меня спрашивают, как это удалось сделать, поэтому я и решил поделиться своим опытом!

Выбор устройств

Для меня этот шаг оказался несложным. Я просто собрал все имеющиеся неиспользуемые смартфоны. Кроме того, нашлось и несколько старых устройств, оставшихся с предыдущих мест работы, где я был разработчиком для Android.

Но если вы тоже захотите автоматизировать процессы тестирования и прошивки, то следует узнать модели устройств ваших знакомых и клиентов, а впоследствии можно будет добавлять и другие.

К счастью, у меня оказался удачный комплект разнообразных устройств, которые можно было закрепить на стенде в разных ориентациях.

Подбираем панель

Сразу найти готовую подходящую панель для стенда не удалось, поэтому я отпилил два куска ДВП и деревянную доску для подставки.

Чтобы создать презентабельный внешний вид, я обклеил поверхность ДВП бумагой и поэкспериментировал с размещением устройств на панели.

Не забывайте о пространстве для разъемов питания. Оставляйте между устройствами достаточно свободного места!

После предварительной разметки я просверлил отверстия под кабели. Потом начал крепить смартфоны на панель. Для этого сначала решил использовать липкую ленту. Но, честно говоря, это не идеальное решение, потому что некоторые устройства достаточно тяжелые. Поэтому я купил для этой цели немного липучки, пришиваемой обычно в качестве застежек на одежду.

Закрепленные на панели устройства

Потом в качестве подставки я закрепил деревянную доску между двумя листами ДВП, чтобы они могли стоять вертикально.

Электропитание

Чтобы можно было не беспокоиться о подзарядке, а экраны могли всегда оставаться включенными, я подключил все устройства через порт USB.

После тщательного подсчета энергопотребления каждого устройства оказалось, что для общего питания должно хватить мощности одного зарядного устройства Anker 40W c 5 портами USB.

Разводка электропитания

Рутинг

Теперь начинается самое интересное. Для прошивки и программирования смартфонов мне не хотелось каждый раз подключать их к ноутбуку. Поскольку все эти устройства были на Android, я решил их рутировать, чтобы можно было управлять ими через Wi-Fi.

В одних устройствах получить права администратора было очень легко. Я просто загрузил приложение Kingo Root и запустил процесс рутирования.

Другие устройства оказались более закрытыми, их рутирование занимало больше времени, чем предполагалось вначале. При этом мне приходилось выполнять следующие действия:

· Разблокировка загрузчика.

· Прошивка пользовательской программы восстановления.

· Прошивка пользовательского ядра.

К счастью, я использовал довольно старые устройства, например Nexus 9, поэтому найти файлы для их прошивки было несложно. Однако будьте осторожны с рутированием устройств, если не уверены в своих действиях. Можно полностью заблокировать устройство. Я выполнял большую часть операций по рекомендациям с форума XDA.

Процесс рутирования в действии

Проблемы возникли с рутированием устройств Huawei, так как в них для разблокировки загрузчика требуется код, который нужно запрашивать через сайт Huawei. Я отправил туда сообщение, но ответа так и не получил. Поэтому пришлось заменить Huawei на Sony.

Автоматизированное тестирование

Поскольку все устройства были рутированы, ими можно было уже в полной мере управлять. Как у разработчика ПО Android, у меня уже был установлен на компьютер пакет Android Device Bridge (ADB).

ADB  —  это универсальный инструмент с командной строкой, который позволяет взаимодействовать с устройством. Затем я установил приложение, позволившее ADB подключаться к устройству через Wi-Fi без кабеля USB.

Но помните, что это возможно только на устройствах с root-доступом.

ADB через Wi-Fi

Затем я взял свой старый проект для Android на фреймворк Espresso с несколькими автоматическими тестами. Espresso  —  это инструмент для создания отличных, компактных и надежных тестов пользовательского интерфейса Android. Данное приложение включает три экрана, которые не выполняют никаких действий, но включают несколько хороших тестовых примеров с Espresso. Теперь мы почти у цели, можно запустить тест на устройстве через Wi-Fi!

Но среда Android Studio не позволяет выполнять тесты параллельно. А у меня на стенде было шесть устройств. К счастью, есть инструмент под названием Spoon, который запускает тесты на нескольких устройствах одновременно. После завершения всех тестов создается статическая сводка в формате HTML с подробной информацией о каждом устройстве и о процессе тестирования.

Заключительный этап

Единственная ручная операция заключалась в том, что мне нужно было самому подключить эти устройства к ADB, набрав на мониторе команду adb connect <ip-адрес устройства>. Я задумал автоматизировать и этот процесс, а также заключительный этап.

Сначала я подключил устройства со статическими IP-адресами к Wi-Fi. При этом убедился в том, что мой скрипт, который я собирался создать с IP-адресами устройств, всегда действовал правильно.

Теперь сам скрипт. В приложении для Android я использовал Gradle в качестве инструмента сборки. Поэтому в Gradle и была создана задача, которая циклически перебирает IP-адреса устройств, чтобы выполнить команду adb. В завершение, чтобы запускать тесты параллельно, я объединил задачи в Gradle и Spoon!

Конечный результат

Читайте также:

Читайте нас в Telegram, VK и Яндекс.Дзен


Перевод статьи Dennis Anderson: DIY — Device Lab

Предыдущая статьяТри точки (…) в Javascript
Следующая статьяУправляйте приложением React с помощью голоса