android studio автообновление приложения

Встраиваем In-App Updates в приложение

android in app updates api

Обновление приложений и поддержка актуальной версии у пользователей это очень важный момент в жизненном цикле каждого приложения. От части это зависит от того, что Android постоянно изменяется: какие-то методы и классы добавляются, какие-то становятся устаревшими, и примерно раз в год с выходом новой версии следует обновлять targetSdkVersion и переписывать код, если это требуется. Кроме того, постоянно обновляются сторонние библиотеки, которые нужно также обновить у себя в приложении, добавляются новые функции и особенности в само приложение. И про багфиксы не стоит забывать, нужно постоянно отслеживать баги в приложениях и оперативно исправлять, потому что недовольный пользователь скорее всего испортит статистику приложению негативным отзывом.

Всё это вынуждает постоянно поддерживать приложение. Отсюда вытекает следующий момент: как установить актуальную версию приложения максимальному числу пользователей.

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

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

В прошлом году Google выпустили механизм In-App Updates с целью ещё больше ускорить обновление приложений у пользователей. In-App Updates позволяет показывать пользователю при входе в приложение диалог, где ему будет предложено обновить приложение до последней версии. Этот функционал работает, начиная с версии Android 5.0 (API 21). Кроме того, приложение должно быть опубликовано в Google Play.

In-App Updates поддерживает два способа обновления приложения:

Рассмотрим первый вариант обновления приложения на примере одного из наших приложений «Страны мира«.

Перед началом работы нужно добавить библиотеку Play Core в приложение. Для этого в файле build.gradle модуля приложения добавим следующую зависимость:

Теперь создадим класс UpdateManager, в котором будем проводить работу, связанную с обновлением.

Перед тем, как показывать диалог, следует проверить наличие новой версии. Для этого воспользуемся классом AppUpdateManager для запроса к Google Play.

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

Если пользователь согласится на обновление, начнётся процесс загрузки в фоновом режиме. Обратите внимание, что с помощью метода startUpdateFlowForResult() мы можем узнать, какое действие выбрал пользователь. Для этого мы передаём в него константу UPDATE_REQUEST_CODE, результат с этим кодом придёт в метод onActivityResult() активности.

Здесь мы можем получить один из следующих результатов:

Поскольку мы используем Flexible метод обновления, нам нужно узнать, когда завершится загрузка новой версии. Для этого нам нужно добавить слушатель InstallStateUpdatedListener и привязать его к экземпляру AppUpdateManager после того, как начнётся загрузка. О том, что пользователь начал загрузку, мы узнаём, получим результат в методе onActivityResult() активности.

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

Когда загрузка завершена, отвязываем слушатель и проверяем, активно приложение или нет. Если приложение активно, то показываем сообщение о том, что обновление готово для установки, в противном случае запускаем установку обновления. Делается это с помощью метода completeUpdate() экземпляра AppUpdateManager. Также для этих целей мы добавим слушатель UpdateListener к нашему классу UpdateManager. Если этот слушатель привязан к активности — значит приложение активно, если отвязан — значит находится в фоне.

Когда обновление будет загружено, пользователь увидит внизу экрана Snackbar с сообщением об этом и кнопкой для перезагрузки приложения. При желании можно Snackbar заменить на что-нибудь ещё.

Сам же Snackbar выглядит очень просто, при нажатии на Restart мы вызываем completeUpdate(), как делали бы это, будучи в фоновом режиме.

Если пользователь проигнорирует это сообщение, обновление останется неустановленным и будет храниться в памяти. Поэтому при каждом запуске приложения мы будем проверять, имеются ли загруженные обновления, и если да — выводить сообщение. В противном случае, как и раньше, проверяем наличие обновлений в Google Play. Для этого вернёмся к слушателю OnSuccessListener из начала и добавим в него следующее условие.

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

Итоговый листинг класса UpdateManager выглядит следующий образом:

