Skonfiguruj aplikację F-Droid App Repo

F-Droid.org to domyślne repozytorium pakietów (repo) w kliencie F-Droid, ale nie jest to jedyna możliwość. Każdy może stworzyć własne repozytorium, a użytkownicy będą mogli kontrolować, jakich transakcji używa ich klient, w tym nawet wyłączając domyślne repozytorium f-droid.org. Model ten jest wzorowany nieco po dystrybucji Debian GNU/Linux. Podobnie jak w Debianie i Ubuntu, możesz także skonfigurować własne repozytoria, aby każdy mógł z nich korzystać. Niestandardowe repozytorium nie musi nawet tworzyć pakietów APK, mogą to być tylko “proste repozytoria binarne” wszelkich pakietów APK.

Przegląd

Jeśli chcesz zachować proste repozytorium plików APK i pakietów uzyskanych w innym miejscu, proces jest dość prosty:

  1. Skonfiguruj narzędzia serwera
  2. Utwórz katalog o nazwie fdroid, a następnie uruchom fdroid init w tym katalogu, aby wygenerować klucz podpisu, który jednoznacznie identyfikuje Twoje repozytorium.
  3. Opcjonalnie edytuj plik config.yml według własnych potrzeb; szczegółowe przykłady znajdują się w examples/config.yml
  4. Wewnątrz fdroid, utwórz katalog o nazwie repo i umieść w nim pliki APK.
  5. Wykonaj fdroid update.
  6. Jeśli zgłosi, że brakuje jakichkolwiek plików metadanych, możesz je utworzyć w katalogu metadata i uruchomić ponownie.
  7. Aby ułatwić tworzenie plików metadanych, uruchom fdroid update opcją -c. Utworzy on ‘szkieletowe’ pliki metadanych, których brakuje, a następnie możesz je po prostu edytować i podać szczegóły.
  8. Następnie, jeśli coś zmieniłeś, uruchom ponownie fdroid update.
  9. Uruchamianie fdroid update dodaje katalog icons do katalogu repo, a także tworzy pliki indeksu repozytorium (index.xml, index.jar, etc) NOTE: Aby uczynić ten proces bezpiecznym, przeczytaj Rzeczywisty Instalator below!
  10. Opublikuj wynikową zawartość katalogu repo na swoim serwerze sieciowym (lub ustaw serverwebroot w twoim config.yml, a następnie użyj fdroid deploy)

Wykonanie powyższego procesu spowoduje utworzenie katalogu popo, który po prostu trzeba przekazać do dowolnego serwera HTTP (lub najlepiej HTTPS), aby był dostępny.

Podczas gdy niektóre informacje o aplikacjach (i ich wersjach) są pobierane bezpośrednio z plików APK, większość pochodzi z odpowiedniego pliku w katalogu metadata/ . Plik plik metadanych obejmujący WSZYSTKIE wersje konkretnej aplikacji ma nazwę package.id.yml, gdzie package.id jest unikalnym identyfikatorem tego pakietu. Wszystkie pola metadanych kompilacji są odpowiednie dla binarnych pakietów APK, z wyjątkiem pozycji Builds: (Kompilacja), które należy pominąć.

Lokalne Demo Repozytorium Poradnika (ang. HOWTO)

Jest to pełny PORADNIK do konfiguracji własnego repozytorium, gdziekolwiek chcesz je hostować. Jest to trochę techniczne, będziesz korzystać z terminalu, ale nie musisz być ekspertem terminala, aby podążać. Po pierwsze, ten PORADNIK przejdzie przez konfigurację repo testowego, które nie jest bardzo bezpieczne. Następnie przejdzie przez konfigurację repozytorium do rzeczywisteko użytku, z kluczem podpisu na oddzielnej maszynie z publicznego serwera WWW. Zanim zaczniesz, musisz pobrać narzędzia fdroidserver i serwer WWW. Jako serwer WWW ten PORADNIK użyje nginx, ponieważ jest lekki, ale nada się jakikolwiek, jeśli masz już inny działający.

