Pull to refresh
130.04
2ГИС
Главные по городской навигации

Парковка магнитолы и гайдлайны Гугла: с чем мы столкнулись, интегрируя навигатор 2ГИС в Android Auto

Reading time6 min
Views7.6K

Привет! Я Аня, QA-инженер из команды Android в 2ГИС. В середине прошлого года мы наладили контакт с командой Гугла. На тот момент релиза SDK Android Auto ещё не было. Но мы получили ранний доступ к SDK и смогли интегрировать в него навигатор первыми в России. В статье я расскажу о том, как это было.

Если вы не знаете, что такое Android Auto, вот официальный ролик:

Постепенно узнавали требования и ограничения

Мы стартовали в июне, когда документация для Android Auto была написана не вся. Целиком она появилась к октябрю 2020-го. До октября мы работали с начальной версией документации.

У Гугла строгие требования к сторонним разработчикам. Условия, что мы узнавали из документации, приходилось учитывать. Нам пришлось или отказываться от первоначальных идей, или внедрять их по-иному. Срезали функционал и дизайн. Приведу несколько примеров.

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

Отказались от показа времени пути до объекта. Изначально планировали так: пользователь набрал в поиске «Кафе», 2ГИС показал пины кафе на карте и мини-карточки. В мини-карточках указаны названия и прочая информация.

Так выглядят мини-карточки
Так выглядят мини-карточки
В мини-карточки мы хотели добавить время пути
В мини-карточки мы хотели добавить время пути

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

Оказалось нельзя отрисовать свой UI. Гугл требует, чтобы все навигаторы выглядели единообразно. Пользователь занят вождением, нельзя тратить его внимание на новый интерфейс. Поэтому весь UI создаётся фреймворком. Мы же смогли только выбрать готовый шаблон и нарисовать на его фоне карту 2ГИС. Нельзя было использовать свои шрифты, управлять дневной и ночной темами.

Пример гайдов Гугла по дизайну
Пример гайдов Гугла по дизайну

Убрали уведомления о камерах измерения скорости. Потому что места под эти уведомления оказались заняты другими кнопками и контролами. А количество элементов на экране ограничено.

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

Это же правило наложило на нас лимит глубины в пять экранов. Например: главный экран → зайти в поиск → получить список кафе → открыть карточку кафе → выбрать альтернативный маршрут — всё, лимит исчерпан. 

Все эти ограничения заставили нас пересмотреть свой процесс внедрения фич.

Обычно он выглядел так:

В задаче внедрения навигатора процесс изменился:

От привычных этапов работы пришлось отказаться. В нетипичной задаче велик риск сделать что-то, а потом выяснить, что нужно иное. Поэтому мы шли короткими итерациями. Разработка, тестирование и работа над дизайнами в разных частях проекта были параллельны. Это помогало быстро определять, что реально сделать, а что — нет.  

Тестировали на собственном железе и тестовом окружении

Первая сборка для QA появилась в конце августа 2020-го. Мы получили магнитолы — такие же, как ставят в автомобили. Но автомобили были не у всех тестировщиков, поэтому наши магнитолы модернизировали: к каждой из них админы припаяли вилку и блок питания на 12В от компьютера.

Когда я начала тестировать магнитолу, столкнулась с проблемой: если я имитирую движение, смотреть карту можно, а копаться в настройках нельзя. Оказалось, что настраивать приложение можно только когда машина стоит — таковы стандарты безопасности. То есть мне надо доказать системе Android Auto, что моя «машина» запаркована.

Моя «машина»
Моя «машина»
Экран настройки Android Auto, когда «машина» не запаркована
Экран настройки Android Auto, когда «машина» не запаркована

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

Ещё мы добавляли железо, когда тестировали озвучку навигатора. У магнитолы нет своих динамиков, она воспроизводит звук через аудиосистему автомобиля. Но наши «машины» её не имели. Значит нужно такое тестовое окружение, которое повторяло бы эту схему.

Я нашла старую колонку, мы с разработчиками придумали, как присоединить её к магнитоле. Зачищаю провода, подключаю — звука всё равно нет.

Тестовый стенд для озвучки — старые колонки Genius
Тестовый стенд для озвучки — старые колонки Genius

Было три варианта, в чём проблема: колонка, магнитола или приложение. Я запустила радио — звук появился. Проблема в приложении! Так я нашла первый баг с приоритетом blocker. Мы зарепортили его в Гугл, и баг пофиксили.

