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