Перейти к содержанию
Fire Monkey от А до Я
  • 0

Обновление файлов при установке через GooglePlay


walexw

Вопрос

Вопрос к знатокам GooglePlay
Я первый раз разместил приложение в GooglePlay. Оно состоит из пустой базы данных и собственно самого приложения.
Не сразу, но все получилось. Сейчас я доработал программу, добавил еще один отчет. Надо выпускать вторую версию.
Вопрос, как мне правильно сделать?
Те кто скачал первую версию, должны только код обновить до второй и не тронуть БД которую набрали на первой версии.
А те кто новые, и увидят программу сразу со второй версии должны получить ее и пустую БД.
Как такой трюк делается? Подскажите кто делал.
Спасибо.

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

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

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

Ссылка на комментарий
  • 0
  • Модераторы

у @Andrey Efimov есть статья

от себя:

1) это качать с сервера (неважно с какого, хоть с облака)

2) инкрементное имя для базы, файла и тд.

сейчас объясню: 

  • папка с файлами
    • test_1.db
    • test_2.db
    • test_3.db

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

может не лучший вариант, зато кроссплатформенный

Ссылка на комментарий
  • 0

Равиль спасиБо за ответ. Я прочитал статью. Правильно ли я понимаю что для того чтобы обновить файл базы всё равно надо переустанавливать приложение хотя и не удаляя его перед этим? Тогда какой смысл переустанавливать если само приложение не изменилось а только база пополнилась? Логичнее было бы указать местонахождение приложению новоскачанный файл apk и оттуда взять файл базы или просто без apk сам файл базы? Или Андроид такого не позволяет?

С Уважением. Олег.

Ссылка на комментарий
  • 0
2 часа назад, gelo1 сказал:

или просто без apk сам файл базы? Или Андроид такого не позволяет?

Да почему, все позволяет. Не надо переустанавливать приложение. Что вам мешает просто сказать новый файл БД и заменить старый?

Ссылка на комментарий
  • 0
25 минут назад, gelo1 сказал:

СпасиБо за шутку.

Олег.

Где здесь шутка? Просто описался, хотел написать слово "скачать", а написал "сказать". Ничего вам не мешает скачать из приложения файл БД и заменить на этом же приложении.

Изменено пользователем Vitaldj
Ссылка на комментарий
  • 0

Витальджи. Вы меня рассмешили. СпасиБО. А если серьезно тогда прошу Вас расталкуйте мне подробно как в своем приложении на клике на кнопку появилось бы меню с выбором дисков или мест куда скачать файл а после того как пользователь указал например storage/sdcard/проекты сюда из http:........................ указанной в коде ссылке скачался файл. Какими может быть надо дополнительными пользоваться компонентами?

С Уважением. Олег. Буду ждать Вашего ответа.

Ссылка на комментарий
  • 0
  • Модераторы
22 часа назад, gelo1 сказал:

... расталкуйте мне подробно как в своем приложении на клике на кнопку появилось бы меню с выбором дисков или мест куда скачать файл а после того как пользователь указал например storage/sdcard/проекты сюда из http:........................ указанной в коде ссылке скачался файл. Какими может быть надо дополнительными пользоваться компонентами?

С Уважением. Олег. Буду ждать Вашего ответа.

Готового меню для выбора каталога/файла в RAD Studio нет. Есть два варианта, создаёте своё собственное окно или можете попробовать использовать готовые jar библиотеки написанные для Android.

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

 

p.s. Тема будет почищена позже.

Ссылка на комментарий
  • 0
В 06.04.2017 в 13:20, Олег Киреев сказал:

Правильно ли я понимаю что для того чтобы обновить файл базы всё равно надо переустанавливать приложение хотя и не удаляя его перед этим? Тогда какой смысл переустанавливать если само приложение не изменилось а только база пополнилась? Логичнее было бы указать местонахождение приложению новоскачанный файл apk и оттуда взять файл базы или просто без apk сам файл базы?

Использовал такой пример:

procedure TForm1.Button2Click(Sender: TObject);
var
 zip: TZipFile;
 PackageName: JString;
begin
 // Отключаемся от базы
 test_connect.Connected := False;
 // Получаем имя apk файла
 PackageName := SharedActivityContext.getPackageResourcePath;
 if TFile.Exists(JStringToString(PackageName)) then
 begin
  // Удаляем старый файл базы
  TFile.Delete(TPath.GetHomePath + PathDelim + 'test.db');
  // Извлекаем новый файл базы
  zip := TZipFile.Create;
  zip.Open(JStringToString(PackageName), TZipMode.zmRead);
  zip.Extract('assets/internal/test.db', TPath.GetDocumentsPath, False);
  zip.Close;
  zip.free;
 end
 else
  showmessage('False');
 // Подключаемся к базе
 test_connect.Connected := True;
end;

(взято от сих: Delphi разработка под Android: Обновляем файл базы данных без перезапуска приложения (delphifmandroid.blogspot.com))

Суть проблемы была в том, что были изменения и в базе, и в приложении. Но все новые версии устанавливались без переустановки новых *.db файлов. Собственно, данным примером положение исправилось.

Изменено пользователем Hevard
Ссылка на комментарий

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...