Итак, мы встроили In-App Updates в приложение, осталось только проверить его работу. Для этого отлично подойдёт такая особенность Google Play, как внутренний совместный доступ (Internal app-sharing). Он позволяет загружать APK или Android App Bundle на специальную страницу загрузки, к которым будут иметь доступ только тестировщики. Это позволяет быстро проверить приложение, при этом его не обязательно подписывать релизным ключом, можно делиться также и debug-версиями. Тестировщикам отправляется специальная ссылка на скачивание, которая перенаправляет их в Google Play, где им будет предложено установить данную версию приложения.

Для того, чтобы настроить внутренний совместный доступ, нам нужно задать список тестировщиков для этого приложения. Зайдём в консоль разработчика Google Play и откроем нужное нам приложение. В меню «Инструменты разработки» выберем «Внутренний доступ к приложению«, после чего откроется страница для настройки. Здесь нас интересует только «Управление пользователями с правами загрузки«.

3

Тут мы можем формировать различные списки тестировщиков, включать их и отключать. При нажатии на «Создать список» появится окно, где будет предложено ввести электронную почту каждого из участников тестирования, а также задать имя новому списку. Создадим список и добавим в него себя как тестировщика.

4

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

5

После того, как APK будут загружены, они отобразятся в списке.

6

С этого момента мы готовы тестировать эти версии. Зайдём на устройство, с которого будем запускать приложение, и на нём перейдём по ссылке от версии 1.23. Откроется специальная страница, которая предложит перейти в Google Play для установки.

Screenshot 1587630331

После перехода в Google Play нам будет предложено установить эту версию приложения.
Screenshot 1587630415

Screenshot 1587619435

Примечание! Если вместо страницы приложения вы видите сообщение «Настройки для разработчиков отключены», то нужно будет выполнить следующее:

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

Теперь закрываем приложение, снова открываем браузер и переходим уже по ссылке от версии 1.24. Нам аналогично будет предложено перейти в Google Play, только на этот раз мы можем не установить, а обновить или удалить приложение. Важно: не нужно обновлять приложение с этой страницы! Смотрим только, что она есть, и закрываем.

Screenshot 1587630923

Снова заходим в наше приложение и, если всё сделано верно, отобразится диалог с предложением обновить версию.

Screenshot 1587631100

Нажимаем на «Обновить«, после чего начинается скачивание обновления. За его прогрессом можно следить в шторке уведомлений.

Screenshot 1587631144

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

Screenshot 1587631154

Нажимаем Restart, и здесь в работу включаются сервисы Google Play, которые обновят приложение до новой версии.

Screenshot 1587631159

После того, как установка завершится, приложение запустится автоматически. Скроллим список вниз и видим, что версия приложения теперь стала 1.24, значит обновление прошло успешно.

Screenshot 1587631170

Таким образом, благодаря In-App Updates, пользователи смогут более быстро получать новые версии, чем при обновлении непосредственно через Google Play.

Встраиваем In-App Updates в приложение : 1 комментарий

А как сослаться на UpdateManager например в MainActivity?

Источник

Русские Блоги

Реализация кода функции автоматического обновления приложения Android

Реализация кода функции автоматического обновления приложения Android

Благодаря открытому исходному коду проекта Android на рынке представлено N рынков программного обеспечения для Android. Чтобы программное обеспечение, которое мы разрабатываем, использовалось большим количеством пользователей, нам нужно выпустить его на мультирынки N. После обновления программного обеспечения мы также должны обновить его на рынке Android. Увеличение рабочей нагрузки для нас. Поэтому нам нужно добавить функцию автоматического обновления в наше приложение для Android.

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

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

С помощью метода parseXml () мы можем получить версию, имя файла и адрес загрузки приложения на сервере. Затем нам нужно получить информацию о версии приложения на наш мобильный телефон:

Поток обработки

d304035c78dda251d8a676ec5d68ef03
Код обработки

