62 строки
7.0 KiB
Markdown
62 строки
7.0 KiB
Markdown
# traccar-manager-android (форк)
|
|
|
|
Android-приложение Traccar Manager — тонкий клиент-обёртка над веб-интерфейсом сервера Traccar. Приложение спрашивает адрес сервера, проверяет его через `GET /api/server` и дальше показывает штатный веб-интерфейс в WebView, добавляя нативные возможности: push-уведомления через Firebase, вход по биометрии, скачивание отчётов, обработку внешних ссылок и передачу координат телефона в веб-приложение.
|
|
|
|
Форк сделан как резервная копия официального репозитория [traccar/traccar-manager-android](https://github.com/traccar/traccar-manager-android) (автор — Anton Tananaev) в самохостовом Gitea: приложение используется вместе со своим сервером Traccar, и независимая копия исходников позволяет пересобрать APK без доступа к GitHub.
|
|
|
|
Документация оригинала (ссылка на Google Play, команда, лицензия Apache 2.0) сохранена в [README.upstream.md](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 управления устройствами в приложении нет — вся функциональность приходит с сервера в виде веб-страницы.
|
|
|
|
## Как собрать/запустить
|
|
|
|
```bash
|
|
./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: копия отстаёт от оригинала более чем на три года.
|