Schnellstartanleitung für Anträge an F-Droid

Dies ist wahrscheinlich die beste Art, um ein eigenes Paket in das Repository zu bekommen, da man eine direkte Merge-Anfrage für die Metadaten zum Paket liefern kann, was es für die Betreuer einfach macht.

Um das Verfahren im Überblick zu verstehen, lesen Sie den Abschnitt Vorschlag als Metadaten-Merge-Anfrage im Aufnahmeverfahren.

Erste Schritte

Finden Sie alle AndroidManifest.xml und build.gradle Dateien im Quellcode der Anwendung, von der Sie möchten, dass sie aufgenommen wird, und schreiben Sie nieder, in welchem Unterverzeichnis die detailreichsten unter ihnen zu sein scheinen.

Registrieren Sie sich auf GitLab und bilden Sie einen Fork des Repositorys fdroiddata.

Metadaten-Upstream

Jeder offizielle Release-Commit im Upstream-Git-Repository der Anwendung sollte einen Tag haben. Wenn sein AndroidManifest beispielsweise versionName: '1.0' enthält, benötigt der Commit einen v1.0-Tag. Es wird dringend empfohlen, auch Metadaten in das Quell-Repo der Anwendung aufzunehmen:

  • metadata/en-US/short_description.txt (30-50 Zeichen, kein Punkt am Ende)
  • metadata/en-US/full_description.txt
  • metadata/en-US/images/icon.png
  • metadata/en-US/images/phoneScreenshots/screenshot.png

Wenn das AndroidManifest versionCode: 123 enthält, sollte es eine entsprechende Erklärung geben, was in der neuen Version neu ist:

  • metadata/en-US/changelogs/123.txt (max. 500 Zeichen)

Stöbern Sie im Verzeichnis der F-Droid-App-Metadaten , um ein reelles Beispiel zu erhalten.

Es werden auch andere Formate und Orte für die Beschreibungen, Grafiken und Screenshots unterstützt. Zum Beispiel kann statt metadata/en-US das Verzeichnis fastlane/metadata/android/en-US sein.

Senden Sie dem App-Entwicklerteam einen Merge Request, wenn das Repository keine jener Dateien enthält, und eröffnen Sie ein Ticket, wenn es keine Versionskennzeichen besitzt. Sind diese Metadaten am richtigen Ort, bleiben sie unter direkter Kontrolle der Entwickler, und ihre Aktualisierungen sowie zukünftige Übersetzungen werden automatisch bezogen.

Build-Umgebung

Auf einem Laptop mit Ubuntu 21.10 werden im Februar 2022 2 GB Traffic und 5 GB Festplattenspeicher benötigt, um eine F-Droid-Build-Umgebung einzurichten.

Netzwerkanforderungen:

  • 60 MB: Oberflächliches Klonen von fdroiddata und fdroidserver
  • 75 MB: Installation von docker.io
  • 1000 MB: Laden des Containers
  • 800 MB: Build

Speicheranforderungen:

  • 1000 MB: Klonen des Repos und Installation von docker.io
  • 4000 MB: Laden des Containers und Builds

Laden Sie Ihren Fork herunter, erstellen Sie dann einen neuen Branch und eine Metadatendatei. Wenn build.gradle der Anwendung sagt applicationId "com.example" beispielsweise:

git clone --depth=1 https://gitlab.com/IHR_KONTO/fdroiddata ~/fdroiddata
cd ~/fdroiddata
git checkout -b com.example
cp templates/app-full metadata/com.example.yml

Füllen Sie ~/fdroiddata/metadata/com.example.yml nach der Build-Metadaten-Referenz aus. Wenn Sie das Entwicklerteam der Anwendung davon überzeugt haben, in ihrem Repository wie oben beschrieben Beschreibungen einzuschließen und Versionskennzeichen zu verwenden, wird die Datei sehr präzise sein:

Categories:
  - Internet
  - Navigation
License: GPL-3.0-or-later
SourceCode: https://gitlab.com/APPLICATION_UPSTREAM/ExampleCom

RepoType: git
Repo: https://gitlab.com/APPLICATION_UPSTREAM/ExampleCom

Builds:
  - versionName: '1.0'
    versionCode: 123
    commit: v1.0
    # Where build.gradle is:
    subdir: app
    sudo:
      - apt-get update || apt-get update
      - apt-get install -y librsvg2-bin openjdk-11-jdk-headless
      - update-alternatives --auto java
    gradle:
      - yes

AutoUpdateMode: Version
UpdateCheckMode: Tags
CurrentVersion: '1.0'
CurrentVersionCode: 123

Passen Sie die relevanten sudo-Zeilen an oder entfernen Sie diese nach Bedarf:

  • build.gradle der Beispielanwendung führt rsvg-convert aus, um ihre Vektorsymbole zu rastern, also installieren wir librsvg2-bin aus den offiziellen Debian-Repositories. Alle diese Abhängigkeiten sollten in der README der App angegeben werden.

  • build.gradle erwähnt com.android.tools.build:gradle:7.1.0 und für das Gradle-Android-Plugin in Version 7 ist bekannt, dass es von Java 11 abhängt. Somit installieren wir openjdk-11-jdk-headless und bestimmen es als die java-Alternative.

Laden Sie die neuste Version des Containers mit den Server-Tools herunter und starten Sie ihn:

git clone --depth=1 https://gitlab.com/fdroid/fdroidserver ~/fdroidserver
sudo sh -c 'apt-get update &&apt-get install -y docker.io'
sudo docker run --rm -itu vagrant --entrypoint /bin/bash \
  -v ~/fdroiddata:/build:z \
  -v ~/fdroidserver:/home/vagrant/fdroidserver:Z \
  registry.gitlab.com/fdroid/fdroidserver:buildserver

Im Container:

. /etc/profile
export PATH="$fdroidserver:$PATH" PYTHONPATH="$fdroidserver"
cd /build
fdroid readmeta
fdroid rewritemeta com.example
fdroid checkupdates --allow-dirty com.example
fdroid lint com.example
fdroid build --on-server com.example

Wenn irgendein Befehl, wie fdroid readmeta, einen Fehler auslöst, bearbeiten Sie ~/fdroiddata/metadata/com.example.yml entsprechend und versuchen Sie den Befehl erneut auszuführen. Nach einem erfolgreichen Build, verlassen Sie den Container, erstellen Sie einen Commit mit einem Neue App-Label für Ihre Metadatendatei und verschieben Sie diese in Ihren Fork:

exit
cd ~/fdroiddata
git add metadata/com.example.yml
git commit -m "New App: com.example"
git push origin com.example

Erstellen Sie einen Merge-Request im fdroiddata-Repository und wählen Sie Ihren com.example-Quellzweig aus. Warten Sie, bis die Verpacker Ihren Merge-Request übernommen haben. Bitte achten Sie darauf, ob Sie Fragen gestellt bekommen und antworten Sie so schnell wie möglich darauf.

Problemlösung

Sie erhalten Hilfe zu F-Droid über IRC, Matrix, XMPP, E-Mail und einige weitere Kanäle.