Renderings

1256610b316c537a07056d3bb6f8963e

793a4220b36989d9357dacc7c7b306de

Проверьте, существует ли файл загрузки в симуляторе SDCARD:

Источник

Автообновление приложения

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

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

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

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

CoolMind, вот мне тоже интересно, до какой степени все автоматизировано?
у меня лишь качается апк и кидается интент на установку, далее нажмет пользователь установить или же нет это его дело конечно, но если не установит приложение то все равно при запуске потребует обновиться))

Добавлено через 2 минуты

Добавлено через 4 минуты
Play маркет ведь как то обновляет без участия пользователя) Вот как они это делают?))

я делал автообновление, работает 100% без рута и ничего сложного там нет
где угодно в инете выкладывается apk и например текстовый файл с версией

Это же значит что есть такая возможность установки?) т.е. автономная, только х3 как это делается..)
У них же тоже такое же приложение как и у любого.. только вот с такой фишкой

Добавлено через 1 минуту
Паблито, т.е. 100% авто? без единого нажатия узером?

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

tickАвтообновление
Доброе время суток! Всю программу рассматривать не буду, только кусок void autoupdate(LPSTR URL).

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

tickАвтообновление
Я тут хочу зделать чтобы при нажатии на кнопку оно скачивала с страницы обновления и кидало их по.

Источник

In-App Updates: ускоряем процесс обновления приложения на Android

image loader

Среди многообразия инструментов, анонсированных на Android Dev Summit, особое внимание хочется уделить механизму обновления приложения In-App Updates (IAUs), который помогает разработчикам ускорить добавление новых фич, баг-фиксов и улучшений производительности. Поскольку эта функциональность была опубликована после Google I/O 2019, в этой статье я подробно расскажу об IAUs, опишу рекомендованные схемы реализации и приведу некоторые примеры кода. Также я расскажу о нашем опыте интеграции IAUs в Pandao, приложение для заказа товаров из Китая.

Новый API позволяет разработчикам инициировать обновление приложения до последней доступной в Google Play версии. Таким образом IAUs дополняет уже существующий механизм автоматического обновления Google Play. IAUs содержит несколько схем реализации, которые принципиально различаются с точки зрения взаимодействия с пользователем.

image loader

Поскольку второй вариант не так важен и меньше подходит для приложения Pandao, разберём подробнее сценарий Flexible Flow.

Интеграция IAUs Flexible Flow

Варианты использования

Процесс обновления с помощью IAUs состоит из нескольких шагов.

Основные требования к тестированию

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

Пример кода

Здесь мы рассмотрим пример кода для использования IAUs Flexible Flow, который также можно найти в официальной документации. Для начала необходимо добавить библиотеку Play Core в build.gradle файл на уровне модуля.

Ошибка «Update is Not Available»

IAUs Flexible Flow в приложении Pandao

Мы участвовали в программе раннего доступа и интегрировали IAUs Flexible Flow (рекомендованная реализация) в приложение Pandao — платформу, на которой производители и вендоры могут торговать китайскими товарами. Диалог IAUs отображался на главном экране, так что с ним могло взаимодействовать максимальное количество пользователей. Изначально мы хотели показывать диалог не чаще раза в день, чтобы не отвлекать людей от взаимодействия с приложением.

Поскольку A/B-тестирование играет ключевую роль в жизненном цикле любой новой фичи, мы решили оценить эффект от IAUs в нашем приложении. Мы случайным образом разделили пользователей на две непересекающиеся группы. Первая была контрольной, без использования IAUs, а вторая группа была тестовой, этим пользователям мы показывали диалог IAUs.

image loader
A/B-тест IAUs Flexible Flow в приложении Pandao.

