Android «запоминает» общие настройки после полной деинсталляции приложения - PullRequest
0 голосов
/ 17 ноября 2018

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

Когда я тестировал приложение, у меня возникла довольно специфическая проблема.Время от времени я делаю серьезные изменения, чтобы полностью удалить приложение - и даже принудительно закрыть его + очистить все его данные.В этот момент я ожидаю, что устройство не будет иметь «предварительных знаний» о приложении, если оно будет переустановлено.И все же я обнаружил, что строка «Общие настройки» каким-то образом «запоминается».Это приводит к хаосу, если между тем я изменил способ подстроки имени файла выбрать из сохраненной строки общих настроек.

Как я могу убедиться, что приложение имеет «нулевую память» ранее установленной версии, которая имеетвпоследствии был удален?


Одним из решений, которое я использовал в прошлом, было указание Android не делать никаких резервных копий через файл манифеста, android:allowBackup = "false".Тем не менее, я отказался от этой идеи, поскольку - если я не ошибаюсь - это фактически означает, что я запрещаю пользователю переносить свое приложение на новое устройство, когда они решают сменить телефон.

Ответы [ 3 ]

0 голосов
/ 17 ноября 2018

, чтобы расширить это, например, mobile/src/debug/AndroidManifest.xml

<application
    tools:replace="android:allowBackup"
    android:allowBackup="false">

    ...

</application>

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

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

0 голосов
/ 17 ноября 2018

По предложению @ Hungryghost я в итоге реализовал решение

Проблема : общие настройки могут быть запомнены Android после переустановки приложения, и общие инструкции в манифесте по линиям android:allowBackup = "false" не являются решением.

Так почему бы не превратить проблему в решение самостоятельно? Вот что я делаю

  • Проверка общих настроек для конкретного ключа сборки.
  • Если этот ключ не найден, я делаю две вещи

    1. Очистить все общие настройки, context.deleteSharedPrefernces(filename)
    2. Теперь создайте этот ключ для конкретной сборки
    3. Когда я делаю изменения в приложении, которые требуют забыть старые настройки, я просто меняю ключ, специфичный для сборки.
0 голосов
/ 17 ноября 2018

При (пере) установке ваше приложение может восстанавливать файлы из Google Auto-Backup (через Google Drive).Чтобы отключить эту функцию, вы можете явно установить для нее значение false в манифесте:

<manifest ... >
    ...
    <application android:allowBackup="false" ... >
        ...
    </application>
</manifest>

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

См. документацию по автоматическому резервному копированию: https://developer.android.com/guide/topics/data/autobackup#EnablingAutoBackup

Если вы не хотите отключать автоматическое резервное копирование, но хотите переустановить с «чистого листа» (для тестированияцелей), вы можете выполнить одно из следующих действий:

  • Очистить данные приложения после переустановить.Это приведет к удалению файлов, которые были восстановлены автоматически при установке
  • Очистить данные приложения до , чтобы удалить, а затем принудительно создаст новую резервную копию (поэтому старый сбрасывается) с помощью этой команды: adb shell bmgr backupnow <PACKAGE>

Узнайте, как проверить документацию на резервные копии: https://developer.android.com/guide/topics/data/testingbackup#TestingBackup

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...