LINUX.ORG.RU
решено ФорумTalks

Поясните «нубу» механизм

 ,


0

1

Я практически ничего не знаю про экосистему Android.

Ситуация

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

Однажды эта пауза сильно затянулась. Приложение напоминало «Пора обновиться», человек игнорировал.

Приложение обновилось «самостоятельно». На самом деле как приложение обновилось неизвестно.

Нюанс

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

После «несанкционированного» обновления ничего не работало в открытом приложении: «Неизвестная ошибка».

После перезапуска приложение снова заработало*.

Вопрос

До перезапуска приложения была открыта старая версия? В ФС Android была новая версия? Почему потребовался перезапуск приложения?



Последнее исправление: master_0K (всего исправлений: 1)

Почему потребовался перезапуск приложения?

скопировать и запустить новый блоб из пзу в озу, возможно перечитать конфиги - но это не точно.

etwrq ★★★★★
()

Программа не вся в памяти, начала искать модуль какой-нибудь, а там ничего нет. Чисто предположение.

cyberping
()
Ответ на: комментарий от cyberping

Спасибо @etwrq, @cyberping! Необходимость загрузки нового модуля/блоба, чтение конфигов – вполне возможно (и понятно).

При штатном обновлении это как-то маскируется?

master_0K
() автор топика

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

Почему потребовался перезапуск приложения?

Что-то радикально поменялось и пришлось перечитать программу с флешки для корректной работы. У меня как-то всё, что обновляется, после обновы всегда самосхлопывается и надо запускать 1 раз заново, это нормально.

yu-boot ★★★★★
()
Ответ на: комментарий от master_0K

Я не программист. Думаю зависит от рукопрямости разработчика.

cyberping
()
Ответ на: комментарий от master_0K

При штатном обновлении это как-то маскируется?

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

Ваш случай (фактически бета), с учётом пропуска обновлений (скорее всего критичных), первый запуск что-то делал с ресурсами приложения, может быть конвертил или подтягивал, а второй уже штатно стартовал.

Но это всё гадания, почему бы вам не посмотреть changelog на предмет вот таких вот критичных обновлений?

vvn_black ★★★★★
()
Последнее исправление: vvn_black (всего исправлений: 1)
Ответ на: комментарий от master_0K

При штатном обновлении это как-то маскируется?

старый блоб перезаписывается новым, перезапуск.

пропуск промежуточных версий

свежий блоб скорее всего(99.9999999%) содержит промежуточные исправления

etwrq ★★★★★
()
Последнее исправление: etwrq (всего исправлений: 1)
Ответ на: комментарий от yu-boot

Т.е. это нормально* при обновлении с очень* старой* версии приложения до актуальной?

обновляться может сама софтина как в винде

Видимо это был «запасной ход» разрабов. Ставилось через Play Market (запрет там же был установлен).

master_0K
() автор топика

У меня при обновлении из гугл плей приложения всегда перезапускаются. Теоретически как раз самодельное обновление можно в каких-то пределах сделать без перезапуска (для этого надо вынести обновляемую логику за пределы APK в файловую систему, чтобы можно было её перечитывать без перезапуска приложения), но это имеет ограничения, сложно и в большинстве ситуаций не очень нужно.

А так в целом зависит от криворукости разработчиков. При обновлении может меняться структура каких-нибудь внутренних файлов приложения, в итоге при первом запуске нужна конвертация. Если у разработчика не слишком прямые руки, то процесс конвертации может запускаться не до инициализации приложения, а во время. В итоге оно конвертируется, но успевает обратиться к неконвертированным данным и падает. Запрет автообновлений сетевых приложений в целом ССЗБ (потому что серверу то ты обновляться не запретишь) и многие разработчики предполагают, что разница у 99% пользователей не будет превышать 1-2 версии, так что редкий случай обновления сразу через десяток версий может быть тупо не оттестирован и иметь баги.

KivApple ★★★★★
()
Ответ на: комментарий от master_0K

Т.е. это нормально* при обновлении с очень* старой* версии приложения до актуальной?

Это достаточно редкий юзкейс, потому что у большинства пользователей работает автообновление. Редкие юзкейсы тестируют мало или вообще не тестируют. Ну да, формально это баг и толку?

KivApple ★★★★★
()
Последнее исправление: KivApple (всего исправлений: 1)
Ответ на: комментарий от vvn_black

Был бы нормальный changelog вопросов бы не было. Моё поверхностное знакомство с Play Market подсказывает стандартные плашки:

  • «Улучшена производительность, исправлены ошибки»
  • «Устанена проблема безопасности»
  • «Разработчик не предоставил информацию»

Спасибо.

master_0K
() автор топика
Ответ на: комментарий от master_0K

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

yu-boot ★★★★★
()
Ответ на: комментарий от KivApple

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

Необходимо снова залогиниться/авторизоваться? Но и без обновления
при возврате к приложению может быть такой запрос
master_0K
() автор топика
Ответ на: комментарий от master_0K

Я не про Play, а про разработчика/разработчиков. Если приложение в активной фазе разработки, то обратная связь всегда на пользу. Если её нет, то это не очень хорошо.

vvn_black ★★★★★
()
Ответ на: комментарий от master_0K

Всем спасибо!

В целом понятно. Тему отмечаю решённой.

P.S. Дополнения и уточнения приветствуются.

master_0K
() автор топика
Ответ на: комментарий от master_0K

Перезапускается или нет при штатном обновлении в целом неизвестно

Что значит неизвестно, всё известно.

Да, даже при повороте смартфона и смены ориентации приложением, перезапускается активити переднего плана. А при обновлении и подавно.

