GPSLogger 是一款 Android 应用程序,可将 GPS 信息记录为各种格式(GPX、KML、CSV、NMEA、自定义 URL),并具有上传选项(SFTP、OpenStreetMap、Google Drive、Dropbox、电子邮件)。该应用程序旨在尽可能提高电池效率。
在此处了解 GPSLogger 的功能
您可以在 F-Droid 上找到它
您可以直接从发行版下载。
您可以在 Weblate 上帮助翻译。
您还可以提交错误修复和新功能的拉取请求。
我不太擅长用户界面,所以任何布局方面的工作都将不胜感激!
根据 GPL v2 获得许可 |第三方许可 |隐私政策
验证下载是一个很好的做法。每个.apk
都会附带 PGP 签名、Cosign 捆绑包和 SHA256 校验和。
要验证 PGP 完整性和签名:
gpg --recv-key 6989CF77490369CFFDCBCD8995E7D75C76CBE9A9
gpg --verify gpslogger-132.apk.asc
(实验)要使用 Sigstore Cosign 进行验证,该命令应位于发行说明中,如下所示:
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
验证校验和:
sha256sum -c gpslogger-132.apk.SHA256
该项目基于 Gradle 的 Android 构建系统插件。这些说明适用于带有 Android Studio 的 Ubuntu Linux,但对于其他操作系统,应该大致相似。
按照 Android 开发者网站上的说明设置您的计算机以进行开发。
下载并安装 Android Studio(还有一个快照)
git clone git://github.com/mendhak/gpslogger.git
该项目使用某些 Android 库,您可以使用 Google 实施不佳的sdkmanager
安装它们:
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'
创建一个名为local.properties
的文件,指向您的 Android SDK 目录。
cd gpslogger
echo "sdk.dir=/home/mendhak/Programs/Android" > local.properties
打开Android Studio并选择导入项目。选择 GPSLogger 下最上面的build.gradle
文件。
如果出现“导入”对话框,请选择“从外部模型导入项目”
在下一个屏幕上,选择默认值并继续(默认 gradle 包装器)
稍等片刻,Android Studio 将配置项目并下载各种库。
注册 OpenStreetMap 帐户并登录。
单击“我的设置”,然后单击“OAuth2 应用程序”
点击“注册您的应用程序”
使用这些详细信息填写表格。请记住取消选中“机密应用程序”复选框,因为这是一个移动应用程序。
注册应用程序后,您将收到一个客户 ID。
将客户端 ID 放入 OpenStreetMapManager#getOpenStreetMapClientID() 中。
如果您使用自己的自定义方案,请替换 AndroidManifest.xml 和 OpenStreetMapManager#getOpenStreetMapRedirect() 中的值
注册 Dropbox.com 帐户
转到 Dropbox 开发者页面并单击“创建应用程序”
使用这些设置,但选择一个唯一的名称
创建应用程序后,您将收到应用程序密钥和密钥(屏幕截图中的密钥和密钥是假的)
将密钥放入~/.gradle/gradle.properties
中,如下所示:
GPSLOGGER_DROPBOX_APPKEY=abcdefgh
GPSLOGGER_DROPBOX_APPSECRET=1234123456
将 Dropbox 应用密钥替换为 AndroidManifest.xml 文件
<!-- Change this to be db- followed by your app key -->
<data android:scheme="db-12341234"/>
注册 Google 云平台。创建一个新项目。
在 API 和服务下,启用 Google Drive API。
接下来,转到 Oauth 同意屏幕,完成这些步骤,直到到达范围。添加https://www.googleapis.com/auth/drive.file
范围。
创建一些 Android 类型的 OAuth 凭据。
在包名称下,使用com.mendhak.gpslogger
。对于 SHA-1 证书指纹,请使用keytool -keystore ~/.android/debug.keystore -list -v
命令获取。
GPSLogger由几个主要组件组成;
事件总线是所有交叉通信发生的地方。各种组件在事件总线上引发事件,应用程序的其他部分则侦听这些事件。最重要的是,当获取一个位置时,它会被放置在事件总线上并被许多片段消耗。
GPSLoggingService 是所有工作发生的地方。该服务与位置提供商(网络和卫星)进行通信。它为要请求的下一个 GPS 点设置计时器和警报。它将位置信息传递给各个记录器,以便它们可以写入文件。它还调用自动上传器,以便它们可以将文件发送到 DropBox、OSM 等。
它还将信息传递到事件总线。
这是应用程序中的主要可见形式。它由几个“片段”组成——简单视图、详细视图和大视图。
它负责主屏幕、菜单和工具栏。
片段监听事件总线的位置变化并以自己的方式显示它。
漂浮着另外两个物体。 Session
包含与当前 GPSLogger 运行相关的各种信息,例如当前文件名、最后已知位置、卫星计数以及非静态但 GPSLogger 当前运行所需的任何其他信息。
AppSettings
代表了用户的偏好。
这些对象在整个应用程序中都是可见的,并且可以由任何类、服务、活动或片段直接访问。
将构建“assemble”Gradle 任务,并且它还会查找用于签署 APK 的 GPG 密钥。首先需要进行一些设置:
创建~/.gradle/gradle.properties
其中包含发布存储及其关键详细信息,以及 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
确保 gpg2 已安装
sudo apt install gnupg2
并确保上面的 gnupg.keyname 在 gpg 密钥库中,使用gpg2 --list-secret-keys
查看
一旦这些部分就位,“组装”任务应该构建 APK,对其进行签名,并创建校验和。
如果它没有出现在 gpslogger 文件夹中,请运行“copyFinalAPK”,以便将 APK、ASC 和 SHA256 文件复制到 gpslogger 文件夹中。
最后上传到Github Releases。
F-Droid 监视 Github 存储库中的标签,并构建这些标签,并使用自己的密钥对其进行签名。所以,没有太多事可做。
确保gpslogger/build.gradle versionCode
和versionName
包含最新要发布的版本号。
最后标记提交,
git tag -s v128
git push origin master --tags
使用 fdroidserver docker 镜像。克隆 fdroid 元数据存储库并对 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