В течение последних нескольких релизов мы измерили долю активных пользователей каждой версии приложения. Оказалось, что среди активных пользователей с последней доступной на тот момент версией основную часть составляли участники из группы B, то есть с функцией IAU. Фиолетовая линия на графике показывает, что в первые дни после публикации версии 1.29.1 количество активных пользователей с IAUs превысило количество пользователей без этой функции. Поэтому можно утверждать, что пользователи с IAUs быстрее обновляют приложение.

5351cb3a9b15cd49e59d543463cbb283
Диалог IAUs Flexible Flow в приложении Pandao.

Согласно нашим данным (см. график выше), пользователи больше всего кликают на кнопку подтверждения в диалоге IAUs в первые дни после релиза, а затем конверсия постоянно снижается вплоть до публикации следующей версии приложения. То же самое наблюдается с кнопкой установки в диалоговом окне, которая инициирует установку скачанного обновления. Следовательно, можно сказать, что среднее значение конверсии в обоих случаях прямо пропорционально частоте релизов. В Pandao средняя конверсия в течение одного месяца достигает 35 % для клика на кнопку подтверждения и 7 % для клика на кнопку установки.

Мы предполагаем, что уменьшение доли подтверждений с течением времени — лишь проблема пользовательского опыта, потому что люди, которым интересна новая версия, будут обновляться довольно быстро, а те, кто не интересуются обновлением, так и не станут интересоваться. Исходя из этого предположения, мы решили не беспокоить тех, кому не интересно обновление, и не спрашивать их каждый день. Хорошей практикой будет использование другой логики запросов, которая основывается на «устаревании», то есть чтобы не беспокоить пользователей, мы оцениваем, насколько старые версии стоят у них и как часто мы уже предлагали им обновиться.

В целом IAUs продемонстрировала хорошие результаты в ходе A/B-тестирования, так что мы раскатили IAUs для всех пользователей.

Источник

Автоматизация публикации приложения в Google Play — прямо из Android Studio

Всем привет! Пол года назад на хабре была статья о том, как автоматизировать загрузку обновлений приложения в Google Play. Первый комментарий к статье и ответ на него гласил одну неприятную вещь:

image loader

Но я с радостью готов сообщить, что это — не правда. Публиковать приложение прямо из Android Studio можно! Более того, можно делать это вообще без Android Studio на вашем CI — так как делаться это будет с помощью обычного Gradle task.

Мое решение похоже на то, что описано в предыдущей статье, но вместо java я использовал groovy-скрипт.

Для начала подготовим нам проект. Будем работать с build.gradle нашего корневого проекта, а не app. Приведем root/build.gradle к такому виду:

1. apply plugin: ‘groovy’
Активируем groovy-компилятор в нашем проекте.

2. dependencies — compile ‘org.codehaus.groovy:groovy-all:2.4.7’
Импортируем последнюю версию groovy в наше проект

3. dependencies — compile ‘com.google.apis:google-api-services-androidpublisher:v2-rev38-1.22.0’

Импортируем библиотеку от Google, которая, собственно, и предоставляет нам возможность работать с публикациями в Google play (и не только).

Теперь мы можем писать groovy-скрипты и groovy-классы и использовать их в нашем проекте. Но для начала создадим source dir для наших groovy-классов и организуем другие файлы, которые нам будут нужны:

Прочитаем эти пароли из файла с создадим подходящий signing config в root/app/build.gradle

Теперь мы можем использовать gradle assembleProdRelease чтобы получить apk-файл, который к загрузке в Google Play.

Приступим к созданию самого скрипта, который опубликует наш apk. Создадим файл root/src/main/groovy/ApkPublisher.groovy:

Второй файл root/src/main/groovy/PublishApk.groovy:

Скрипт для загрузки файла готов. Теперь перейдем к созданию Gradle task:

Теперь достаточно выполнить команду gradle assembleAndPublishApk для публикации apk в альфа-канал. И это можно легко сделать хоть после каждого коммита в development. В дополнение мы сразу загружаем proguard-mapping файл.

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • android studio автозагрузка приложения
  • android studio apk приложение не установлено