Задать вопрос
mitaichik
@mitaichik

Как обновить часть приложения без обновления самого приложения?

Как обновить кусок приложения без обновления всего приложения?

Мое приложение работает со стороннем API. Это API довольно часто обновляется. Каждый раз при их обновлении у меня перестает работать приложение, приходиться переписывать и выкладывать новую версию.

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

Думал сделать так: вынести работу с API сервиса в отдельный модуль (например jar) и при изменении API сервиса заставлять приложение обновлять его без обновления приложения. Но как такое сделать?

UPD Работа через свой сервер не возможна, ибо при моем кол-ве запросов к стороннему API сервис блокирует мой сервер через 10 секунд.
  • Вопрос задан
  • 634 просмотра
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 5
newross
@newross
Product owner
Есть несколько вариантов:
- не вызывать чужое API напрямую, а сделать свой фасад над ним. В итоге достаточно будет оперативно менять бэкэнд, отпадет необходимость в обновлении приложения.
- показывать пользователям диалог большой зеленой кнопкой "Обновить" и объяснением почему без этого приложение работать не будет.
Ответ написан
@LenLord
android reverse
У вас есть 2 пути:
1. Легальный и логичный:
Заводите свой сервер, прописываете всю работу со сторонним апи там. В случае чего просто меняете логику сервера, обновлять приложение не нужно, связь с ним никак не меняется.
2. Относительно легальный:
Используете DexClassLoader и создаете дополнительный .dex, который содержит логику работу с апи (храните первоначально его в ассетах, затем в папке files (к примеру) в /data/data/packagename, а при необходимости - сами скачиваете новую версию со своего сервера и заменяете исходный.
Почему относительно легальный: Ваше приложение могут забанить в ГП (непонятно что вы можете в следющий раз подсунуть клиенту), ваше приложение скорее всего забанит большинство антивирусов.
Ответ написан
@Copperfield
Android dude
Ответ написан
Комментировать
@maratische
попробуйте вынести на свой сервер шаблон по которому обрабатываются скачанные с стороннего сайта данные, если это возможно. те не бинарный код, а инструкцию, по которой ваш бинарный код будет работать.
Далее просто в приложении включите проверку версии инструкции и ее обновление.

советы с загрузкой бинарного кода хороши, но вас забанят.

ps: как вариант, приложение может на вашем сайте проверять текущую версию и если она старая, просто тормозиться и говорить пользователю что работа не возможна, вендор изменил протокол, обновитесь

я так с мегафоном долго воевал
Ответ написан
Fqyeh29
@Fqyeh29
↓ ИМХО ↓
Была подобная проблема, сделал так:
Допустим необходимо сделать запрос1, программа отправляет запрос на сервер, со всеми данными, а сервер уже возвращает сформированный запрос1. программа просто выполняет этот запрос и отправляет данные опять на сервер. Сервер их "конвертирует" и выдает.

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

Да, сложно, не красиво, но удобно. API поменялся, меняете шаблоны на сервере.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы