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 Studio2024.x (Ladybug)Интегрированная среда разработки (IDE)
JDK (JetBrains Runtime)17Среда исполнения Java для инструментов сборки
Kotlin Compiler1.9.xКомпилятор языка Kotlin в байт-код JVM
Android SDKAPI 34 (compileSdk)Набор инструментов для разработки под Android
Android SDK Build-Tools34.0.0Компиляция ресурсов, упаковка APK, подпись
Gradle8.x (через Gradle Wrapper)Система автоматизации сборки
Android Gradle Plugin8.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)

  1. Компиляция Kotlin → байт-код JVM (Kotlin Compiler)
  2. Компиляция ресурсов — XML layouts, drawables, strings → бинарный формат (AAPT2)
  3. Конвертация в DEX — байт-код JVM → Dalvik Executable для Android Runtime (D8)
  4. Минификация и обфускация — удаление неиспользуемого кода, переименование классов (R8, только release)
  5. Упаковка APK — объединение DEX, ресурсов, нативных библиотек и манифеста
  6. Подпись APK — цифровая подпись ключом разработчика (apksigner, RSA 2048)
  7. Выравнивание — оптимизация для установки на устройство (zipalign)

4. Зависимости (сторонние библиотеки)

Все зависимости загружаются автоматически системой Gradle из публичных репозиториев:

РепозиторийURLБиблиотеки
Google Mavenhttps://dl.google.com/dl/android/maven2/AndroidX, Material Design
Maven Centralhttps://repo.maven.apache.org/maven2/Kotlin, Coroutines
JitPackhttps://jitpack.io/usb-serial-for-android

Полный перечень компонентов с версиями и лицензиями приведён в разделе «Компоненты» документации.