Android автоматическое резервное копирование не работает: транспорт отклонил пакет, потому что он не мог его обработать в то время - PullRequest
1 голос
/ 17 июня 2020

Я разработал приложение с Flutter и Sqlite, и у меня не работает автоматическое резервное копирование android. Я явно указал android: allowBackup = "true" в AndroidManifest. xml. В самый первый раз я выполнил команду:

adb shell bmgr backupnow

Я получил:

Запуск инкрементного резервного копирования для 1 запрошенного пакета. Пакет @ pm @ с результатом: Успех Пакет с результатом: Превышена квота размера Резервное копирование завершено с результатом: Успех

По истечении этого времени я получил:

Запуск инкрементного резервного копирования для 1 запрошенные пакеты. Пакет @ pm @ с результатом: Успех Пакет с результатом: Транспорт отклонен пакет, потому что он не смог обработать его в момент завершения резервного копирования с результатом: Успех

Я не могу понять, почему у меня ошибка «Превышена квота размера»: размер базы данных sqlite намного меньше 25 мб! Я пробовал на разных устройствах, но безуспешно.

1 Ответ

0 голосов
/ 22 августа 2020

Что касается размера более 25 МБ, существуют ли какие-либо временные файлы flutter, используемые для ускорения отладки, установленные в личных папках приложения? Если у вас установлено отлаживаемое приложение, вы сможете запросить внутреннее хранилище приложения, чтобы узнать, что там хранится, позвонив:

adb shell run-as <APP_PACKAGENAME> ls -al 

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

android:fullBackupContent="@xml/backup_rules"

  

рядом с параметром android: allowBackup = "true" (см. https://developer.android.com/guide/topics/data/autobackup для получения более подробной информации о содержимом этого xml файла).

Возможно, также стоит войти в Google Backups, чтобы увидеть резервные копии, связанные с вашей учетной записью Google. Вы вошли в систему с. Оттуда вы можете увидеть, сколько приложений и данных настроек сохранено, а также удалить устаревшие резервные копии.

Вы также можете удалить резервную копию устройства, выключив и снова включив настройку «Резервное копирование на Google Диск». Таким образом, вы будете знать, что начинаете тест с «fre sh».

Попробовав различные комбинации команд резервного копирования из других «решений», я нашел здесь ответ MH: How Do You Протестируйте поведение Android 6.0 с полным резервным копированием?

Удалив резервную копию тестового устройства, а затем следуя инструкциям по этой ссылке, которые позволили мне пройти квоту и «Транспорт отклонен, потому что это не так смог обработать его в то время "ошибки, которые я видел, и получить фактический ответ резервного копирования, например:

Running incremental backup for 1 requested packages.
  Package @pm@ with result: Success
  Package com.example.myapp with progress: 512/66048
  Package com.example.myapp with progress: 2560/66048
  Package com.example.myapp with progress: 10752/66048
  Package com.example.myapp with progress: 18944/66048
  Package com.example.myapp with progress: 27136/66048
  Package com.example.myapp with progress: 35328/66048
  Package com.example.myapp with progress: 43520/66048
  Package com.example.myapp with progress: 51712/66048
  Package com.example.myapp with progress: 59904/66048
  Package com.example.myapp with progress: 68096/66048
  Package com.example.myapp with progress: 68608/66048
  Package com.example.myapp with result: Success
  Backup finished with result: Success

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

...