Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
ILNAR_93
Android
224 / 224 / 23
Регистрация: 19.01.2013
Сообщений: 1,731
Записей в блоге: 3
#1

Автообновление приложения - Программирование Android

29.01.2016, 14:57. Просмотров 1477. Ответов 37
Метки нет (Все метки)

Возможно ли автообновление приложения программно?
без участия гугл плей т.е. приложение установлено из ненадежного источника
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.01.2016, 14:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Автообновление приложения (Программирование Android):

Автообновление через Google Play - Программирование Android
Заметил, что некоторые приложения(не по умолчанию) обновляются через GP автоматически. Как сделать такое для своего приложения?

Ошибка при вызове приложения из другого приложения - Программирование Android
Сделано два простеньких приложения и я хочу чтобы одно приложение запускало другое. В приложении, которое будет запущено установлен фильтр...

Из приложения А проверить наличие установленного на устройстве приложения В - Программирование Android
Извиняюсь за нубский вопрос. Подскажите в андроид есть возможность из приложения А проверить наличие установленного на устройстве...

Запуск приложения из другого приложения - Программирование Android
Собственно вопрос уже назван в теме: есть приложение, как по нажатии кнопки запустить другое, которое уже есть в системе Android? Как это...

Запуск приложения из другого приложения - Программирование Android
Привет товарищи! Имеется два приложения. Задача следующая: Из первого приложения запустить второе, да так, что бы второе приложение...

Автообновление приложения - Delphi
Подскажите как реализовать обновление программы. Моя программа написанная в делфи управляет базой данных хранящейся на сетевом диске. На...

