GPSLogger هو تطبيق Android يقوم بتسجيل معلومات GPS بتنسيقات مختلفة (GPX وKML وCSV وNMEA وCustom URL) ولديه خيارات للتحميل (SFTP وOpenStreetMap وGoogle Drive وDropbox وEmail). يهدف هذا التطبيق إلى أن يكون فعالاً في استخدام البطارية قدر الإمكان.
اقرأ عن ميزات 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
يعتمد المشروع على البرنامج المساعد لنظام بناء Android لـ Gradle. هذه التعليمات مخصصة لنظام التشغيل Ubuntu Linux مع Android Studio، ولكن بالنسبة لأنظمة تشغيل أخرى، يجب أن تكون مشابهة تقريبًا.
اتبع الإرشادات الموجودة على موقع Android Developer الإلكتروني لإعداد جهاز الكمبيوتر الخاص بك للتطوير.
قم بتنزيل Android Studio وتثبيته (هناك أيضًا لقطة سريعة)
git clone git://github.com/mendhak/gpslogger.git
يستخدم هذا المشروع مكتبات Android معينة، ويمكنك تثبيتها باستخدام sdkmanager
من 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'
قم بإنشاء ملف يسمى local.properties
، مع الإشارة إلى دليل Android SDK الخاص بك.
cd gpslogger
echo "sdk.dir=/home/mendhak/Programs/Android" > local.properties
افتح Android Studio واختر استيراد مشروع. حدد أعلى ملف build.gradle
ضمن GPSLogger.
إذا حصلت على مربع حوار استيراد، فاختر استيراد المشروع من نموذج خارجي
في الشاشة التالية، اختر الإعدادات الافتراضية وتابع (مجمّع التدرج الافتراضي)
امنحها دقيقة وسيقوم Android Studio بتهيئة المشاريع وتنزيل المكتبات المتنوعة.
قم بالتسجيل للحصول على حساب في OpenStreetMap وقم بتسجيل الدخول.
انقر فوق "إعداداتي"، ثم "تطبيقات OAuth2"
انقر فوق "تسجيل التطبيق الخاص بك"
املأ النموذج بهذه التفاصيل. تذكر إلغاء تحديد مربع الاختيار "التطبيق السري"، نظرًا لأن هذا تطبيق جوال.
بعد تسجيل التطبيق، سوف تتلقى معرف العميل.
ضع معرف العميل في OpenStreetMapManager#getOpenStreetMapClientID().
إذا استخدمت مخططك المخصص، فاستبدل القيمة في AndroidManifest.xml وOpenStreetMapManager#getOpenStreetMapRedirect()
قم بالتسجيل للحصول على حساب مع Dropbox.com
انتقل إلى صفحة Dropbox Developers وانقر على "إنشاء تطبيق"
استخدم هذه الإعدادات، ولكن اختر اسمًا فريدًا
بعد إنشاء التطبيق، ستتلقى مفتاح التطبيق وسرًا (الموجودان في لقطة الشاشة مزيفان)
ضع المفاتيح في ~/.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 Cloud Platform. إنشاء مشروع جديد.
ضمن واجهات برمجة التطبيقات والخدمات، قم بتمكين Google Drive API.
بعد ذلك، انتقل إلى شاشة موافقة Oauth، واتبع الخطوات حتى تصل إلى النطاقات. أضف النطاق https://www.googleapis.com/auth/drive.file
.
قم بإنشاء بعض بيانات اعتماد OAuth، من النوع Android.
ضمن اسم الحزمة، استخدم com.mendhak.gpslogger
. للحصول على بصمة شهادة SHA-1، احصل عليها باستخدام الأمر keytool -keystore ~/.android/debug.keystore -list -v
.
يتكون GPSLogger من بعض المكونات الرئيسية؛
حافلة الأحداث هي المكان الذي تتم فيه جميع الاتصالات المتبادلة. تقوم المكونات المختلفة برفع أحداثها على ناقل الأحداث، وتستمع الأجزاء الأخرى من التطبيق إلى تلك الأحداث. والأهم هو أنه عند الحصول على الموقع، يتم وضعه في ناقل الحدث واستهلاكه بواسطة العديد من الأجزاء.
GPSLoggingService هو المكان الذي يحدث فيه كل العمل. تتحدث هذه الخدمة مع مزودي الموقع (الشبكة والقمر الصناعي). يقوم بإعداد المؤقتات والإنذارات لنقطة GPS التالية المطلوب طلبها. يقوم بتمرير معلومات الموقع إلى المسجلين المختلفين حتى يتمكنوا من كتابة الملفات. كما أنه يستدعي القائمين بالتحميل التلقائي حتى يتمكنوا من إرسال ملفاتهم إلى DropBox وOSM وما إلى ذلك.
كما يقوم أيضًا بتمرير المعلومات إلى ناقل الأحداث.
هذا هو النموذج المرئي الرئيسي في التطبيق. وهو يتألف من عدة "أجزاء" - العرض البسيط والعرض التفصيلي والعرض الكبير.
فهو يعتني بالشاشة الرئيسية والقوائم وأشرطة الأدوات.
تستمع الأجزاء إلى ناقل الأحداث لتغييرات الموقع وتعرضها بطريقتها الخاصة.
هناك كائنان آخران يطفوان حولهما. تحتوي Session
على أجزاء مختلفة من المعلومات المتعلقة بتشغيل GPSLogger الحالي، مثل اسم الملف الحالي وآخر موقع معروف وعدد الأقمار الصناعية وأي معلومات أخرى ليست ثابتة ولكنها مطلوبة للتشغيل الحالي لـ GPSLogger.
AppSettings
هو تمثيل لتفضيلات المستخدم.
تكون هذه الكائنات مرئية في جميع أنحاء التطبيق ويمكن الوصول إليها مباشرة عن طريق أي فئة أو خدمة أو نشاط أو جزء.
سيتم إنشاء مهمة "التجميع" Gradle، وستبحث أيضًا عن مفتاح GPG لتوقيع APK به. يحتاج إلى بعض الإعداد أولاً:
قم بإنشاء ~/.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.
يراقب F-Droid مستودع Github للعلامات، وسيقوم ببناء تلك العلامات وتوقيعها باستخدام مفتاحه الخاص. لذا، ليس هناك الكثير للقيام به.
تأكد من أن gpslogger/build.gradle versionCode
و versionName
يحتويان على أحدث رقم إصدار سيتم إصداره.
أخيرًا ضع علامة على الالتزام،
git tag -s v128
git push origin master --tags
استخدم صورة عامل الإرساء fdroidserver. قم باستنساخ مستودع البيانات التعريفية 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