Блог программиста
не только о программировании

Дружественные ресурсы:

IntSystem.org | Веб-разработка, все о ней

DevOps-заметки |

07.01.2018

Создание своего репозитория приложений с помощью F-Droid

how to create own fdroid logo

Тема своего собственного репозитория приложений поднималась мною еще (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 по ссылке с официального сайта, устанавливаем.  Далее  открываем настройки приложения, выбираем меню "Репозитории".

fdroid repository option location

После нажимаем на "+" и заполняем URL нового репозитория (как раз та самая ссылка, которая значилась в конфиге как repo_url).

fdroid repository option add location

После чего репозиторий будет подключен и останется только обновить каталог приложений, проведя пальцем по вкладке "Категории" сверху-вниз.

fdroid update repository swipe

Готово, репозиторий подключен, и приложения готовы к загрузке. В дальнейшем при изменении каталога приложений необходимо будет обновить fdroid на сервере и обновить каталог в мобильном приложении. Счастливой автономии!