vvn_black ★★★★★
()
Ответ на: комментарий от vvn_black

С одной стороны там обратная связь была (обновления до нескольких раз в месяц выходили), а с другой как я понимаю разработчики работали на заказчика. Вероятно, именно он и определял «это пилить, а это выпилить».

master_0K
() автор топика
Ответ на: комментарий от vvn_black

Я вот только сейчас узнал. Простые обыватели вообще такими аспектами не интересуются.

Тогда непонятно снова: зачем потребовалось перезапускать, почему сразу не заработало?

master_0K
() автор топика
Последнее исправление: master_0K (всего исправлений: 1)
Ответ на: комментарий от master_0K

Что значит перезапускается?

В то что оно прям без моргания экрана обновляется (да ещё и через гугл плей) мне очень сложно поверить. Как Android разработчик могу сказать, что приложение частично «перезапускается» даже при повороте экрана (но ОС пытается это скрыть с помощью анимации поворота). И точно перезапускается если просто надолго свернуть и попользоваться другими приложениями (Android достаточно агрессивно выпиливает свёрнутые приложения для экономии ОЗУ).

Если под перезапуском имеется ввиду необходимость переавторизации, то это больше выглядит как жопорукость разработчиков, которые при обновлении меняют формат хранения данных авторизации. Впрочем, раз при обычном обновлении таких жалоб не было, скорее всего жопорукость помножена на обновление с большой разницей в версиях (мб где-то в промежуточных версиях была конвертация учётных данных, а потом её выпилили, потому что всё равно все обновились).

KivApple ★★★★★
()
Последнее исправление: KivApple (всего исправлений: 1)
Ответ на: комментарий от master_0K

Тогда непонятно снова: зачем потребовалось перезапускать, почему сразу не заработало?

Ну вот так. Причин много и о них знают только разработчики.

vvn_black ★★★★★
()
Ответ на: комментарий от KivApple

Я же говорю

  • Было открыто приложение старой версии (Android должен был его удалить из ОЗУ в какой-то момент?)
  • Обновилось (должна стартовать новая версия приложения?)
  • Приложение после авторизации на любое действие юзера говорит «Неизвестная ошибка»
  • Закрывает юзер приложение
  • Открывает снова: после авторизации приложение работает.

Возможно я что-то неправильно понимаю, но поэтому и вопрос возник.

В то что оно прям без моргания экрана обновляется (да ещё и через гугл плей) мне очень сложно поверить.

Этого я не утверждал. Когда именно обновилось неизвестно. После обновлений из плеймаркета открывается и работает. Пользоваться приложением в момент обновления никто и не пытался.

master_0K
() автор топика
Последнее исправление: master_0K (всего исправлений: 1)
Ответ на: комментарий от master_0K

«Улучшена производительность, исправлены ошибки» «Устанена проблема безопасности» «Разработчик не предоставил информацию»

У меня когда-то была прога под Винмобайл. Я иногда специально версию апал, чтобы в еженедельный дайджест 4pda попасть. Писал что-то типа «исправлены баги, улучшены улучшения» :)

Alden ★★★★
()
Последнее исправление: Alden (всего исправлений: 1)
Ответ на: комментарий от master_0K

Например сменилась или удалилась Активити которая была активной в момент сворачивания приложения, или вообще была удалена и заменена на новую, и всё. Или активити поменяли так что она не поняла старый стейт.

no-dashi-v2 ★★★
()

У тебя какое-то не от андроид-приложений определение понятия обновления. На андроиде приложения при обновлении убиваются. Так что за помощью тебе в тот параллельный мир, где ты добыл такой «Андроид».

t184256 ★★★★★
()
Ответ на: комментарий от master_0K

Тогда непонятно снова: зачем потребовалось перезапускать, почему сразу не заработало?

Стоит у вас избушка на курьих ножках, на её месте вы захотели построить 17-ти этажный коттедж. Вопрос: Зачем сносить избушку?

anc ★★★★★
()
Ответ на: комментарий от t184256

Ножки уже старенькие, может и не осилить.

anc ★★★★★
()
Ответ на: комментарий от t184256

Я сразу сказал, что ничего не смыслю в устройстве системы Android. Поэтому моё изложение ситуации напоминает архаичные представления.

Как я теперь понимаю: моё описание мало чего имеет общего с реальными процессами, которые имели место быть.

master_0K
() автор топика
Ответ на: комментарий от master_0K

Я сразу сказал, что ничего не смыслю в устройстве системы Android.

Я лет пять назад даже книги по программированию под Андроид пробовал покупать. Чтобы «въехать» в тему. ))

Как я теперь понимаю: моё описание мало чего имеет общего с реальными процессами, которые имели место быть.

Надо быть индусом и работать в Google, чтобы нормально понимать внутренний мир Android.

i_am_not_ai
()
Ответ на: комментарий от i_am_not_ai

Насколько книги по программированию под Андроид быстро устаревают? Версии Андроида довольно быстро меняются. Маркетологи создают картину полной новизны, как мне кажется. Насколько «механизмы под капотом» стабильны (консервативны)?

master_0K
() автор топика
Ответ на: комментарий от master_0K

Насколько «механизмы под капотом» стабильны (консервативны)?

Я писал под Андроид в 2016-2018 годы.

Проблема там в deprecated не так существенна. Но про новые интерфейсы и возможности новых API приходится гуглить. Т.е., про новые API ты в книгах сведений не найдёшь. К тому же, часто приходится цеплять сторонние либы, т.к. самому написать их - нереально. В книгах ты точно примеров их использования не найдёшь, и на stackoverflow ответов зачастую - нет.

i_am_not_ai
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)