Ещё одним из требований была поддержка Cluster Display. Это дополнительный экран у новых автомобилей, обычно выпущенных после 2020-го года.  

Cluster Display
Cluster Display

Отдельно, как магнитолу, его не купишь. Найти авто с ним непросто. В автосалонах Новосибирска машин с таким дисплеем не было — это проверил наш продакт. Так что мы настроили эмулятор головного устройства и надеялись, что этого достаточно. Естественно, при ревью в стор выяснилось, что это не так. Маневры в Cluster Display не всегда соответствовали маневрам в навигаторе. Эту проблему мы исправили.

Манёвры в Cluster Display не соответствуют манёврам в приложении
Манёвры в Cluster Display не соответствуют манёврам в приложении

Отлавливали баги даже перед релизом

Баги делились на две категории: те, что воспроизводятся только на магнитоле, и те, что воспроизводятся только на авто.

Из первых запомнился баг, когда через несколько минут вождения пропадала навигация. Я запускала эмуляцию движения и через несколько минут меня выкидывало на главный экран. В логах было пусто. Мы решили, что проблема в моей магнитоле и перестали волноваться. Как оказалось, зря. Спустя пару месяцев этот баг усложнил жизнь одному из коллег, когда он установил наш навигатор и поехал на Алтай. 

Фикс этого бага осложнялся тем, что у разработчиков баг по-прежнему не всплывал. Чтобы понять, в чём дело, пришлось обратиться к ребятам из Гугла. Они подсказали нам решение, и баг пофиксили.

Баги, которые воспроизводились только на автомобиле, коллеги отлавливали на своих машинах. Особенно интересным был баг геопозиции. Когда я сидела дома, то меняла свою геопозицию с помощью внутренней утилиты: в ней можно изменить направление движения, остановиться, сойти с маршрута с маршрута и так далее. Тестирование проходило успешно, пока мы не поехали на реальной машине. Выяснилось, что когда машина долго стоит, в пробке или на светофорах, маркер геопозиции крутится вокруг своей оси.

Баг с крутящимся маркером
Баг с крутящимся маркером

Выяснилось, что это даже не баг, а особенность реализации. При низких скоростях движения GNSS сообщает маркеру случайное направление. Как будто мы топчемся на месте всё время поворачиваем. Лечится это тем, что при снижении скорости ниже какого-то порога направление замораживается. В основном приложении 2ГИС это было сделано много лет назад, но в реализации для Android Auto пришлось снова про это вспомнить.

В самом SDK тоже были баги. В наших интересах было работать со стабильным SDK, поэтому мы помогали отлавливать эти баги: собирали логи и видео, отправляли их в багрепортах разработчикам Гугла. Они быстро выходили на диалог и помогали решить проблему — или фиксили баг, или подсказывали, что сделать нам. Было понятно, что им совсем не всё равно, как и когда будет решена проблема. От такого участия у меня осталось очень приятное впечатление.

В SDK мы поймали баг с голосовым поиском. 2ГИС не влияет на контекст распознавания голосового ввода, это часть Гугла. В Академгородке, где находится один из наших офисов, есть столовая «Кукуруза». Когда наш продакт попытался построить маршрут до неё, услышал: «Кукуруза — однолетнее травянистое культурное растение…». Образовательно, конечно, но до котлеток дойти не помогло.

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

Пользователи уже злились: в анонсе, написанном до ревью, мы пообещали Android Auto, но в сторе его по-прежнему нет:

Мы искали проблему несколько дней. Оказалось, наше приложение не останавливалось, когда пользователь запускал другую программу для навигации. На экране всплывали оповещения сразу от двух приложений. По ТЗ это было запрещено. Само собой, такую ошибку в стор пропустить не могли.

Баг, из-за которого приложение не пропустили в стор
Баг, из-за которого приложение не пропустили в стор

Проблему исправили и 12 ноября 2020 года мы запустили публичный бета-тест. Мы были горды — 2ГИС первыми из сторонних разработчиков в России выпустили приложение для Android Auto.

Тестовые стенды, сделанные самостоятельно, и тысячи километров на своих машинах. Плотное общение с разработчиками Гугла, разница во времени с которыми — 14 часов. И работа, где нестандартные решения нужно искать прямо на ходу. Этот проект оказался очень запоминающимся и я рада, что участвовала в нём.

Tags:
Hubs:
Total votes 28: ↑27 and ↓1+26
Comments28

Articles

Information

Website
2gis.ru
Registered
Founded
Employees
1,001–5,000 employees
Location
Россия