Как сохранить данные из приложения, которое работает в режиме отладки?

106
16 июня 2021, 22:30

Написал приложение под Андроид для собственных нужд. Без публикации, просто запустил на мобильном телефоне из под Android Studio. Пользовался год, время от времени модернизируя программу. Всё было хорошо, пока не настало время поменять компьютер. Как только я пытаюсь с другого компьютера загрузить обновленное приложение на мобильный телефон, все данные приложения удаляются.

Вопрос: Как проще всего достать данные из приложения? Экспорт/Импорт? Как обновить приложение с нового компьютера, чтобы данные не пропадали? Нужен самый понятный и простой способ. Доступ к старому компьютеру и к исходному коду приложения имеется.

Answer 1

У вас идёт обновление с потерей данных по одной из двух причин (или обе сразу):

  1. Не тот ключ подписи приложения. Скорее всего у вас стандартный Debug ключ.
  2. Обновление идёт с понижением версии приложения.

Соответственно пути решения:

  1. Перенести ключ подписи приложения со старого компа на новый.
  2. Повысить версию приложения до такой же или большей.

Ключ подписи приложения обычно лежит тут:

  • Windows C:\Users\USERNAME\.android\debug.keystore (где USERNAME это имя пользователя PC)
  • Linux или Mac OS User: ~/.android/debug.keystore

Данные вытаскивать нужно по разному в зависимости от их типа и местоположения.

  1. Если у вас используются SharedPreferences - то ищите файлы в /data/data/ТУТ_ИМЯ_ПАКЕТА_ПРИЛОЖЕНИЯ/shared_prefs/ТУТ_ИМЯ_ПАКЕТА_ПРИЛОЖЕНИЯ_preferences.xml. Это требует root доступа к девайсу. Если его нет - экспортируйте программно, дописав нужный код в приложении.

  2. Если БД - то ищите файл оной тут: /data/data/ТУТ_ИМЯ_ПАКЕТА_ПРИЛОЖЕНИЯ/databases/ТУТ_ИМЯ_БД. Также нужен root доступ. Если нет его - также пишите код по вытаскиванию данных. По идее оптимально будет или в JSON формате вытаскивать или в виде дампа БД в виде набора скриптов инсерта всего и всё + скрипт создания схемы. Возможно есть даже встроенные возможности для дампа.

  3. Если файлы на девайсе - собственно просто скопировать их надо. Если они не в публичном месте сохранены и нет root доступа - также пишите код по их извлечению.

READ ALSO
Что означает действие в скобках?

Что означает действие в скобках?

Что означает действие в скобках конкретно в моей ситуации?

120
Как разбудить устройство в BroadcastReceiver?

Как разбудить устройство в BroadcastReceiver?

Условие: Есть приложение которое, в определённый момент, должно пробуждать устройство (экран устройства должен включится) и показывать уведомлениеРабота...

101
Как узнать общий объем ОЗУ в системе?

Как узнать общий объем ОЗУ в системе?

Смотрел в javadocТам написано, что в java 1

96
Удаление переноса строки из текста

Удаление переноса строки из текста

Есть файл с текстом типа " А1, Б2, В3,

120