HART Mobile — Техническая инфраструктура
Описание технических средств хранения исходного текста и объектного кода, а также технических средств компиляции исходного текста в объектный код.
1. Хранение исходного текста
| Параметр | Значение |
| Система контроля версий | Git 2.x |
| Сервер размещения | Gitea 1.22.6 (самостоятельно размещённый) |
| URL репозитория | git.kpc-control.ru/kaptsov/HartMobile (приватный, доступ только у правообладателя) |
| Хостинг сервера | VDS, ООО «Первый Виртуальный Дата Центр» (FirstVDS), г. Москва, Российская Федерация |
| Операционная система сервера | Ubuntu Linux 22.04 LTS |
| Протокол доступа | HTTPS (TLS 1.2/1.3, сертификат Let's Encrypt) |
| Аутентификация | Логин и пароль (регистрация отключена, доступ только у правообладателя) |
| Резервное копирование | Локальная копия на рабочей станции разработчика (macOS), синхронизируемая через Git |
Структура репозитория
HartMobile/
├── app/
│ ├── build.gradle.kts — конфигурация сборки модуля
│ ├── proguard-rules.pro — правила обфускации ProGuard/R8
│ └── src/main/
│ ├── AndroidManifest.xml — манифест приложения
│ ├── assets/dd/ — встроенные файлы описания устройств
│ ├── java/ru/kaptsov/hartmobile/
│ │ ├── protocol/ — реализация протокола HART
│ │ ├── connection/ — Bluetooth SPP и USB CP210x
│ │ ├── dd/ — парсеры Device Description
│ │ ├── license/ — система лицензирования
│ │ └── ui/ — экраны приложения (MVVM)
│ └── res/ — ресурсы (layouts, drawables, values)
├── build.gradle.kts — корневая конфигурация Gradle
├── settings.gradle.kts — настройки проекта
├── gradle/ — Gradle Wrapper
└── store/reestr_po/ — документация для реестра ПО
2. Хранение объектного кода
| Параметр | Значение |
| Формат объектного кода | APK (Android Package Kit) |
| Размещение релизных сборок | Раздел «Релизы» приватного репозитория Gitea (доступ только у правообладателя) |
| Канал распространения | RuStore (rustore.ru) |
| Подпись APK | Ключ разработчика (Java Keystore, алгоритм RSA 2048 бит) |
| Обфускация | R8/ProGuard (включена в release-сборке) |
3. Средства компиляции
Рабочая станция разработчика
| Параметр | Значение |
| Компьютер | Apple iMac |
| Операционная система | macOS Monterey 12.x |
| Местонахождение | Российская Федерация |
Среда разработки и компиляции
| Компонент | Версия | Назначение |
| Android Studio | 2024.x (Ladybug) | Интегрированная среда разработки (IDE) |
| JDK (JetBrains Runtime) | 17 | Среда исполнения Java для инструментов сборки |
| Kotlin Compiler | 1.9.x | Компилятор языка Kotlin в байт-код JVM |
| Android SDK | API 34 (compileSdk) | Набор инструментов для разработки под Android |
| Android SDK Build-Tools | 34.0.0 | Компиляция ресурсов, упаковка APK, подпись |
| Gradle | 8.x (через Gradle Wrapper) | Система автоматизации сборки |
| Android Gradle Plugin | 8.2.x | Плагин Gradle для сборки Android-приложений |
| R8 (ProGuard) | встроен в AGP | Минификация, обфускация и оптимизация кода |
| AAPT2 | встроен в Build-Tools | Компиляция ресурсов Android (XML → бинарный формат) |
| D8/Dex Compiler | встроен в AGP | Конвертация байт-кода JVM в Dalvik Executable (DEX) |
Процесс сборки
# Установка переменных окружения
export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home"
# Компиляция debug-версии
./gradlew :app:assembleDebug
# Результат: app/build/outputs/apk/debug/app-debug.apk
# Компиляция release-версии (с подписью и обфускацией)
./gradlew :app:assembleRelease
# Результат: app/build/outputs/apk/release/app-release.apk
Этапы компиляции (автоматизированы Gradle)
- Компиляция Kotlin → байт-код JVM (Kotlin Compiler)
- Компиляция ресурсов — XML layouts, drawables, strings → бинарный формат (AAPT2)
- Конвертация в DEX — байт-код JVM → Dalvik Executable для Android Runtime (D8)
- Минификация и обфускация — удаление неиспользуемого кода, переименование классов (R8, только release)
- Упаковка APK — объединение DEX, ресурсов, нативных библиотек и манифеста
- Подпись APK — цифровая подпись ключом разработчика (apksigner, RSA 2048)
- Выравнивание — оптимизация для установки на устройство (zipalign)
4. Зависимости (сторонние библиотеки)
Все зависимости загружаются автоматически системой Gradle из публичных репозиториев:
| Репозиторий | URL | Библиотеки |
| Google Maven | https://dl.google.com/dl/android/maven2/ | AndroidX, Material Design |
| Maven Central | https://repo.maven.apache.org/maven2/ | Kotlin, Coroutines |
| JitPack | https://jitpack.io/ | usb-serial-for-android |
Полный перечень компонентов с версиями и лицензиями приведён в разделе «Компоненты» документации.