F-Droid.org ist die Standardpaketquelle (Repository, Repo) im F-Droid-Client, aber es ist nicht die einzig mögliche. Jeder kann sein eigenes Repo erstellen, und Anwender können steuern, welche Repos ihr Client verwendet, sogar inklusive der Deaktivierung des Standardrepos von f-droid.org. Dieser Modellaufbau ähnelt dem in der Debian GNU/Linux Distro. Wie in Debian und Ubuntu können Sie auch Ihr eigenes Repo einrichten, das jeder nutzen kann. Maßgeschneiderte Repos müssen nicht einmal die APKs erstellen, sie können nur „einfache Binärdatei-Repos“ mit allen APKs sein.
Übersicht
Wenn Sie ein einfaches Binärdatei-Repository unterhalten wollen mit APKs und Paketen, die Sie an anderer Stelle erhalten haben, ist der Prozess recht einfach:
- Server-Tools einrichten
- Ein Verzeichnis mit dem Namen fdroid erstellen, dann
fdroid init
in diesem Verzeichnis ausführen um den Signierschlüssel zu erzeugen der Ihr Repository eindeutig identifiziert. - Optional können Sie die Datei config.yml nach Ihren Vorlieben bearbeiten, detaillierte Beispiele finden Sie in examples/config.yml
- In fdroid ein Verzeichnis namens repo erstellen und APK-Dateien darin ablegen.
fdroid update
ausführen.- Bei Meldungen zu irgendwelchen fehlenden Metadatendateien können Sie sie
im Verzeichnis
metadata
erstellen und den Vorgang wiederholen. - Um die Erstellung von Metadatendateien zu vereinfachen, führen Sie
fdroid update
mit der Option-c
aus. Sie wird ein ‘Gerüst’ der fehlenden Metadatendateien erstellen, und Sie können sie danach einfach bearbeiten und die Einzelheiten in sie eintragen. - Haben Sie Dinge verändert, wiederholen Sie schließlich
fdroid update
. - Das Ausführen von
fdroid update
fügt ein icons-Verzeichnis in das Repo-Verzeichnis ein und erstellt auch die Repository-Indexdateien (index.xml, index.jar, etc.) HINWEIS: Wie dieser Vorgang sicher wird, lesen Sie unter Reales Setup weiter unten! - Veröffentlichen Sie den resultierenden Inhalt des Verzeichnisses repo
auf Ihrem Webserver (oder setzen Sie
serverwebroot
in Ihrer config.yml und verwenden Sie dannfdroid deploy
)
Das Ergebnis der oben genannten Schritte wird ein repo-Verzeichnis sein, das Sie einfach auf einen beliebigen HTTP- (oder vorzugsweise HTTPS-)Server verschieben müssen, um es zugänglich zu machen.
Während einige Informationen über die Anwendungen (und deren Versionen)
direkt aus den APK-Dateien abgerufen werden, stammen die meisten aus der
entsprechenden Datei im Verzeichnis metadata/. Die
Metadaten-Datei, die ALLE Versionen einer
bestimmten Anwendung abdeckt, heißt package.id.yml, wobei package.id die
eindeutige Kennung für dieses Paket ist. Alle Build-Metadatenfelder sind
für binäre APKs relevant, mit Ausnahme von Builds:
-Einträgen, die
weggelassen werden sollten.
HOWTO für ein lokales Demo-Repo
Dies ist ein vollständiges HOWTO, um Ihr eigenes Repository einzurichten, wo
auch immer Sie es hosten möchten. Es ist etwas technisch, Sie werden das
Terminal benutzen, aber Sie müssen kein Terminal-Experte sein, um
mitzumachen. Zuerst durchläuft dieses HOWTO die Einrichtung eines nicht sehr
sicheren Test-Repos. Dann bespricht es die Einrichtung eines Repos für die
reale Welt, mit dem Signierschlüssel auf einem vom öffentlichen Webserver
getrennten Rechner. Bevor Sie beginnen, müssen Sie sich die
fdroidserver
-Tools und einen
Webserver besorgen. Für den Webserver wird dieses HOWTO nginx verwenden,
da es leichtgewichtig ist, aber wenn Sie bereits einen anderen haben, kann
es auch der sein.
sudo apt-get install nginx
In diesem HOWTO werden wir ein „einfaches Binärdateien-Repository“
einrichten, um eine Sammlung von APKs zu hosten. Das Repo wird im
empfohlenen Unterverzeichnis fdroid/ eingerichtet. Dies gibt dem
fdroid
-Tool ein eigenes Verzeichnis zum Arbeiten und kennzeichnet die
Repo-URL eindeutig als F-Droid-Repo. Außerdem sucht der F-Droid-Client
automatisch nach einem Repository im Pfad /fdroid/repo, wenn der Benutzer
nur den Server (z. B. „https://f-droid.org“) benutzt. Geben wir unserem
normalen Benutzer die Kontrolle über dieses Unterverzeichnis im Web-Root, so
dass wir die F-Droid-Tools nicht als root ausführen müssen (bei nginx ist
das Webroot /usr/share/nginx/www, bei anderen Webservern ist es anders):
sudo mkdir /usr/share/nginx/www/fdroid
sudo chown -R $USER /usr/share/nginx/www/fdroid
cd /usr/share/nginx/www/fdroid
fdroid init
Legen Sie nun Ihre APK-Dateien in /usr/share/nginx/wwww/fdroid/repo ab,
danach sind Sie bereit, die Befehle zum Erstellen des Repos auszuführen
(wenn fdroid init
Ihr Android SDK nicht in /opt/android-sdk oder
$ANDROID_HOME
findet, werden Sie nach dem Pfad gefragt):
cd /usr/share/nginx/www/fdroid
cp /pfad/zum/\*.apk /usr/share/nginx/www/fdroid/repo/
fdroid update --create-metadata
Fertig! Jetzt haben Sie ein funktionierendes F-Droid Repo! Vergessen Sie
nicht, dass dies nur ein Test-Setup ist, denken Sie daran, danach zum
Real World Setup überzugehen! Fügen Sie Ihr neues Repo
zu einem F-Droid-Client auf Ihrem Android-Gerät hinzu, um es zu testen. Dies
geschieht über das Untermenü Paketquellen verwalten in den
Optionen. Ihre Repo-URL ist der Hostname oder die IP-Adresse Ihres Rechners
mit /fdroid/repo/
am Ende, also https://mysecureserver.com/fdroid/repo/
oder http://192.168.2.53/fdroid/repo/
. Sie können die offiziellen Repos
vorübergehend deaktivieren, um zu sehen, was F-Droid in Ihrem neuen Repo
gefunden hat.
Während Sie das Repository unter einer beliebigen URL bereitstellen können,
ist es üblich, es unter einer URL verfügbar zu machen, die mit
/fdroid/repo/
endet. Ein guter Grund, dies tatsächlich zu tun, ist, dass
der F-Droid-Client einen Intent-Filter einrichtet und sich selbst für solche
URLs registriert. Infolgedessen wird ein Benutzer, der die F-Droid-Anwendung
installiert hat und eine solche wohlgeformte URL öffnet, sein Gerät F-Droid
öffnen lassen und ihn direkt zum Hinzufügen des Repositorys zu diesem
führen.
Anpassung
Sie können Ihr Repo auch anpassen, indem Sie die Konfigurationsdatei
bearbeiten. Stellen Sie sicher, dass Sie einen Programmiertext-Editor wie
editor /usr/share/nginx/wwww/fdroid/config.yml
verwenden. In der
Konfigurationsdatei können Sie den Namen des Repos, die Beschreibung, das
Symbol, die Pfade zu bestimmten Versionen der Build-Tools, Links zu einem
verwandten Wiki und ob Statistiken gespeichert werden sollen,
festlegen. Hier ist die grundlegende Repo-Beschreibung:
repo_url = "http://guardianproject.info/fdroid/repo"
repo_name = "My Local Repo"
repo_icon = "GP_Logo_hires.png"
repo_description = """
Ein lokales Test-Repository von Hans-Christoph Steiner <hans@guardianproject.info>.
Es handelt sich um ein Repository mit Guardian-Project-Apps. """
Um Ihr Symbol in Ihr Repo einzufügen, wählen Sie ein PNG-Bild, das Sie in
Ihr Repo einfügen möchten. Das PNG geht in /usr/share/nginx/wwww/fdroid/
,
die Datei kann beliebig benannt werden (standardmäßig ist es
fdroid-icon.png
). Wenn Sie den Namen von der Voreinstellung abweichend
nennen, stellen Sie sicher, dass Sie repo_icon
und archive_icon
in
/usr/share/nginx/wwww/fdroid/config.yml
aktualisieren.
Ein letzter Hinweis zur Sicherheit: dieses Setup ist kein gutes Setup für
ein echtes öffentliches Repo, sondern eine schnelle und einfache
Möglichkeit, F-Droid zu testen. Stellen Sie zumindest bei der Generierung
des Repos sicher, dass config.yml nicht über das Web erreichbar ist, da es
Passwörter enthält. Wenn die Dateiberechtigungen korrekt sind (z. B. chmod
0600 config.yml
), dann ist config.yml für den Webserver nicht lesbar.
App-Metadaten
Sie können viele Aspekte der Darstellung einer App in Ihrem Repo steuern,
indem Sie die Metadaten der App bearbeiten. Das Ausführen von fdroid update
--create-metadata
erzeugt Stub-Dateien für Sie, um ein funktionierendes
Repo zu erhalten. Sie können dann diese Dateien bearbeiten, um eine
Beschreibung, Spenden-Links, Bug-Tracker, Lizenz, Homepage,
etc. hinzuzufügen. Weitere Informationen zu allen Optionen finden Sie unter
Build-Metadatenreferenz.
CurrentVersionCode bietet eine praktische Möglichkeit, Beta-Versionen im selben Stream wie Ihre Vollversionen zu verteilen. Sie können CurrentVersionCode auf Ihre aktuelle stabile Version setzen und dann APKs zu Ihrem Repo hinzufügen. Benutzer werden nur automatisch auf den von Ihnen angegebenen Versionscode aktualisiert. Alle APKs für eine bestimmte Anwendung in Ihrem Repo, die einen neueren Versionscode haben, werden nicht automatisch installiert. Stattdessen kann der Benutzer sie in der App-Detailansicht im Client sehen und manuell installieren.
Reales Setup
Jetzt, da Sie ein funktionierendes Repo haben, ist es einfach, ein reales Setup zu erstellen. Ein Repo vor Ort zu generieren, wie oben beschrieben, ist sehr einfach, deshalb hat dieses HOWTO hiermit begonnen, aber es ist nicht so sicher, wie es sein sollte, wenn Ihr Repo Ihr Hauptverteilungspunkt werden soll. Beispielsweise sollten sich die Repo-Signaturschlüssel niemals auf einem öffentlichen Server befinden.
Um diese Situation zu verbessern, erzeugen Sie das Repo auf einem
nicht-öffentlichen Rechner wie Ihrem Laptop, wobei Sie config.yml und den
Schlüsselspeicher nur auf diesem Rechner behalten (denken Sie daran, Backups
zu erstellen!). Verwenden Sie dann fdroid deploy
, um die Änderungen an
Ihrem Repo auf einem separaten Server via ssh zu veröffentlichen. Also
starten Sie ein von Grund auf neues Repo auf Ihrer nicht-öffentlichen
Maschine:
mkdir ~/fdroid
cd ~/fdroid
fdroid init
cp /pfad/zum/\*.apk ~/fdroid/repo/
fdroid update --create-metadata
emacs config.yml # Serverwebroot usw. ergänzen
fdroid deploy -v
Bearbeiten Sie nun config.yml, um serverwebroot
zu setzen, es hat die
Form eines Standard-SCP-Dateiziels. Dann wird fdroid deploy
die
Veröffentlichung über rsync über ssh durchführen. Beide Computer müssen also
ssh und rsync installiert und eingerichtet haben. Sie können auch Ihren
eigenen vorhandenen Signierschlüssel verwenden, anstatt den von fdroid
init
erzeugten, bearbeiten Sie einfach repo_keyalias
, keystore
,
keystorepass
, keypass
und keydname
in ~/fdroid/config.yml.