Автоматизация установки множества apk файлов на Android

от автора

Приходилось ли вам сталкиваться с ситуацией, когда вам нужно автоматизировать установку определённого списока приложений на андроид девайс? Такой вопрос может возникнуть у вас в случае, если у вас много устройств и на все требуется установить одни и те же программы. Или в ситуации, если вы часто перепрошиваете свой смартфон разными прошивками и хотите сразу иметь определённые приложения на борту для работы.
Как это можно осуществить? В официальном магазине Google Play вы не можете этого сделать. Там есть категория «Мои приложения», в которой две вкладки: «установленные» и «все» (которые когда-либо были установлены, а затем удалены). Также есть категория «Список желаний». Но нигде нет кнопки для установки всего списка желаний, и нигде нет списка «Избранные».
Таким образом, в Google Play для установки нужного списка программ вам придётся долго и терпеливо выбирать из вашего списка по одному приложению и на каждом нажимать кнопку установить. Такой вариант нас не устраивает.

Способ с локальным хранилищем apk файлов

Следующий вариант: попробуем закачать к себе все приложения в виде apk файлов и устанавить их. Плюс этого способа в том, что не надо зависеть от Google Play и бояться, что там удалят какое-то приложение. Также можно ставить свои приложения, которых нет в Google Play.
Тут начинается самое интересное. Как скачать из Google Play? Просто так вытянуть из него apk файл не получится. На сайте play.google.com просто нет кнопки «Скачать». Есть только «установить» (и то только в случае «совместимости» с устройством) и «добавить в список желаний». Во-вторых, на телефоне мы можем не увидеть интересующие нас приложения. Те, которые «несовместимы» с вашим устройством, просто не отображаются, как будто их нет. Слово «Несовместимы» в кавычках — потому что на самом деле приложение вполне может быть совместимым. Это искусственное ограничение на установку делается по вполне понятным причинам — ограничение себя от отрицательных отзывов и соблюдение местного законодательства, или же желание дать доступ к приложение только определённой «илите». На «несовместимость» могут влиять название производителя телефона, разрешение экрана, страна проживания, сотовый оператор, частота и архитектура процессора и так далее (существуют программы для подмены всего этого). И, видимо, поэтому нельзя просто так взять и скачать apk c Google play. Этот сервис хочет знать под какой конкретный аппарат и аккаунт скачивается приложение и выдать ему нужный apk.

Так как всё-таки скачать?

Погуглив проблему, нашел я такой онлайн сервис как APK downloader (http://apps.evozi.com/apk-downloader/). Вы даёте ссылку на приложение на сайте play.google.com и получаете прямую ссылку на apk. Однако этим сервисом нельзя скачать с Samsung Apps.
Закачиваем себе всё необходимое. Теперь подключаем девайс, включаем отладку по usb и устанавливаем скриптом все приложения. Примерно такой скрипт:
#/bin/sh
for i in {1..50}
do
adb install apk$i.apk
done
Всё. Теперь все приложения установлены.
Решение это не очень красивое. В любой момент APK Downloader может быть прикрыт. И вообще для меня этот сервис как черный ящик. Я не знаю, как он качает. Кстати, этот же Apk downloader доступен в виде неофициального расширения для хрома (crx). Это zip архив с файлами. Я планирую посмотреть исходники из него. Может быть узнаю как инициализируется скачка. Вот он: codekiem.com/apk-downloader/crx/1.2.crx
Догадываюсь, что единственным способом скачать с плея остаётся закачка на какой-то девайс. Этот сервис наверняка так и скачивает: извлекает файл из «памяти устройства», а потом отдаёт уже скачанный апк. Почему бы тогда ему так же не сделать скачку и с самсунг аппс?

Как быть с обновлениями

Тут ещё проблема с обновлениями. Как мне обновлять приложения в своём хранилище? Всё заново качать? Нет удобного просмотра версии пакета и вообще автоматического обновления. Но есть одна софтина, которая может решить все эти проблемы. Правда, я её не пробовал стаить. Называется она Real apk leecher. Автор выложил исходный код на xda developers.
Вот здесь 4pda.ru/forum/index.php?showtopic=384677&st=60#entry16248359 инструкция как обновлять локальное хранилище.

Способ без локального хранилища apk файлов

Хотелось бы иметь возможность установки не только со своего хранилища, а прямо с гугл плея. Это решает проблему старых версий приложений. Как это сделать программно я не знаю.
Для установки apk на устройство можно использовать такие команды:
$ adb install <путь до apk на компьютере>
или же
$ adb shell pm install [опции] <путь до apk на телефоне>

Обратите внимание, что в Google Play на компьютере есть кнопка «установить» под приложением. Нажитие на неё прводит к чтению разрешений и подтверждением желания установки. Далее на телефон подключенный к интернету [ К НЕМУ ВООБЩЕ ДАЖЕ МОЖЕМ НЕ ПРИКАСАТЬСЯ ] приходит сам апк и устанавливается. То есть достаточно прислать какую-то команду из интернета на телефон и он всё сделает. Это вселяет какую-то надежду. Точно так же с сайта кнопкой можно установить приложение из Samsung Apps.
Я догадываюсь, что маркетодержатели (Гугл и Самсунг) оставили себе возможность подключения к рутовому шеллу. При нажатии кнопки «установить» на сайте они делают

$ adb push <файл apk из их хранилища> <временная папка на вашем андроиде>

Затем

$ adb shell pm install <путь до только что скачанного apk файла>.

Потом кидают в уведомления «успешно установлено». Или какая-то похожая схема. Вот и получается установка с компа.
Проблема тогда в том, как узнать какую команду и каким образом надо послать на телефон, чтобы он сам всё скачал и установил из их хранилища? Они же наверняка спрашивают телефон о его серийнике, версии установленной уже программы. Может надо предварительно поставить сниффер и прослушивать весь траффик, между телом и интернетом. Но я не знаю как это сделать. Опытные хабровчане подскажут?

Ссылки по теме:
toster.ru/q/62556
4pda.ru/forum/index.php?showtopic=345461
androidsmartfony.com/249-kak-ustanovit-mnogo-apk-faylov-na-android-ustroystvo-s-pk-v-odin-klik.html
www.linux.org.ru/forum/mobile/7535268
4pda.ru/forum/index.php?showtopic=316475&st=740

ссылка на оригинал статьи http://habrahabr.ru/post/215591/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *