[Hilfe] F-Droid-Client kompilieren

Hey Leute,
ich bräuchte mal Hilfe beim kompilieren von fdroidclient. Bin da schon am verzweifeln.
Der Reihe nach was ich bisher versucht habe:
VBox Linux:

  • https://gitlab.com/fdroid/fdroidclient die Zip heruntergeladen und im Ordner ‘Downloads’ entpackt
  • Dann wie im ‘README’ beschrieben im Terminal ‘./gradlew assembleRelease’ ausgeführt
    -> JAVA_HOME nicht gesetzt
  • Java (JRE/JDK) von java.com installiert -> keine besserung
  • dann ‘apt-get install gradle’
  • ‘./gradlew assembleRelease’ -> Gradle: Could not determine java version from ‘11.0.4’
    -> gradle 4.4.1 unterstützt java 11 nicht
  • gradle-wrapper.properties geändert auf 6.3
  • ‘./gradlew assembleRelease’ -> command ‘git’ unbekannt (oder so ähnlich)
  • ‘apt-get install git’
  • ‘./gradlew assembleRelease’ -> Kein Git-Repository (…): .git
  • in app-Ordner dann ‘git init’
  • ‘./gradlew assembleRelease’ -> HEAD ist kein gültiger Objekt-Name
  • in .git fdroidclient kopiert -> config ist ein Ordner
  • in .git git kopiert -> sdk fehlt (und dann wahrscheinlich noch mehr)
    :sob:

Windows:

  • https://gitlab.com/fdroid/fdroidclient die Zip heruntergeladen und auf Desktop entpackt
  • Android Studio gestartet und entpackte Zip-Order geöffnet
    -> A problem occurred starting process ‘command ‘git’’ :expressionless:
  • in build.gradle ‘exec’-Befehl und ‘return’ auskommentiert und ‘return “v1”’ hinzugefügt
    -> Lässt sich endlich kompilieren :smiley:
  • In der Simulation fehlten die Augen bei dem Icon und in der App fehlten zwei Optionen (Kategorie und Direkt)
  • Beim klick auf ‘Optionen’ -> ‘Installierte Apps verwalten’ stürzt die App jedes mal ab mit der Meldung:
    ‘Unable to find explicit activity class {org.fdroid.fdroid.debug/org.fdroid.fdroid.views.installed.InstalledAppsActivity}; have you declared this activity in your AndroidManifest.xml?’

Was denn noch alles? Warum ist das denn immer alles so umständlich? :sob:

Hi, zum ersten mal ein open-source Android Projekt zu kompilieren ist ziemlich lästig, das stimmt. Wenn man das aber einmal gemacht hat, ist es bei den meisten Apps relativ ähnlich und kein Problem mehr.

Meistens ist es einfacher, den Weg über Android Studio zu gehen, weil sich das automatisch um SDK und Java-Version kümmert. Auf der Kommandozeile mit Gradle ist es ein bisschen mehr initiales Setup, aber (auch wenn es erst mal viel auf einmal ist) auch kein Hexenwerk.

Gegen den Git-Fehler hilft es, den Code nicht als zip runterzuladen, sondern mit git: git clone https://gitlab.com/fdroid/fdroidclient.git.

1 Like

Hi ByteHamster,
danke für deine Antwort.

Hat geholfen :+1:
Ich hab es nun endlich (wenn auch über Umwege) geschafft zu kompilieren.
Damit der Fehler auch in Android Studio verschwindet, muss man Git auf dem PC installiert haben, Es reicht nicht, wenn man Git-Portable allein mit der Pfadzuweisung in Studio einbindet.
Edit: In Android Studio gibt es ein Git-Plugin, mit dem man ebenfalls clonen kann. Im Hautordner des Projektes wird dann ein (versteckter) .git-Ordner angelegt, den der gradle für ‘command git’ benötigt.

Aber: ich bekomme es immer noch nicht hin, dass Android Studio die full-Version verwendet. Es benutzt immer die basic-Version. Ich vermute ganz stark, dass man irden wo nur eine Zeile ändern/hinzufügen muss oder in den Einstellungen eine Kleinigkeit ändern muss.
Hat da noch jemand einen kleinen Tipp? :pray:

Hier, wie ich dieses mal vorgegangen bin:
Ich hab mein virtuelles Linux nochmal auf den Ausgangszustand zurückgesetzt und git und openjdk-8 installiert
~/Schreibtisch$ sudo apt-get install git openjdk-8-jdk (jdk. Nicht jre. Sonst kommt beim kompilieren eine Fehlermeldung, dass tools.jar nicht vorhanden sei)