37
Lumber
99 / 99 / 37
Регистрация: 02.12.2015
Сообщений: 239
29.01.2016, 16:24 #16
У меня на планшете Explay с момента покупки была установлена какая-то прога (с трудом её нашёл и удалил, название не помню) которая постоянно самовольно скачивала и устанавливала другие программы. Никаких подтверждений от пользователя для этого не требовалось.
1
androbro
326 / 287 / 61
Регистрация: 17.10.2014
Сообщений: 854
29.01.2016, 16:52 #17
Цитата Сообщение от Lumber Посмотреть сообщение
У меня на планшете Explay с момента покупки была установлена какая-то прога (с трудом её нашёл и удалил, название не помню) которая постоянно самовольно скачивала и устанавливала другие программы. Никаких подтверждений от пользователя для этого не требовалось.
системные приложения могут иметь permission INSTALL_PACKAGES, который как я понял и позволяет "в тихую" инсталить приложения.
1
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
04.03.2016, 12:16 #18
Парни, подскажите.
Сейчас сделано так: есть программа, которая при запуске определяет наличие новой версии. Если есть, запускает другую (инсталлятор), которая скачивает новый файл и обновляет программу.
Думаю, нужен ли инсталлятор. Можно ли обновить программу саму из себя? Какие могут быть проблемы? Например, может ли она не установиться, но при этом удалиться (в результате ошибок или неправильных действий пользователя)? Не будет ли там каких-нибудь бесконечных циклов установок?
0
androbro
326 / 287 / 61
Регистрация: 17.10.2014
Сообщений: 854
04.03.2016, 13:10 #19
Цитата Сообщение от CoolMind Посмотреть сообщение
Можно ли обновить программу саму из себя?
лично я в этом не вижу ничего плохого, зачем плодить еще и установщики какие то, кинули интент на установку - все, миссия программы выполнена, а если уже сам пользователь откажется устанавливать, то тут уже ничего с этим не поделаешь.
Цитата Сообщение от CoolMind Посмотреть сообщение
Например, может ли она не установиться, но при этом удалиться
чет первый раз о таком слышу, да даже если такое и имеет где то место быть, мы же все равно на сам процесс установки никак повлиять не может.
1
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
04.03.2016, 13:32 #20
Цитата Сообщение от androbro Посмотреть сообщение
зачем плодить еще и установщики какие то
Отлично!
Цитата Сообщение от androbro Посмотреть сообщение
мы же все равно на сам процесс установки никак повлиять не может.
Видите ли, я до конца процесс ещё не понимаю. Допустим, текущий файл называется application.v1.apk. На сервере есть новая версия (назовём её application.v2.apk). Мы его скачали и устанавливаем. После установки удаляем с карты памяти application.v1.apk. Если во время установки что-то случится, прога не установится (например, место закончилось), то установщики не удалятся? Или это зависит от бажности кода?
Можно ли делать разные названия у файлов или лучше одинаковые?
0
androbro
326 / 287 / 61
Регистрация: 17.10.2014
Сообщений: 854
04.03.2016, 13:45 #21
CoolMind, чет Вы через чур мудрите, у меня все проще:
-при авторизации в приложении проверяем наличие обновления;
-если оно имеется, скачиваем в какое либо место(при этом сохраняя его допустим в SharedPreferences);
-кидаем интент на установку этого файла;
-пользователь либо устанавливает, либо нет, без разницы;
-при запуске проверяем наличие apk установочного файла из SharedPreferences, и если таковой имеется - удаляем.
Название apk может быть каким угодно в принципе, оно ни на что не влияет.
1
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
04.03.2016, 14:07 #22
androbro, да, неплохо, спасибо! Мне кажется, здесь есть какие-то подводные камни, но пока найти не могу. Давайте попробуем по шагам.
1) при авторизации в приложении проверяем наличие обновления.
2) при запуске проверяем наличие apk установочного файла из SharedPreferences, и если таковой имеется - удаляем.
Не знаю точно, какова последовательность этих двух пунктов. Допустим, проверить обновления можно только после авторизации (чтобы неизвестные пользователи не могли обновиться или сервер не пускает).
3) если оно имеется, скачиваем в какое либо место(при этом сохраняя его допустим в SharedPreferences).
Думаю, тут надо предложить скачать. Иначе, если пользователь не хочет обновляться, программа будет каждый раз удалять и скачивать.
4) кидаем интент на установку этого файла.
5) пользователь либо устанавливает, либо нет, без разницы.
Во время выполнения возможны подводные камни. Если поглядеть http://stackoverflow.com/a/9045884/2914140, то там упоминается про подписывание приложения тем же ключом. Интересно, что получится, если название пакета или ключ отличаются. Насколько я понял, удалять текущую программу перед установкой нельзя, она заменится автоматически.
0
androbro
326 / 287 / 61
Регистрация: 17.10.2014
Сообщений: 854
04.03.2016, 14:24 #23
Цитата Сообщение от CoolMind Посмотреть сообщение
Думаю, тут надо предложить скачать.
как я в этой теме вроде писал, у меня все жестко, либо обновляемся и работаем, не хотим обновляться не работаем(==получаем по шапке).
Цитата Сообщение от CoolMind Посмотреть сообщение
Во время выполнения возможны подводные камни.
Цитата Сообщение от CoolMind Посмотреть сообщение
про подписывание приложения тем же ключом
да эт насколько мне известно при любом обновлении проверяется идентичность подписей.
Цитата Сообщение от CoolMind Посмотреть сообщение
Интересно, что получится, если название пакета или ключ отличаются.
насколько помню скажет что просто нельзя обновится...старая версия как мне кажется должна удалятся только при успешной установке новой
1
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
04.03.2016, 15:09 #24
Цитата Сообщение от androbro Посмотреть сообщение
насколько помню скажет что просто нельзя обновится
Вот и мне так кажется. В этом случае, наверное, нужен либо второй инсталлятор, либо давать пользователю вручную удалить старую версию и поставить новую.

Добавлено через 8 минут
Добавлю выпадающую ошибку для этого случая: http://stackoverflow.com/questions/1...ils-to-install.

