GPSLogger est une application Android qui enregistre les informations GPS dans différents formats (GPX, KML, CSV, NMEA, URL personnalisée) et propose des options de téléchargement (SFTP, OpenStreetMap, Google Drive, Dropbox, Email). Cette application vise à être aussi économe en batterie que possible.
Découvrez les fonctionnalités de GPSLogger ici
Vous pouvez le trouver sur F-Droid
Vous pouvez télécharger directement à partir des versions.
Vous pouvez aider avec les traductions sur Weblate.
Vous pouvez également soumettre des demandes d'extraction pour des corrections de bugs et de nouvelles fonctionnalités.
Je ne suis pas très bon en interface utilisateur, donc tout travail sur les mises en page serait apprécié !
Sous licence GPL v2 | Licences tierces | Politique de confidentialité
C'est une bonne pratique de vérifier les téléchargements. Une signature PGP, un bundle Cosign et une somme de contrôle SHA256 accompagneront chaque .apk
.
Pour vérifier l'intégrité et la signature de PGP :
gpg --recv-key 6989CF77490369CFFDCBCD8995E7D75C76CBE9A9
gpg --verify gpslogger-132.apk.asc
(Expérimental) Pour vérifier avec Sigstore Cosign, la commande doit être dans les notes de version, elle ressemblera à ceci :
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
Pour vérifier la somme de contrôle :
sha256sum -c gpslogger-132.apk.SHA256
Le projet est basé sur le plugin du système de build Android pour Gradle. Ces instructions concernent Ubuntu Linux avec Android Studio, mais pour les autres systèmes d'exploitation, elles devraient être à peu près similaires.
Suivez les instructions sur le site Web des développeurs Android pour configurer votre ordinateur pour le développement.
Téléchargez et installez Android Studio (il y a aussi un jeu d'enfant)
git clone git://github.com/mendhak/gpslogger.git
Ce projet utilise certaines bibliothèques Android, vous pouvez les installer en utilisant sdkmanager
mal implémenté de Google :
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'
Créez un fichier appelé local.properties
, pointant vers votre répertoire SDK Android.
cd gpslogger
echo "sdk.dir=/home/mendhak/Programs/Android" > local.properties
Ouvrez Android Studio et choisissez d'importer un projet. Sélectionnez le fichier build.gradle
le plus haut sous GPSLogger.
Si vous obtenez une boîte de dialogue Importer, choisissez Importer le projet à partir d'un modèle externe
Sur l'écran suivant, choisissez les valeurs par défaut et continuez (wrapper gradle par défaut)
Attendez une minute et Android Studio configurera les projets et téléchargera les différentes bibliothèques.
Créez un compte avec OpenStreetMap et connectez-vous.
Cliquez sur « Mes paramètres », puis « Applications OAuth2 »
Cliquez sur 'Enregistrez votre candidature'
Remplissez le formulaire avec ces informations. N'oubliez pas de décocher la case « Application confidentielle », puisqu'il s'agit d'une application mobile.
Après avoir enregistré l'application, vous recevrez un identifiant client.
Placez l'ID client dans OpenStreetMapManager#getOpenStreetMapClientID().
Si vous avez utilisé votre propre schéma personnalisé, remplacez la valeur dans AndroidManifest.xml et OpenStreetMapManager#getOpenStreetMapRedirect()
Créez un compte sur Dropbox.com
Accédez à la page Développeurs Dropbox et cliquez sur « Créer une application ».
Utilisez ces paramètres, mais choisissez un nom unique
Après avoir créé l'application, vous recevrez une clé d'application et un secret (ceux dans la capture d'écran sont faux)
Placez les clés dans votre ~/.gradle/gradle.properties
comme ceci :
GPSLOGGER_DROPBOX_APPKEY=abcdefgh
GPSLOGGER_DROPBOX_APPSECRET=1234123456
Remplacez la clé de l'application Dropbox par votre fichier AndroidManifest.xml
<!-- Change this to be db- followed by your app key -->
<data android:scheme="db-12341234"/>
Inscrivez-vous à Google Cloud Platform. Créez un nouveau projet.
Sous API et services, activez l'API Google Drive.
Ensuite, accédez à l’écran de consentement Oauth, en suivant les étapes jusqu’à atteindre les étendues. Ajoutez la portée https://www.googleapis.com/auth/drive.file
.
Créez des informations d'identification OAuth, de type Android.
Sous le nom du package, utilisez com.mendhak.gpslogger
. Pour l’empreinte digitale du certificat SHA-1, obtenez-la à l’aide de la commande keytool -keystore ~/.android/debug.keystore -list -v
.
GPSLogger est composé de quelques composants principaux ;
Le bus d'événements est l'endroit où se déroule toute la communication croisée. Divers composants déclenchent leurs événements sur le bus d'événements et d'autres parties de l'application écoutent ces événements. Le plus important est que lorsqu'un emplacement est obtenu, il est placé sur le bus d'événements et consommé par de nombreux fragments.
GPSLoggingService est l'endroit où tout le travail se déroule. Ce service communique avec les fournisseurs de localisation (réseau et satellite). Il configure des minuteries et des alarmes pour le prochain point GPS à demander. Il transmet les informations de localisation aux différents enregistreurs afin qu'ils puissent écrire des fichiers. Il appelle également les téléchargeurs automatiques afin qu'ils puissent envoyer leurs fichiers vers DropBox, OSM, etc.
Il transmet également des informations au bus d'événements.
Il s'agit du principal formulaire visible dans l'application. Il se compose de plusieurs « fragments » : la vue simple, la vue détaillée et la vue agrandie.
Il s'occupe de l'écran principal, des menus et des barres d'outils.
Les fragments écoutent le bus d'événements pour les changements d'emplacement et l'affichent à leur manière.
Deux autres objets flottent. Session
contient diverses informations liées à l'exécution actuelle de GPSLogger, telles que le nom du fichier actuel, le dernier emplacement connu, le nombre de satellites et toute autre information qui n'est pas statique mais qui est nécessaire à l'exécution actuelle de GPSLogger.
AppSettings
est une représentation des préférences de l'utilisateur.
Ces objets sont visibles dans toute l’application et sont accessibles directement par n’importe quelle classe, service, activité ou fragment.
La tâche Gradle « assembler » sera construite et recherchera également une clé GPG avec laquelle signer l'APK. Il faut d'abord une configuration :
Créez ~/.gradle/gradle.properties
qui contient le magasin de versions et ses détails clés, ainsi que les détails de la clé GPG
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
Assurez-vous que gpg2 est installé
sudo apt install gnupg2
Et assurez-vous que le fichier gnupg.keyname ci-dessus se trouve dans le magasin de clés gpg, jetez un œil en utilisant gpg2 --list-secret-keys
Une fois ces éléments en place, la tâche « assembler » doit créer l'APK, le signer et également créer une somme de contrôle.
S'il n'apparaît pas dans le dossier gpslogger, exécutez 'copyFinalAPK' pour qu'il copie les fichiers APK, ASC et SHA256 dans le dossier gpslogger.
Enfin, téléchargez sur les versions Github.
F-Droid surveille le référentiel Github pour les balises, construira ces balises et les signera en utilisant sa propre clé. Il n'y a donc pas grand chose à faire.
Assurez-vous que gpslogger/build.gradle versionCode
et versionName
contiennent le dernier numéro de version à publier.
Enfin, marquez le commit,
git tag -s v128
git push origin master --tags
Utilisez l'image docker fdroidserver. Clonez le dépôt de métadonnées fdroid et apportez des modifications au fichier com.mendhak.gpslogger.yml.
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