GPSLogger ist eine Android-App, die GPS-Informationen in verschiedenen Formaten (GPX, KML, CSV, NMEA, benutzerdefinierte URL) protokolliert und Optionen zum Hochladen bietet (SFTP, OpenStreetMap, Google Drive, Dropbox, E-Mail). Diese App soll so batterieeffizient wie möglich sein.
Lesen Sie hier mehr über die Funktionen von GPSLogger
Sie finden es auf F-Droid
Sie können die Veröffentlichungen direkt herunterladen.
Sie können bei Übersetzungen auf Weblate helfen.
Sie können auch Pull-Requests für Fehlerbehebungen und neue Funktionen einreichen.
Ich bin nicht sehr gut in UIs, daher wäre jede Arbeit mit den Layouts dankbar!
Lizenziert unter GPL v2 | Lizenzen Dritter | Datenschutzrichtlinie
Es empfiehlt sich, Downloads zu überprüfen. Jede .apk
wird von einer PGP-Signatur, einem Cosign-Bundle und einer SHA256-Prüfsumme begleitet.
So überprüfen Sie die PGP-Integrität und -Signatur:
gpg --recv-key 6989CF77490369CFFDCBCD8995E7D75C76CBE9A9
gpg --verify gpslogger-132.apk.asc
(Experimentell) Zur Überprüfung mit Sigstore Cosign sollte der Befehl in den Versionshinweisen enthalten sein. Er sieht folgendermaßen aus:
cosign verify-blob gpslogger-132.apk
--bundle gpslogger-132.apk.cosign.bundle --new-bundle-format
--cert-oidc-issuer https://token.actions.githubusercontent.com
--cert-identity https://github.com/mendhak/gpslogger/.github/workflows/generate-release-apk.yml@refs/head/master
So überprüfen Sie die Prüfsumme:
sha256sum -c gpslogger-132.apk.SHA256
Das Projekt basiert auf dem Android-Build-System-Plugin für Gradle. Diese Anweisungen gelten für Ubuntu Linux mit Android Studio, für andere Betriebssysteme sollten sie jedoch ungefähr ähnlich sein.
Befolgen Sie die Anweisungen auf der Android-Entwickler-Website, um Ihren Computer für die Entwicklung einzurichten.
Laden Sie Android Studio herunter und installieren Sie es (es gibt auch einen Snap)
git clone git://github.com/mendhak/gpslogger.git
Dieses Projekt verwendet bestimmte Android-Bibliotheken. Sie können sie mit dem schlecht implementierten sdkmanager
von Google installieren:
echo y | $HOME/android-sdk/tools/bin/sdkmanager 'tools'
echo y | $HOME/android-sdk/tools/bin/sdkmanager 'platform-tools'
echo y | $HOME/android-sdk/tools/bin/sdkmanager 'build-tools;26.0.2'
echo y | $HOME/android-sdk/tools/bin/sdkmanager 'platforms;android-27'
echo y | $HOME/android-sdk/tools/bin/sdkmanager 'platforms;android-25'
echo y | $HOME/android-sdk/tools/bin/sdkmanager 'extras;google;m2repository'
echo y | $HOME/android-sdk/tools/bin/sdkmanager 'extras;android;m2repository'
echo y | $HOME/android-sdk/tools/bin/sdkmanager 'extras;google;google_play_services'
Erstellen Sie eine Datei mit dem Namen local.properties
, die auf Ihr Android SDK-Verzeichnis verweist.
cd gpslogger
echo "sdk.dir=/home/mendhak/Programs/Android" > local.properties
Öffnen Sie Android Studio und wählen Sie den Import eines Projekts. Wählen Sie unter GPSLogger die oberste build.gradle
Datei aus.
Wenn Sie ein Importdialogfeld erhalten, wählen Sie „Projekt aus externem Modell importieren“.
Wählen Sie im nächsten Bildschirm die Standardeinstellungen aus und fahren Sie fort (Standard-Gradle-Wrapper).
Nehmen Sie sich eine Minute Zeit und Android Studio konfiguriert die Projekte und lädt die verschiedenen Bibliotheken herunter.
Eröffnen Sie ein Konto bei OpenStreetMap und melden Sie sich an.
Klicken Sie auf „Meine Einstellungen“ und dann auf „OAuth2-Anwendungen“.
Klicken Sie auf „Registrieren Sie Ihre Bewerbung“.
Füllen Sie das Formular mit diesen Angaben aus. Denken Sie daran, das Kontrollkästchen „Vertrauliche Anwendung“ zu deaktivieren, da es sich um eine mobile App handelt.
Nach der Registrierung der Anwendung erhalten Sie eine Kunden-ID.
Platzieren Sie die Client-ID in OpenStreetMapManager#getOpenStreetMapClientID().
Wenn Sie Ihr eigenes benutzerdefiniertes Schema verwendet haben, ersetzen Sie den Wert in AndroidManifest.xml und OpenStreetMapManager#getOpenStreetMapRedirect()
Eröffnen Sie ein Konto bei Dropbox.com
Gehen Sie zur Dropbox-Entwicklerseite und klicken Sie auf „App erstellen“.
Verwenden Sie diese Einstellungen, wählen Sie jedoch einen eindeutigen Namen
Nachdem Sie die App erstellt haben, erhalten Sie einen App-Schlüssel und ein App-Geheimnis (die im Screenshot sind gefälscht).
Platzieren Sie die Schlüssel wie folgt in Ihren ~/.gradle/gradle.properties
:
GPSLOGGER_DROPBOX_APPKEY=abcdefgh
GPSLOGGER_DROPBOX_APPSECRET=1234123456
Ersetzen Sie den Dropbox-App-Schlüssel durch Ihre AndroidManifest.xml-Datei
<!-- Change this to be db- followed by your app key -->
<data android:scheme="db-12341234"/>
Melden Sie sich bei der Google Cloud Platform an. Erstellen Sie ein neues Projekt.
Aktivieren Sie unter APIs und Dienste die Google Drive API.
Gehen Sie als Nächstes zum OAuth-Zustimmungsbildschirm und gehen Sie die Schritte durch, bis Sie zu den Bereichen gelangen. Fügen Sie den Bereich https://www.googleapis.com/auth/drive.file
hinzu.
Erstellen Sie einige OAuth-Anmeldeinformationen vom Typ Android.
Verwenden Sie unter Paketnamen com.mendhak.gpslogger
. Rufen Sie den Fingerabdruck des SHA-1-Zertifikats mit dem Befehl keytool -keystore ~/.android/debug.keystore -list -v
ab.
GPSLogger besteht aus einigen Hauptkomponenten;
Der Event Bus ist der Ort, an dem die gesamte Querkommunikation stattfindet. Verschiedene Komponenten lösen ihre Ereignisse auf dem Event Bus aus, und andere Teile der Anwendung warten auf diese Ereignisse. Das Wichtigste ist, dass beim Erhalten eines Standorts dieser auf dem Ereignisbus platziert und von vielen Fragmenten verbraucht wird.
Im GPSLoggingService findet die ganze Arbeit statt. Dieser Dienst kommuniziert mit den Standortanbietern (Netzwerk und Satellit). Es richtet Timer und Alarme für den nächsten anzufordernden GPS-Punkt ein. Es übergibt Standortinformationen an die verschiedenen Logger, damit diese Dateien schreiben können. Außerdem werden die automatischen Uploader aufgerufen, damit diese ihre Dateien an DropBox, OSM usw. senden können.
Außerdem werden Informationen an den Event Bus weitergeleitet.
Dies ist das wichtigste sichtbare Formular in der App. Es besteht aus mehreren „Fragmenten“ – der einfachen Ansicht, der detaillierten Ansicht und der großen Ansicht.
Es kümmert sich um den Hauptbildschirm, die Menüs und Symbolleisten.
Die Fragmente hören auf den Event Bus auf Standortänderungen und zeigen diese auf ihre eigene Weise an.
Umherschweben sind zwei weitere Objekte. Session
enthält verschiedene Informationen im Zusammenhang mit der aktuellen GPSLogger-Ausführung, z. B. den aktuellen Dateinamen, den letzten bekannten Standort, die Anzahl der Satelliten und alle anderen Informationen, die nicht statisch sind, sondern für die aktuelle Ausführung von GPSLogger benötigt werden.
AppSettings
ist eine Darstellung der Präferenzen des Benutzers.
Diese Objekte sind in der gesamten Anwendung sichtbar und können von jeder Klasse, jedem Dienst, jeder Aktivität oder jedem Fragment direkt aufgerufen werden.
Die Gradle-Aufgabe „Assemble“ wird erstellt und sucht außerdem nach einem GPG-Schlüssel zum Signieren der APK. Es muss zunächst etwas eingerichtet werden:
Erstellen Sie ~/.gradle/gradle.properties
das den Release Store und seine Schlüsseldetails sowie die GPG-Schlüsseldetails enthält
RELEASE_STORE_FILE=/path/to/the.keystore
RELEASE_STORE_PASSWORD=xxxxxxxxxxxxxxxxxx
RELEASE_KEY_ALIAS=gpsloggerkey
RELEASE_KEY_PASSWORD=xxxxxxxxxxxxxxxxxx
signing.gnupg.keyName=xxxxxxxxxxxxxxxxxx
signing.gnupg.passphrase=xxxxxxxxxxxxxxxxxx
Stellen Sie sicher, dass gpg2 installiert ist
sudo apt install gnupg2
Und stellen Sie sicher, dass sich der obige gnupg.keyname im GPG-Keystore befindet. Schauen Sie mit gpg2 --list-secret-keys
nach
Sobald diese Teile vorhanden sind, sollte die „Assemble“-Aufgabe das APK erstellen, signieren und auch eine Prüfsumme erstellen.
Wenn es nicht im GPSlogger-Ordner erscheint, führen Sie „copyFinalAPK“ aus, damit die APK-, ASC- und SHA256-Dateien in den GPSlogger-Ordner kopiert werden.
Zum Schluss auf Github Releases hochladen.
F-Droid überwacht das Github-Repository auf Tags, erstellt diese Tags und signiert sie mit seinem eigenen Schlüssel. Es gibt also nicht allzu viel zu tun.
Stellen Sie sicher, dass gpslogger/build.gradle versionCode
und versionName
die neueste Versionsnummer enthalten, die veröffentlicht werden soll.
Zum Schluss markieren Sie das Commit,
git tag -s v128
git push origin master --tags
Verwenden Sie das Docker-Image fdroidserver. Klonen Sie das fdroid-Metadaten-Repository und nehmen Sie Änderungen an der Datei com.mendhak.gpslogger.yml vor.
git clone https://gitlab.com/fdroid/fdroiddata.git
cd fdroiddata
# https://f-droid.org/en/docs/Submitting_to_F-Droid_Quick_Start_Guide/
# initialize the metadata repo
docker run --rm -v /home/mendhak/Android/Sdk:/opt/android-sdk -v $(pwd):/repo -e ANDROID_HOME:/opt/android-sdk registry.gitlab.com/fdroid/docker-executable-fdroidserver:master init -v
# lint your metadata yml
docker run --rm -v /home/mendhak/Android/Sdk:/opt/android-sdk -v $(pwd):/repo -e ANDROID_HOME:/opt/android-sdk registry.gitlab.com/fdroid/docker-executable-fdroidserver:master lint com.mendhak.gpslogger -v
docker run --rm -v /home/mendhak/Android/Sdk:/opt/android-sdk -v $(pwd):/repo -e ANDROID_HOME:/opt/android-sdk registry.gitlab.com/fdroid/docker-executable-fdroidserver:master readmeta
# see if the latest tag will get picked up.
docker run --rm -v /home/mendhak/Android/Sdk:/opt/android-sdk -v $(pwd):/repo -e ANDROID_HOME:/opt/android-sdk registry.gitlab.com/fdroid/docker-executable-fdroidserver:master checkupdates --auto com.mendhak.gpslogger
docker run --rm -v /home/mendhak/Android/Sdk:/opt/android-sdk -v $(pwd):/repo -e ANDROID_HOME:/opt/android-sdk registry.gitlab.com/fdroid/docker-executable-fdroidserver:master rewritemeta com.mendhak.gpslogger
# build
docker run --rm -v /home/mendhak/Android/Sdk:/opt/android-sdk -v $(pwd):/repo -e ANDROID_HOME:/opt/android-sdk registry.gitlab.com/fdroid/docker-executable-fdroidserver:master build -v -l com.mendhak.gpslogger