7.0 KiB
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-ktx1.9.0,preference-ktx1.2.0,lifecycle-viewmodel-ktx2.5.1,localbroadcastmanager1.1.0,biometric-ktx1.2.0-alpha05,multidex2.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: копия отстаёт от оригинала более чем на три года.