traccar-manager-android (форк)

Android-приложение Traccar Manager — тонкий клиент-обёртка над веб-интерфейсом сервера Traccar. Приложение спрашивает адрес сервера, проверяет его через GET /api/server и дальше показывает штатный веб-интерфейс в WebView, добавляя нативные возможности: push-уведомления через Firebase, вход по биометрии, скачивание отчётов, обработку внешних ссылок и передачу координат телефона в веб-приложение.

Форк сделан как резервная копия официального репозитория traccar/traccar-manager-android (автор — Anton Tananaev) в самохостовом Gitea: приложение используется вместе со своим сервером Traccar, и независимая копия исходников позволяет пересобрать APK без доступа к GitHub.

Документация оригинала (ссылка на Google Play, команда, лицензия Apache 2.0) сохранена в README.upstream.md.

Отличия от оригинала

Изменений нет. Все 106 коммитов принадлежат авторам оригинала (102 — Anton Tananaev, 4 — внешние контрибьюторы). Собственных правок владельца форка в истории нет. Форк взят как резервная копия.

Стек

  • Kotlin 1.8.0, Android SDK (compileSdk/targetSdk 33, minSdk 19)
  • Gradle 7.6 + Android Gradle Plugin 7.4.1
  • AndroidX: core-ktx 1.9.0, preference-ktx 1.2.0, lifecycle-viewmodel-ktx 2.5.1, localbroadcastmanager 1.1.0, biometric-ktx 1.2.0-alpha05, multidex 2.0.1, Material Components 1.7.0
  • Flavor google: Firebase BOM 29.0.3 — Analytics, Crashlytics, Cloud Messaging (push-уведомления)
  • Android WebView + JavaScript-мост (@JavascriptInterface)

Структура

Путь Назначение
app/src/main/java/org/traccar/manager/MainActivity.kt Хост-активность: если адрес сервера ещё не сохранён — показывает StartFragment, иначе MainFragment
app/src/main/java/org/traccar/manager/StartFragment.kt Экран первого запуска: ввод адреса сервера и его проверка запросом api/server
app/src/main/java/org/traccar/manager/MainFragment.kt Основной экран: WebView с веб-интерфейсом Traccar, мост postMessage (события login/authentication/logout/server), скачивание отчётов через DownloadManager, открытие внешних ссылок, разрешения на геолокацию и уведомления
app/src/main/java/org/traccar/manager/SecurityManager.kt Хранение токена сессии и подтверждение входа через BiometricPrompt
app/src/google/java/org/traccar/manager/ManagerMessagingService.kt Приём push-уведомлений Firebase (в том числе payload с eventId)
app/src/google/java/org/traccar/manager/GoogleMainApplication.kt Инициализация Firebase для flavor google
app/src/main/res/layout/ Всего два макета: activity_main.xml и fragment_start.xml
app/src/main/res/xml/network_security_config.xml Разрешён нешифрованный HTTP-трафик (для серверов без TLS)
.github/ Только CONTRIBUTING, FUNDING и шаблоны issue. CI-workflow в репозитории нет

Собственного UI управления устройствами в приложении нет — вся функциональность приходит с сервера в виде веб-страницы.

Как собрать/запустить

./gradlew assembleRegularDebug      # сборка без сервисов Google
./gradlew assembleRegularRelease
./gradlew assembleGoogleRelease     # вариант с Firebase (push-уведомления)

Два product flavor'а: regular (по умолчанию) и google. Для google-сборки задача copyJson копирует google-services.json из внешнего каталога ../../environment/google-services/traccar-manager-android.json — этого каталога в репозитории нет, потребуется собственный файл Firebase, иначе собирать flavor regular. Unit-тестов в проекте нет.

Конфигурация

  • url (SharedPreferences, MainActivity.PREFERENCE_URL) — адрес сервера Traccar. Вводится пользователем на первом экране, может быть переустановлен из веб-интерфейса сообщением server через JS-мост. С 2022 года по умолчанию подставляется схема HTTPS.
  • Токен сессии сохраняется SecurityManager и выдаётся веб-приложению только после подтверждения биометрией.
  • Сборочные параметры: applicationId org.traccar.manager, versionCode 36, versionName 4.0, gradle.properties содержит только android.useAndroidX=true.

Секретов в репозитории нет: ключи Firebase подставляются извне при сборке.

Состояние

Рабочий, но копия устаревшая: 106 коммитов, последний — 10.02.2023 (Anton Tananaev, «Update project and version»), версия приложения 4.0 (versionCode 36). Оригинал с тех пор развивался дальше, форк не синхронизировали. Собственных коммитов владельца форка нет, поэтому дата последней своей правки отсутствует.

Что не доделано

Меток TODO/FIXME и заглушек в коде нет — это релизная версия официального приложения. Замечания по коду: используются устаревшие API (AsyncTask в StartFragment, android.app.Fragment, файлы помечены @file:Suppress("DEPRECATION")), biometric-ktx подключён alpha-версией. Применительно к форку не хватает синхронизации с upstream: копия отстаёт от оригинала более чем на три года.

S
Описание
Traccar Manager for Android
https://www.traccar.org/manager
Readme
467 KiB
Languages
Kotlin 100%