Как создавался Easy Recovery Installer (ERI) (Часть 1)

Введение

   В данных статьях я расскажу как создавал проект Easy Recovery Installer, что это такое можно посмотреть здесьздесь или просто загуглить. Далее Easy Recovery Installer буду сокращать до ERI, по понятным причинам я не буду объяснять что программа делает, моя цель просто передать практический опыт, объяснить почему я поступил именно вот так, поведать о каких-то тонкостях и проблемах. Я начну с идеи и закончу готовым работающим проектом, который вы можете сами пощупать. А вы сможете применить мой опыт в своих проектах.
  Прежде чем начать хочу сказать две вещи:
Первая, ERI это не программа, а проект. Почему? Программа сама может выполнить поставленную задачу, в то время как проект это совокупность программ\сервисов которые общим усилием выполняют поставленную задачу (сама программа которая у клиента без дополнительного ПО или сервиса абсолютно бесполезна).
Вторая, сейчас я сделал бы некоторые вещи немного по-другому, все потому что за время существования проекта набрался опыта -_(-_-)_-, но я еще ничего не менял (это только у меня в голове, просто чтобы знали, я буду делать на этом акцент).

Идея

  В двух словах, подобные программы (иногда скрипты, они тоже относятся к программам) в сети существуют, но как правило использовать их могут не все, есть ограничение по устройствам (например: может поддерживать 2-3 устройства),  "это не дело" подумал я, в связи с чем решил создать универсальное решение, которое будет поддерживать много устройств (в идеале не ограниченное количество), амбициозно? круто? - да!. Вы подумаете "Это тяжело, как в одиночку такое провернуть?", я скажу "Нет ничего невозможного!", с другой стороны может показаться что затея очень тяжелая и не стоит затраченных сил на ее создание (все что вы создаете\делаете дает вам опыт, а это хорошо), НО в любой непонятной ситуации сначала все нужно хорошо обдумать. Идея есть. Теперь нужно придумать базовый план.

Базовый план

   В Базовом плане нужно понять как оно все будет работать, дальше мы просто будем искать решения наших задач. 
 Что нам нужно сделать? - обеспечить установку софта на большое количество устройств, при чем этот софт под каждое устройство свой (универсального софта нет), на каждое устройство может приходить несколько версий софта (под словом "софт" в данном случае подразумевается Custom Android Recovery, если не понимаете, не забивайте голову, просто единица "программы")
 Вы видите проблему?... я тоже заметил, количество и объем файлов которым мы должны обеспечить установку может быть очень и очень большим (в среднем один установочный файл может весить от 10 до 100 мегабайт), предположим мы сделали программу, с поддержкой 20 устройств,  средний вес программы равен от 700 мегабайт до 1.2 гигабайт, это как вы догадались не очень хорошо. Почему? - представим этот процесс... "вы качаете программу весом 1 гигабайт, чтобы она установила вам файл весом 25 мегабайт", *без комментариев (и это только 20 устройств!). Для решения этой проблемы, мы будем использовать облачный принцип работы программы, и вот тут мы понимаем что у нас уже не программа а проект, хотя тут лучше подходит слово "сервис" (хотел найти картинку к теме, ничего адекватного не нашел, а рисовать лень). Теперь представим как это будет работать..."вы качаете программу-клиент весом 15 мегабайт (чем меньше тем лучше), при запуске программа-клиент получает список файлов от сервера, вы выбираете что конкретно вам хочется установить, программа-клиент загружает с сервера установочный файл весом 25 мегабайт и устанавливает его", и вот пожалуйста, мы имеем представление о том как программа должна работать.
 У нас есть два пункта:
Хранилище - где в интернете будут лежать установочные файлы,.
Программа-клиент - то что будет запускать пользователь.
А в общем это все называется ERI! Напомню... клиентская программа без облачного хранилища бесполезна, а хранилище без клиентской программы просто файлы в интернете.
  Хочу обратить ваше внимание на то, что такой подход может подойти далеко не каждому проекту. Он подходит ERI потому что установочные файлы весят около 100 мегабайт, при средней скорости интернета 100 мб/с (у пользователя) и хорошей пропускной способностью сервера процесс загрузки установочного файла займёт пару секунд. Также нужно учитывать то как пользователи будут использовать программу, в случае с ERI вероятней всего алгоритм следующий..."скачал - установил что нужно - удалил", этот процесс должен отнять минимум времени и сил, благо условия позволяют. Если у вас файлы весом по 500\1000\2000 мегабайт, это например установщик программ на ПК, можно обойтись оффлайн установкой, или как вариант комбинировать. Файлы до 100 мегабайт можно устанавливать в онлайн-режиме, все что выше оффлайн (я веду к тому, что иногда используют не самые удачные приемы, что портит впечатления от использования сервиса\программы).

  Мне не хотелось делать одну огромную статью, поэтому их будет несколько. На это пока все. Следите за моими обновлениями, продолжение следует...

Продолжение: Как создавался Easy Recovery Installer (ERI) (Часть 2)

Комментарии