Тема своего собственного репозитория приложений поднималась мною еще в 2015 году, и тогда это было сделать чуточку тяжелее чем сейчас. У F-Droid за это время появились подробные мануалы о том как это сделать, правда, не без подводных камней. По крайней мере установка под линукс проходит не совсем так, как описано в мануалах (кто бы мог подумать). Вот обо всем об этом и хочется рассказать под катом.
Вместо введения
Сам репозриторий представляет из себя веб-сервер с открытым листингом директорий и само приложение, которое генерирует набор разных метаданных (информацию о приложениях, наименование о каталогах, наборы иконок для приложения и прочее). Все это необходимо для того, чтобы мобильное приложение воспринимало открытый для просмотра каталог именно как репозиторий, а не просто каталог.

Установка
По большому счету установка детально описана на страницах мануала: тут и тут. Однако, в установке есть пара нюансов. Во-первых, установка всех компонентов Android SDK происходит не так, как написано в мануале (build-tools объявлен как obsolete, и его уже нет в поиске без ключа —all). Во-вторых, не смотря на наличие в стандартных репозиториях ubuntu/debian пакета fdroidserver, репозиторий не получится подключить к мобильному приложению (через Toasts будет появляться ошибка «repository does not signed correctly«) В итоге, для полной установки необходимо сделать следующее (предполагается, что все действия происходят в домашнем каталоге пользователя):
1 2 3 4 5 6 7 8 9 |
add-apt-repository ppa:fdroid/fdroidserver apt update apt install fdroidserver nginx lib32gcc1 lib32z1 lib32ncurses5 wget https://dl.google.com/android/repository/tools_r25.2.3-linux.zip unzip tools_r25.2.3-linux.zip export USE_SDK_WRAPPER=yes export ANDROID_HOME=~ export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools android update sdk --no-ui --all --filter platform-tools,tools,build-tools-25.0.2,android-24 |
Далее редактируем конфиг nginx (nano /etc/nginx/sites-available/default)
1 2 3 4 5 6 7 |
# указываем корень root /var/www; location / { # включаем листинг директорий autoindex on; } |
После этого необходимо перезапустить nginx (service nginx restart). Далее переходим в корень сайта и запускаем инициализацию репозитория
1 2 3 4 5 |
cd /var/www mkdir fdroid chown www-data:www-data fdroid cd fdroid sudo -u www-data fdroid init -v |
Ключ -v отвечает за вывод всех ошибок и предупреждений, которые могут быть в процессе инициализации. fdroid сгенерирует каркас репозитория, после чего необходимо внести изменения в конфиг (sudo -u www-data nano config.py)
1 2 3 4 5 6 |
# url репозитория (ссылка для доступа извне) repo_url = "https://site.com/fdroid/repo" # каталог для синхронизации serverwebroot = { 'localhost:/каталог/репозитория/fdroid' } |
После этого можно копировать все *.apk файлы в созданный каталог repo. Не забудьте выставить всем перемещенным файлам того же владельца (chown -R www-data:www-data fdroid), что и созданный каталог. В моем случае это www-data. После чего необходимо запустить обновление репозитория.
1 |
sudo -u www-data fdroid update -v |
В зависимости от количества apk файлов процесс может быть длительным, но после окончания репозиторий будет готов (можно проверить работу, открыв ссылку, которая хранится в переменной repo_url в конфиге fdroid), остается только добавить его в приложение на мобильном устройстве.
Последние шаги
Скачиваем последнюю версию F-Droid по ссылке с официального сайта, устанавливаем. Далее открываем настройки приложения, выбираем меню «Репозитории».
После нажимаем на «+» и заполняем URL нового репозитория (как раз та самая ссылка, которая значилась в конфиге как repo_url).
После чего репозиторий будет подключен и останется только обновить каталог приложений, проведя пальцем по вкладке «Категории» сверху-вниз.
Готово, репозиторий подключен, и приложения готовы к загрузке. В дальнейшем при изменении каталога приложений необходимо будет обновить fdroid на сервере и обновить каталог в мобильном приложении. Счастливой автономии!
Добавить комментарий