GPSLogger é um aplicativo Android que registra informações de GPS em vários formatos (GPX, KML, CSV, NMEA, URL personalizado) e possui opções de upload (SFTP, OpenStreetMap, Google Drive, Dropbox, Email). Este aplicativo pretende ser o mais eficiente possível em termos de bateria.
Leia sobre os recursos do GPSLogger aqui
Você pode encontrá-lo no F-Droid
Você pode baixar diretamente dos lançamentos.
Você pode ajudar com traduções no Weblate.
Você também pode enviar solicitações pull para correções de bugs e novos recursos.
Não sou muito bom em UIs, então qualquer trabalho com layouts seria apreciado!
Licenciado sob GPL v2 | Licenças de terceiros | Política de Privacidade
É uma boa prática verificar os downloads. Uma assinatura PGP, pacote Cosign e uma soma de verificação SHA256 acompanharão cada .apk
.
Para verificar a integridade e assinatura do PGP:
gpg --recv-key 6989CF77490369CFFDCBCD8995E7D75C76CBE9A9
gpg --verify gpslogger-132.apk.asc
(Experimental) Para verificar com Sigstore Cosign, o comando deve estar nas notas de lançamento, ficará assim:
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
Para verificar a soma de verificação:
sha256sum -c gpslogger-132.apk.SHA256
O projeto é baseado no plugin do sistema de compilação Android para Gradle. Estas instruções são para Ubuntu Linux com Android Studio, mas para outros sistemas operacionais, devem ser aproximadamente semelhantes.
Siga as instruções no site do desenvolvedor Android para configurar seu computador para desenvolvimento.
Baixe e instale o Android Studio (também é fácil)
git clone git://github.com/mendhak/gpslogger.git
Este projeto usa certas bibliotecas Android, você pode instalá-las usando sdkmanager
mal implementado do 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'
Crie um arquivo chamado local.properties
, apontando para o diretório do Android SDK.
cd gpslogger
echo "sdk.dir=/home/mendhak/Programs/Android" > local.properties
Abra o Android Studio e escolha importar um projeto. Selecione o arquivo build.gradle
superior em GPSLogger.
Se você receber uma caixa de diálogo Importar, escolha Importar projeto do modelo externo
Na próxima tela, escolha os padrões e prossiga (wrapper gradle padrão)
Espere um minuto e o Android Studio irá configurar os projetos e baixar as diversas bibliotecas.
Cadastre-se para uma conta no OpenStreetMap e faça login.
Clique em 'Minhas configurações' e depois em 'Aplicativos OAuth2'
Clique em 'Registre seu aplicativo'
Preencha o formulário com esses dados. Lembre-se de desmarcar a caixa de seleção ‘Aplicativo confidencial’, pois este é um aplicativo móvel.
Após registrar o aplicativo, você receberá um ID do Cliente.
Coloque o ID do cliente em OpenStreetMapManager#getOpenStreetMapClientID().
Se você usou seu próprio esquema personalizado, substitua o valor em AndroidManifest.xml e OpenStreetMapManager#getOpenStreetMapRedirect()
Cadastre-se para uma conta no Dropbox.com
Vá para a página de desenvolvedores do Dropbox e clique em ‘Criar um aplicativo’
Use essas configurações, mas escolha um nome exclusivo
Depois de criar o aplicativo, você receberá uma chave e um segredo do aplicativo (os da captura de tela são falsos)
Coloque as chaves em ~/.gradle/gradle.properties
assim:
GPSLOGGER_DROPBOX_APPKEY=abcdefgh
GPSLOGGER_DROPBOX_APPSECRET=1234123456
Substitua a chave do aplicativo Dropbox pelo seu arquivo AndroidManifest.xml
<!-- Change this to be db- followed by your app key -->
<data android:scheme="db-12341234"/>
Cadastre-se no Google Cloud Platform. Crie um novo projeto.
Em APIs e serviços, habilite a API do Google Drive.
Em seguida, vá para a tela de consentimento do Oauth, percorrendo as etapas até chegar aos escopos. Adicione o escopo https://www.googleapis.com/auth/drive.file
.
Crie algumas credenciais OAuth, do tipo Android.
No nome do pacote, use com.mendhak.gpslogger
. Para a impressão digital do certificado SHA-1, obtenha-a usando o comando keytool -keystore ~/.android/debug.keystore -list -v
.
GPSLogger é composto por alguns componentes principais;
O Event Bus é onde toda a comunicação cruzada acontece. Vários componentes geram seus eventos no Barramento de Eventos e outras partes do aplicativo escutam esses eventos. O mais importante é que quando um local é obtido, ele é colocado no barramento de eventos e consumido por vários fragmentos.
GPSLoggingService é onde todo o trabalho acontece. Este serviço conversa com os provedores de localização (rede e satélite). Configura temporizadores e alarmes para o próximo ponto GPS a ser solicitado. Ele passa informações de localização para vários registradores para que eles possam gravar arquivos. Também invoca os uploaders automáticos para que possam enviar seus arquivos para DropBox, OSM, etc.
Ele também passa informações para o Event Bus.
Este é o principal formulário visível no aplicativo. Consiste em vários 'fragmentos' - a visão simples, a visão detalhada e a visão grande.
Cuida da tela principal, dos menus e das barras de ferramentas.
Os fragmentos escutam o Event Bus em busca de alterações de localização e as exibem à sua maneira.
Flutuando estão dois outros objetos. Session
contém várias informações relacionadas à execução atual do GPSLogger, como nome do arquivo atual, a última localização conhecida, contagem de satélites e qualquer outra informação que não seja estática, mas necessária para a execução atual do GPSLogger.
AppSettings
é uma representação das preferências do usuário.
Esses objetos ficam visíveis em toda a aplicação e podem ser acessados diretamente por qualquer classe, serviço, atividade ou fragmento.
A tarefa 'montar' do Gradle será criada e também procurará uma chave GPG para assinar o APK. Ele precisa de alguma configuração primeiro:
Crie ~/.gradle/gradle.properties
que contém o armazenamento de lançamento e seus detalhes principais, bem como os detalhes da chave 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
Certifique-se de que o gpg2 esteja instalado
sudo apt install gnupg2
E certifique-se de que o gnupg.keyname acima esteja no keystore gpg, dê uma olhada usando gpg2 --list-secret-keys
Assim que essas peças estiverem no lugar, a tarefa de ‘montagem’ deve construir o APK, assiná-lo e criar uma soma de verificação também.
Caso não apareça na pasta gpslogger, execute 'copyFinalAPK' para que copie os arquivos APK, ASC e SHA256 para a pasta gpslogger.
Por fim, faça upload para os lançamentos do Github.
O F-Droid monitora o repositório do Github em busca de tags, cria essas tags e as assina usando sua própria chave. Então, não há muito o que fazer.
Certifique-se de que gpslogger/build.gradle versionCode
e versionName
contenham o número da versão mais recente a ser lançada.
Finalmente marque o commit,
git tag -s v128
git push origin master --tags
Use a imagem docker fdroidserver. Clone o repositório de metadados fdroid e faça alterações no arquivo 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