Intereting Posts

Что происходит на устройстве Android при обновлении приложения?

Каков рабочий процесс на устройствах, когда Play Store обновляет приложение? Что произойдет, если пользователь одновременно использует приложение?

Я спрашиваю, потому что у нас есть некоторые сбои, когда идентификатор строки не найден, и когда мы смотрели APK, ресурс String доступен в обеих версиях, но шестнадцатеричный идентификатор, указанный в сообщениях о сбоях, найден в OLD apk, а не в NEW один. Это странно.

Это заставляет нас думать, что Play Store, возможно, обновил файлы и ресурсы приложения во время работы приложения, а затем, когда он просмотрел строковый ресурс, чтобы загрузить что-то, он использовал старый идентификатор из памяти и, конечно же, не нашел его В недавно обновленных файлах .. приводит к исключению ResourceNotFound.

Как это возможно? Возможно ли это? Я бы не подумал, кроме случаев, когда мы смотрели в APK, а идентификатор, который был в аварии, соответствовал идентификатору старого ресурса, а не новому, который мы только что нажали.

Solutions Collecting From Web of "Что происходит на устройстве Android при обновлении приложения?"

Из того, что я мог найти при исследовании этого, кажется, что приложение нужно закрыть, чтобы файлы могли быть доступны для обновления. После закрытия Google Play обновляет только измененные фрагменты apk, чтобы сэкономить время и средства.

Есть несколько сообщений в форуме, которые я нашел, которые учат вас, как откатывать параметры приложения из Flash ROM (что происходит постоянно с укорененными устройствами). Возможно, пользователь попытался откат после получения обновления. Либо это, либо идентификатор, который был в аварии, упоминается в части вашего apk, которая не была обновлена.

Источники: уведомление об обновлении

Что происходит при обновлении приложения

Google Play сохраняет стоимость и время

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

Файлы ресурсов, как правило, лениво загружаются, поэтому перемещение старого изображения в памяти будет искать ресурсы и потенциально загружать ресурсы из недавно распакованного приложения. Ресурс может быть несовместим со старым приложением и вызвать сбой.

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

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