From 9f1e3c80435b8d24d04702f60eaa5cfee60d9b3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B8=D0=BA=D1=82=D0=BE=D1=80?= Date: Thu, 20 Aug 2026 04:18:35 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20=D0=BF=D0=BE=D0=B4=D1=80=D0=BE=D0=B1?= =?UTF-8?q?=D0=BD=D1=8B=D0=B9=20README=20(=D1=80=D0=B0=D0=B7=D0=B1=D0=BE?= =?UTF-8?q?=D1=80=20=D0=BF=D1=80=D0=BE=D0=B5=D0=BA=D1=82=D0=B0=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B8=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BD=D0=BE=D1=81=D0=B5?= =?UTF-8?q?=20=D0=B2=20Gitea)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Старый README сохранён как README.upstream.md. --- README.md | 68 ++++++++++++++++++++++++++++++++++------------ README.upstream.md | 27 ++++++++++++++++++ 2 files changed, 78 insertions(+), 17 deletions(-) create mode 100644 README.upstream.md diff --git a/README.md b/README.md index f3c0dac..a975996 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,61 @@ -# [Traccar Manager for Android](https://www.traccar.org/manager) +# traccar-manager-android (форк) -[![Get it on Google Play](http://www.tananaev.com/badges/google-play.svg)](https://play.google.com/store/apps/details?id=org.traccar.manager) +Android-приложение Traccar Manager — тонкий клиент-обёртка над веб-интерфейсом сервера Traccar. Приложение спрашивает адрес сервера, проверяет его через `GET /api/server` и дальше показывает штатный веб-интерфейс в WebView, добавляя нативные возможности: push-уведомления через Firebase, вход по биометрии, скачивание отчётов, обработку внешних ссылок и передачу координат телефона в веб-приложение. -## Overview +Форк сделан как резервная копия официального репозитория [traccar/traccar-manager-android](https://github.com/traccar/traccar-manager-android) (автор — Anton Tananaev) в самохостовом Gitea: приложение используется вместе со своим сервером Traccar, и независимая копия исходников позволяет пересобрать APK без доступа к GitHub. -Traccar Manager is a mobile application to manage GPS tracking devices. It requires a Traccar server instance to work. +Документация оригинала (ссылка на Google Play, команда, лицензия Apache 2.0) сохранена в [README.upstream.md](README.upstream.md). -## Team +## Отличия от оригинала -- Anton Tananaev ([anton@traccar.org](mailto:anton@traccar.org)) +Изменений нет. Все 106 коммитов принадлежат авторам оригинала (102 — Anton Tananaev, 4 — внешние контрибьюторы). Собственных правок владельца форка в истории нет. Форк взят как резервная копия. -## License +## Стек - Apache License, Version 2.0 +- 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`) - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at +## Структура - http://www.apache.org/licenses/LICENSE-2.0 +| Путь | Назначение | +|---|---| +| `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 в репозитории нет | - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +Собственного 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: копия отстаёт от оригинала более чем на три года. diff --git a/README.upstream.md b/README.upstream.md new file mode 100644 index 0000000..f3c0dac --- /dev/null +++ b/README.upstream.md @@ -0,0 +1,27 @@ +# [Traccar Manager for Android](https://www.traccar.org/manager) + +[![Get it on Google Play](http://www.tananaev.com/badges/google-play.svg)](https://play.google.com/store/apps/details?id=org.traccar.manager) + +## Overview + +Traccar Manager is a mobile application to manage GPS tracking devices. It requires a Traccar server instance to work. + +## Team + +- Anton Tananaev ([anton@traccar.org](mailto:anton@traccar.org)) + +## License + + Apache License, Version 2.0 + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License.