ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Уважаемый читатель, в этом сообщении блога мы обсуждаем проблему, для которой мы не можем предложить конкретного решения. Спросите любого разработчика, и эти проблемы возникают время от времени, но редко документируются. Если вы зашли на этот пост в поисках ответа, то вы не по адресу. Мы больше не можем воспроизвести первоначальную проблему, что делает дальнейшее расследование практически невозможным. С учетом сказанного, если у вас есть дополнительная информация, давайте начнем разговор. Мы хотели бы услышать в комментариях, если вы тоже испытали это.

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

Как разработчик, вы создаете два приложения, а затем связываете одно внутри другого. Все это довольно хорошо обрабатывается Android Studio, и вам не нужно много думать об этом. То есть до тех пор, пока что-то не пойдет не так. Всего за несколько дней до того, как мы были готовы к отправке, мы внесли последние штрихи в приложение, и все заработало. Жизнь была хороша. Итак, мы сделали нашу сборку-кандидат на выпуск и установили ее. Это не сработало. Связь между телефоном и часами не работала, несмотря на то, что только что работала нормально в сборке для разработчиков. Мы проверили еще раз, dev-сборка работает нормально.

Одно большое различие в распределении носимых приложений между разработкой и выпуском заключается в том, что во время разработки вы сами загружаете последнюю сборку на носимое устройство, а не встраиваете ее в мобильное приложение. Это позволяет избежать ненужных шагов и ускорить разработку. Одним из последних изменений, которые мы внесли, была небольшая настройка протокола связи между двумя приложениями. Таким образом, Android Studio, казалось, кэшировала и связывала старую версию APK Wear, которая не имела обновленного пути и, следовательно, не получала обновлений от компаньона.

В этот момент наше доверие к инструментам разработки немного пошатнулось. Зная, что все работало, когда мы сами создавали и продвигали APK, мы читали о других способах упаковки нашего носимого приложения. Google предоставляет в своих документах несколько разных методов для связывания APK, но все они дали один и тот же результат. В конечном счете, все они по-прежнему полагаются на Android Studio для упаковки, они просто говорят ему делать это по-другому. Пришло время отступить от проблемы и просто немного подумать о ней.

Наступило следующее утро, и мы были настроены на то, чтобы заняться этой проблемой во всеоружии. Потягивая кофе, пока загружаются наши машины, мы делимся сумасшедшими теориями, которые придумали прошлым вечером и во время наших поездок на работу. Запуская Android Studio с нашей игрой лицом, мы запускаем другую сборку просто для здравого смысла и — ОШИБКА КОМПИЛЯЦИИ. Штопать. Ладно, мы кое-что сломали перед отъездом прошлой ночью. Не беспокойтесь, это легко исправить. Вторая попытка компиляции. Сгенерируйте наш подписанный APK, установите и… Работает? Все отлично…?

Итак, у вас есть это. Мы не знаем, с чего началась проблема, но у нас есть пара идей о том, как она могла перестать быть проблемой. Когда мы случайно вносили ошибки в код, мы могли принудительно обновить проект. Функциональность Android Studio Clean/Rebuild Project в любом случае должна делать это, и мы попробовали это. Мы также много раз перезапускали Android Studio в поисках исправления, но одна вещь, которую мы не пробовали, — это перезагрузка компьютера. Возможно, когда мы пришли на следующее утро и загрузили все заново, это очистило некоторые временные файлы, кэшированные IDE.

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

Первоначально опубликовано на karmaninteractive.com 26 августа 2016 г.