sudo apt-get install nginx

W przypadku tego PORADNIKA zamierzamy skonfigurować „proste repozytorium binarne” do przechowywania zbioru APK. Repo zostanie ustawione w zalecanym podkatalogu fdroid/. Daje to narzędziu fdroid własny katalog do pracy i sprawia, że adres URL repozytorium jest wyraźnie oznaczony jako repozytorium F-Droid. Ponadto klient F-Droid automatycznie wyszuka repozytorium na ścieżce /fdroid/repo, jeśli użytkownik tylko wejdzie na serwer (np. „https://f-droid.org”). Dajmy naszemu normalnemu użytkownikowi kontrolę nad tym podkatalogiem w katalogu głównym, abyśmy nie musieli uruchamiać narzędzi F-Droid jako root (dla nginx, webroot jest w /usr/share/nginx/www, dla innych serwerów jest inna):

sudo mkdir /usr/share/nginx/www/fdroid
sudo chown -R $USER /usr/share/nginx/www/fdroid
cd /usr/share/nginx/www/fdroid
fdroid init

Teraz umieść pliki APK do /usr/share/nginx/www/fdroid/repo i jesteś już gotowy do uruchomienia komend do zbudowania repo (jeśli fdroid init nie może znaleźć twojego zestawu SDK Android w /opt/android-sdk lub $ANDROID_HOME, wyświetli monit o podanie ścieżki):

cd /usr/share/nginx/www/fdroid
cp /path/to/\*.apk /usr/share/nginx/www/fdroid/repo/
fdroid update --create-metadata

Voila! Teraz masz działający F-Droid Repo! Pamiętaj, że jest to tylko konfiguracja test, pamiętaj, aby po tym przenieść się do Rzeczywista Instalacja! Dodaj swoje nowe repo do klienta F-Droid na urządzeniu z Androidem, aby je przetestować. Odbywa się to na ekranie Manage Repos dostępnym z menu. Twój adres URL repo będzie nazwą hosta lub adresu IP twojego komputera z /fdroid/repo/ dodanym na końcu, tj. https://mysecureserver.com/fdroid/repo/ lub http://192.168.2.53/fdroid/repo/. Możesz tymczasowo odznaczyć oficjalne repozytorium, aby łatwo zobaczyć, co F-Droid znalazł w twoim nowym repo.

Chociaż możesz serwować repozytorium pod dowolnym adresem URL, zwyczajowo udostępnia się je pod adresem URL kończącym się /fdroid/repo/. Dobrym powodem, aby to zrobić, jest to, że klient F-Droid ustawia filtr intencji i rejestruje się dla takich adresów URL. W rezultacie, użytkownik, który ma zainstalowaną aplikację F-Droid i otworzy taki dobrze sformatowany adres URL, jego urządzenie otworzy F-Droid i poprowadzi go bezpośrednio do dodania repozytorium do niego.

Dostosowywanie

Możesz również dostosować swoje repo poprzez edycję pliku konfiguracyjnego. Pamiętaj, aby użyć edytora tekstu programistycznego, takiego jak editor /usr/share/nginx/www/fdroid/config.yml. W pliku konfiguracyjnym możesz ustawić nazwę repozytorium, opis, ikonę, ścieżki do konkretnych wersji narzędzi do budowania, linki do pokrewnej wiki i czy zachować statystyki. Oto podstawowy blok opisu repo:

repo_url = "http://guardianproject.info/fdroid/repo"
repo_name = "My Local Repo"
repo_icon = "GP_Logo_hires.png"
repo_description = """
Lokalne repozytorium testów Hans-Christoph Steiner <hans@guardianproject.info>.
Jest to repozytorium aplikacji Guardian Project. """

Aby umieścić ikonę w repozytorium, wybierz obraz PNG, aby umieścić go w repozytorium. PNG umieszczany jest w /usr/share/nginx/www/fdroid/, plik może być nazwany tak, jak chcesz (domyślnie jest to fdroid-icon.png). Jeśli zmienisz nazwę z domyślnej, pamiętaj, aby zaktualizować repo_icon i archive_icon w /usr/share/nginx/www/fdroid/config.yml.

Ostatnia uwaga na temat bezpieczeństwa: ta konfiguracja nie jest dobrym ustawieniem dla prawdziwego publicznego repozytorium, zamiast tego jest to szybki i łatwy sposób na przetestowanie F-Droid. Przynajmniej podczas generowania repo na miejscu upewnij się, że config.yml nie jest dostępny przez Internet, ponieważ zawiera hasła. Jeśli uprawnienia do pliku są poprawne (np. chmod 0600 config.yml), config.yml nie będzie możliwe do odczytania przez serwer WWW.

Metadane aplikacji

Możesz kontrolować wiele aspektów reprezentacji aplikacji w repo poprzez edycję metadanych aplikacji. Uruchamianie fdroid update --create-metadata tworzy dla ciebie pliki pośredniczące, aby mieć działające repozytorium. Następnie możesz edytować te pliki, aby dodać opis, linki do darowizn, narzędzie do śledzenia błędów, licencję, stronę główną itp. Więcej informacji na temat wszystkich opcji znajdziesz w Tworzenie odwołania do metadanych.

CurrentVersionCode zapewnia wygodny sposób wdrażania wersji beta w tym samym strumieniu, co pełne wersje. Możesz ustawić CurrentVersionCode na bieżące wydanie stabilne, a następnie dodać pliki APK do repozytorium. Użytkownicy będą automatycznie aktualizowani tylko do podanego kodu wersji. Wszelkie pliki APK dla danej aplikacji w repozytorium, które mają nowszy kod wersji, nie zostaną automatycznie zainstalowane. Zamiast tego użytkownik może je zobaczyć w widoku szczegółów aplikacji w kliencie i może ręcznie je zainstalować.

Rzeczywisty Instalator

Teraz, kiedy masz repozytorium, łatwo jest stworzyć rzeczywisty instalator. Generowanie repo w miejscu, tak jak to zrobiliśmy powyżej, jest bardzo proste, dlatego właśnie ten poradnik (HOWTO) rozpoczął się, ale nie jest tak bezpieczne, jak powinno być, jeśli twoje repo będzie głównym punktem dystrybucji. Na przykład klucze podpisu repo nie powinny nigdy znajdować się na publicznym serwerze.

Aby poprawić tę sytuację, wygeneruj repozytorium na niepublicznej maszynie, takiej jak laptop, przechowując config.yml i magazyn kluczy tylko na tym komputerze (pamiętaj, aby tworzyć kopie zapasowe!). Następnie użyj fdroid deploy, aby opublikować zmiany w repo na oddzielnym serwerze przez ssh. Zacznij więc nowe repozytorium od zera na swoim niepublicznym komputerze:

mkdir ~/fdroid
cd ~/fdroid
fdroid init
cp /path/to/\*.apk ~/fdroid/repo/
fdroid update --create-metadata
emacs config.yml # add the serverwebroot, etc.
fdroid deploy -v

Teraz edytuj config.yml, aby ustawić serverwebroot; ma on postać docelowego pliku SCP. Następnie fdroid deploy zrobi publikację za pośrednictwem rsync przez ssh. Tak więc oba komputery będą musiały mieć zainstalowane i skonfigurowane ssh i rsync. Możesz także użyć własnego istniejącego klucza podpisu zamiast wygenerowanego przez fdroid init; po prostu edytuj repo_keyalias, keystore, keystorepass, keypass, i keydname w ~/fdroid/config.yml.

Additionally, if your repo has an archive, you may want to set up a rewrite rule from repo/ to archive/ in your webserver. This is to ensure that old links keep working when an APK is moved from the repo to the archive. See this example with Apache.