Создание своего репозитория приложений с помощью F-Droid
Тема своего собственного репозитория приложений поднималась мною еще (https://dfvgbh.com/research/repo/)[в 2015 году], и тогда это было сделать чуточку тяжелее чем сейчас. У F-Droid за это время появились подробные мануалы о том как это сделать, правда, не без подводных камней. По крайней мере установка под линукс проходит не совсем так, как описано в мануалах (кто бы мог подумать). Вот обо всем об этом и хочется рассказать под катом.
Вместо введения
Сам репозриторий представляет из себя веб-сервер с открытым листингом директорий и само приложение, которое генерирует набор разных метаданных (информацию о приложениях, наименование о каталогах, наборы иконок для приложения и прочее). Все это необходимо для того, чтобы мобильное приложение воспринимало открытый для просмотра каталог именно как репозиторий, а не просто каталог.
Установка
По большому счету установка детально описана на страницах мануала: тут и тут. Однако, в установке есть пара нюансов. Во-первых, установка всех компонентов Android SDK происходит не так, как написано в мануале (build-tools объявлен как obsolete, и его уже нет в поиске без ключа --all). Во-вторых, не смотря на наличие в стандартных репозиториях ubuntu/debian пакета fdroidserver, репозиторий не получится подключить к мобильному приложению (через Toasts будет появляться ошибка "repository does not signed correctly) В итоге, для полной установки необходимо сделать следующее (предполагается, что все действия происходят в домашнем каталоге пользователя):
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)
# указываем корень
root /var/www;
location / {
# включаем листинг директорий
autoindex on;
}
После этого необходимо перезапустить nginx (service nginx restart). Далее переходим в корень сайта и запускаем инициализацию репозитория
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)
# url репозитория (ссылка для доступа извне)
repo_url = "https://site.com/fdroid/repo"
# каталог для синхронизации
serverwebroot = {
'localhost:/каталог/репозитория/fdroid'
}
После этого можно копировать все *.apk файлы в созданный каталог repo. Не забудьте выставить всем перемещенным файлам того же владельца (chown -R www-data:www-data fdroid), что и созданный каталог. В моем случае это www-data. После чего необходимо запустить обновление репозитория.
sudo -u www-data fdroid update -v
В зависимости от количества apk файлов процесс может быть длительным, но после окончания репозиторий будет готов (можно проверить работу, открыв ссылку, которая хранится в переменной repo_url в конфиге fdroid), остается только добавить его в приложение на мобильном устройстве.
Последние шаги
Скачиваем последнюю версию F-Droid по ссылке с официального сайта, устанавливаем. Далее открываем настройки приложения, выбираем меню "Репозитории".
После нажимаем на "+" и заполняем URL нового репозитория (как раз та самая ссылка, которая значилась в конфиге как repo_url).
После чего репозиторий будет подключен и останется только обновить каталог приложений, проведя пальцем по вкладке "Категории" сверху-вниз.
Готово, репозиторий подключен, и приложения готовы к загрузке. В дальнейшем при изменении каталога приложений необходимо будет обновить fdroid на сервере и обновить каталог в мобильном приложении. Счастливой автономии!