Добавлено через 8 минут
Также есть следующее описание (http://stackoverflow.com/a/32201317/2914140):
Android does not allow any code within an APK to be run once the user chooses to remove it - there are no notifications and no pre-uninstall actions that you can use. It's designed that way to prevent developers from writing Apps that can never be uninstalled by the user.
Having two apps with the same package name but signed with different keys is also not allowed, and can only be resolved by the user manually removing the first app before installing the second. This is to prevent developers from writing Apps to imitate other Apps (like Facebook for example) without the user knowing about it.
0
androbro
326 / 287 / 61
Регистрация: 17.10.2014
Сообщений: 854
04.03.2016, 15:51 #25
Цитата Сообщение от CoolMind Посмотреть сообщение
В этом случае, наверное, нужен либо второй инсталлятор, либо давать пользователю вручную удалить старую версию и поставить новую.
ну так а что Вам стоит подписывать приложение одним ключом и не париться по этому поводу?
0
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
04.03.2016, 15:55 #26
androbro, по идее да, так и надо делать. Но возможны разные ситуации. Не уверен, но возможно, подписание с другого компьютера. Или передача дел другому сотруднику. Или замещение на период отпуска.
0
faceman1
0 / 0 / 0
Регистрация: 17.03.2014
Сообщений: 14
07.03.2016, 14:48 #27
Имеется приложение в гугл плэе, думаю реализовать в нем механизм самообновления. Возник вопрос, можно ли программно реализовать включение режима разработчика и установку приложений из неизвестных источников?
0
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
11.03.2016, 15:32 #28
faceman1, http://stackoverflow.com/questions/1...ogrammatically, пишут, что это можно сделать, если приложение системное или имеется root-доступ.

Добавлено через 3 минуты
Цитата Сообщение от androbro Посмотреть сообщение
у меня все жестко, либо обновляемся и работаем, не хотим обновляться не работаем(==получаем по шапке)
Тоже так будем делать, но возникла вот такая проблема. Пользователю, конечно, установить предложится, но он может и отменить. Соответственно, приложение не догадается, что установка не сделана. Как узнать? Думаю, можно по окончании сравнить версии текущего файла и ту, которая должна быть.
0
Spelcrawler
527 / 497 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
11.03.2016, 16:27 #29
Цитата Сообщение от CoolMind Посмотреть сообщение
Но возможны разные ситуации. Не уверен, но возможно, подписание с другого компьютера. Или передача дел другому сотруднику. Или замещение на период отпуска.
А как это влияет на ключ? Это же файл, не привязанный ни к чему вообще - показываешь его студии, вводишь пароль от него и все. Может даже инопланетянин на своем устройстве подписать (если оно студию запустит, конечно).
1
androbro
326 / 287 / 61
Регистрация: 17.10.2014
Сообщений: 854
11.03.2016, 16:30 #30
Цитата Сообщение от CoolMind Посмотреть сообщение
Как узнать?
да способов узнать можно придумать много...
вот например пользователь не установил приложение, снова проходит авторизацию(тут важно не залогинить его при обнаружении новой версии) тут ему бах и снова предложение обновится(можно в принципе файл не качать, проверив на exists).
1
11.03.2016, 16:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.03.2016, 16:30
Привет! Вот еще темы с ответами:

Автообновление - C++ Qt
Здравствуйте. Стал писать автообновление для своей программы, назрел вопрос. Лучше использовать bat файлы или пытаться сделать посредством...

Автообновление - C++ Builder
Я тут хочу зделать чтобы при нажатии на кнопку оно скачивала с страницы обновления и кидало их по указанному адресу. Заменяя их при этом....

Автообновление - JavaScript
Доброго времени суток. Имеется страница layout.blade.php В нем есть <title>Сайт<title> И нужно сделать автообновление titl'a ...

Автообновление - C#
Итак столкнулся с такой проблемой. Моя программа обновляется практически каждый день(добавляются новые файлы и функции). Как вы понимаете...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru