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:
- Skonfiguruj narzędzia serwera
- Utwórz katalog o nazwie fdroid, a następnie uruchom
fdroid initw tym katalogu, aby wygenerować klucz podpisu, który jednoznacznie identyfikuje Twoje repozytorium. - Opcjonalnie edytuj plik config.yml według własnych potrzeb; szczegółowe przykłady znajdują się w examples/config.yml
- Wewnątrz fdroid, utwórz katalog o nazwie repo i umieść w nim pliki APK.
- Wykonaj
fdroid update. - Jeśli zgłosi, że brakuje jakichkolwiek plików metadanych, możesz je
utworzyć w katalogu
metadatai uruchomić ponownie. - Aby ułatwić tworzenie plików metadanych, uruchom
fdroid updateopcją-c. Utworzy on ‘szkieletowe’ pliki metadanych, których brakuje, a następnie możesz je po prostu edytować i podać szczegóły. - Następnie, jeśli coś zmieniłeś, uruchom ponownie
fdroid update. - Uruchamianie
fdroid updatedodaje 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! - Opublikuj wynikową zawartość katalogu repo na swoim serwerze sieciowym
(lub ustaw
serverwebrootw twoim config.yml, a następnie użyjfdroid 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.