~/Schreibtisch$ git clone https://gitlab.com/fdroid/fdroidclient.git

~/Schreibtisch/fdroidclient$ ./gradlew assembleRelease
-> SDK location not found

In die Datei ‘local.properties’, die im fdroidclient-Ordner angelegt werden muss, den Absoluten-Pfad zum SDK-Ordner eingetragen. In meinem Fall :
sdk.dir=/home/[username]/sdk

Dort müssen sich mindestens die Programme ‘Build-Tools’ und ‘Platform’ befinden
https://dl.google.com/android/repository/build-tools_r27.0.3-linux.zip
https://dl.google.com/android/repository/platform-27_r03.zip
(zip-Inhalt in SDK entpacken. Evtl. noch umbenennen)

~/Schreibtisch/fdroidclient$ ./gradlew assembleRelease
hat jetzt mit erfolgreich beendet

Im Order fdroidclient/app/build/outputs/ befinden sich dann zwei Ordner: ‘basic’ und ‘full’ weiter darin sind dann die jeweiligen APKs.
full/release/app-full-release-unsigned.apk
basic/release/app-basic-release-unsigned.apk

Wenn man nun versucht, diese APKs mit ‘adb install [apk-Datei]’ zu installieren, scheitert die Installation bei mir mit der Meldung, dass von etwas kein Zertifikat im AndroidManifest.xml eingetragen ist. Ich schätze mal, dass es mit unsigniert zusammenhängt.
Hier wäre ne Hilfe nochmal net.

Hab dann folgendes ausgeführt:
~/Schreibtisch/fdroidclient$ ./gradlew assemble

Jetzt wurden debug-apks erstellt, welche wieder jeweils in den Ordnern ‘full’ und ‘basic’ sind
full/debug/app-full-debug.apk
basic/debug/app-basic-debug.apk

Habe diese dann auch mittels ‘adb install [apk-Datei]’ installiert.

Die ‘app-basic-debug.apk’ kam mir bekannt vor. Das ist die, die Android Studio jedes mal verwendet.
Die ‘app-full-debug.apk’ ist die, die man allgemein verwendet.

(Von wegen einfach ‘./gradlew assembleRelease’ ausführen. Die README ist völlig unzureichend :frowning:)

Lässt sich in Android Studio bei “Build Variants” umstellen:

image

Signieren ist am einfachsten mit Android Studio (Build » Generate signed bundle/apk). Für die Kommandozeile hat Google eine Anleitung veröffentlicht: https://developer.android.com/studio/build/building-cmdline#sign_cmdline

Das Aufsetzen einer Android-Entwicklungsumgebung lässt sich auf verschiedene Arten durchführen. Mit Android Studio muss man das SDK nicht manuell runterladen. Für Arch Linux gibt es das SDK in den Paketquellen, usw. Das ist also nichts F-Droid spezifisches. Das einzige, was man direkt mit dem F-Droid Code machen muss, ist tatsächlich ./gradlew assembleRelease.

1 Like

@ByteHamster das ist Hammer mäßig :+1:
Du hast alle noch offenen Fragen geschlossen beantwortet :smiley:

Gut das du vom ‘Build Variants’ ein Screenshoot gemacht hast. Daran konnte ich mich dann orientieren, wonach ich suchen muss.
Später fiel mir ein, dass man auch über ‘View’ > ‘Tool Windows’ > ‘Build Variants’ hin käme.

Das Signieren hat jetzt beim testen nicht geklappt, aber ist für mich momentan noch nicht so wichtig. Evtl. mach ich dann später dazu mal ein neues Thema auf, wenn ich mal wieder am Verzweifeln bin :wink:.

Ach so. Also bezieht sich die README nur auf das eigentliche Projekt. Es wird angenommen, dass alles andere geht bzw. weiß, wie man es handhaben muss.
In dem Fall hätte auch gereicht, wenn man schreibt:

  • Android Studio: click on ‘run’
  • Console: ./gradlew assembleRelease (das man die Datei ‘local.properties’ anlegen muss, fällt dann halt hinten runter)

Verstehe :open_mouth:

Naja, da ich jetzt vermutlich so ziemlich jeden Fehler durch gemacht habe, den man(n) vermutlich machen kann und das ganze Vorgehen notiert habe, wie ich zum Ergebnis kam, könnte man den Titel jetzt als Hilfsstellung lesen :wink:

1 Like

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.