233 lines
6.0 KiB
Markdown
233 lines
6.0 KiB
Markdown
# Конвертор координат GPS → APRS, Maidenhead
|
||
|
||
## Описание проекта
|
||
|
||
Приложение Android для конвертации GPS координат в различные форматы:
|
||
- Десятичные координаты (широта/долгота)
|
||
- Градусы, минуты, секунды (DMS)
|
||
- APRS формат
|
||
- Maidenhead (QTH локатор)
|
||
|
||
**Технологии:**
|
||
- Kotlin
|
||
- Jetpack Compose (Material 3)
|
||
- Android SDK 34
|
||
- Min SDK: 21
|
||
|
||
---
|
||
|
||
## Структура проекта
|
||
|
||
```
|
||
vs2/
|
||
├── app/
|
||
│ ├── src/main/
|
||
│ │ ├── java/com/example/aprs/
|
||
│ │ │ ├── MainActivity.kt # Основной экран
|
||
│ │ │ └── LocationUtils.kt # Утилиты конвертации
|
||
│ │ ├── res/
|
||
│ │ │ ├── values/
|
||
│ │ │ │ ├── strings.xml
|
||
│ │ │ │ ├── themes.xml
|
||
│ │ │ │ └── ic_launcher_background.xml
|
||
│ │ │ └── mipmap-*/ # Иконки приложения
|
||
│ │ ├── AndroidManifest.xml
|
||
│ │ └── build.gradle.kts
|
||
│ └── build/outputs/apk/debug/ # Скомпилированный APK
|
||
├── build.gradle.kts
|
||
├── gradle.properties
|
||
├── settings.gradle.kts
|
||
└── gradlew # Gradle wrapper
|
||
```
|
||
|
||
---
|
||
|
||
## Требования к серверу
|
||
|
||
### Необходимое ПО:
|
||
- **Java JDK 17** (`/usr/lib/jvm/java-17-openjdk-amd64`)
|
||
- **Git** (опционально)
|
||
- **SSH доступ** с паролем или ключом
|
||
|
||
### Проверка окружения на сервере:
|
||
```bash
|
||
java -version
|
||
# Должно показать: openjdk version "17.x.x"
|
||
```
|
||
|
||
---
|
||
|
||
## Инструкция по компиляции на сервере
|
||
|
||
### 1. Подключение к серверу
|
||
|
||
```bash
|
||
# Подключение по SSH
|
||
ssh ua1zbe@192.168.1.46
|
||
# Введите пароль: ktdbycrbq1980
|
||
```
|
||
|
||
### 2. Загрузка проекта на сервер
|
||
|
||
#### Вариант A: Через rsync (рекомендуется)
|
||
```bash
|
||
# С локальной машины
|
||
rsync -avz -e ssh /home/ua1zbe/my_aprs_project/vs2/ ua1zbe@192.168.1.46:~/my_aprs_project/vs2/
|
||
```
|
||
|
||
#### Вариант B: Через git
|
||
```bash
|
||
# На сервере
|
||
cd ~
|
||
git clone <repository-url> my_aprs_project/vs2
|
||
```
|
||
|
||
### 3. Сборка APK
|
||
|
||
```bash
|
||
# Подключение к серверу
|
||
ssh ua1zbe@192.168.1.46
|
||
|
||
# Переход в директорию проекта
|
||
cd ~/my_aprs_project/vs2
|
||
|
||
# Установка JAVA_HOME
|
||
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
|
||
|
||
# Очистка и сборка
|
||
./gradlew clean assembleDebug
|
||
|
||
# Или только сборка (быстрее)
|
||
./gradlew assembleDebug
|
||
```
|
||
|
||
### 4. Результат сборки
|
||
|
||
APK файл будет создан в:
|
||
```
|
||
/home/ua1zbe/my_aprs_project/vs2/app/build/outputs/apk/debug/app-debug.apk
|
||
```
|
||
|
||
Размер: ~12-14 MB
|
||
|
||
### 5. Проверка сборки
|
||
|
||
```bash
|
||
# Проверка существования APK
|
||
ls -lh ~/my_aprs_project/vs2/app/build/outputs/apk/debug/app-debug.apk
|
||
|
||
# Информация о сборке
|
||
./gradlew buildEnvironment
|
||
```
|
||
|
||
---
|
||
|
||
## Установка на устройство
|
||
|
||
### Вариант A: Через ADB (USB)
|
||
|
||
```bash
|
||
# Скачать APK с сервера
|
||
scp ua1zbe@192.168.1.46:~/my_aprs_project/vs2/app/build/outputs/apk/debug/app-debug.apk /home/ua1zbe/my_aprs_project/vs2/
|
||
|
||
# Установить на устройство
|
||
adb install -r /home/ua1zbe/my_aprs_project/vs2/app-debug.apk
|
||
```
|
||
|
||
### Вариант B: Прямая установка с сервера
|
||
|
||
```bash
|
||
# На сервере (если есть ADB и подключено устройство)
|
||
adb install ~/my_aprs_project/vs2/app/build/outputs/apk/debug/app-debug.apk
|
||
```
|
||
|
||
### Вариант C: Через файловый менеджер
|
||
|
||
1. Скачать APK с сервера через SFTP/SCP
|
||
2. Передать на телефон
|
||
3. Установить через файловый менеджер
|
||
|
||
---
|
||
|
||
## Полезные команды Gradle
|
||
|
||
```bash
|
||
# Очистка сборки
|
||
./gradlew clean
|
||
|
||
# Сборка debug версии
|
||
./gradlew assembleDebug
|
||
|
||
# Сборка release версии
|
||
./gradlew assembleRelease
|
||
|
||
# Запуск тестов
|
||
./gradlew test
|
||
|
||
# Проверка зависимостей
|
||
./gradlew dependencies
|
||
|
||
# Остановка Gradle daemon
|
||
./gradlew --stop
|
||
|
||
# Сборка с логом
|
||
./gradlew assembleDebug --info
|
||
```
|
||
|
||
---
|
||
|
||
## Решение проблем
|
||
|
||
### Ошибка: "Could not connect to Kotlin compile daemon"
|
||
```bash
|
||
# Остановить Gradle и попробовать снова
|
||
./gradlew --stop
|
||
./gradlew clean assembleDebug
|
||
```
|
||
|
||
### Ошибка: "minSdkVersion cannot be smaller than version 21"
|
||
```bash
|
||
# Jetpack Compose требует API 21+
|
||
# Проверить app/build.gradle.kts:
|
||
# minSdk = 21
|
||
```
|
||
|
||
### Ошибка: "resource not found" для иконок
|
||
```bash
|
||
# Проверить наличие директорий mipmap
|
||
ls app/src/main/res/mipmap-*/
|
||
|
||
# Пересоздать иконки при необходимости
|
||
```
|
||
|
||
### Ошибка: "BUILD FAILED - Manifest merger failed"
|
||
```bash
|
||
# Очистить сборку
|
||
./gradlew clean
|
||
# Проверить AndroidManifest.xml на ошибки
|
||
```
|
||
|
||
### Долгая компиляция
|
||
```bash
|
||
# Использовать daemon (по умолчанию включён)
|
||
./gradlew assembleDebug --daemon
|
||
|
||
# Или увеличить память
|
||
export GRADLE_OPTS="-Xmx2g"
|
||
```
|
||
|
||
---
|
||
|
||
## Быстрая сборка (one-liner)
|
||
|
||
```bash
|
||
ssh ua1zbe@192.168.1.46 "cd ~/my_aprs_project/vs2 && export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 && ./gradlew assembleDebug" && scp ua1zbe@192.168.1.46:~/my_aprs_project/vs2/app/build/outputs/apk/debug/app-debug.apk /home/ua1zbe/my_aprs_project/vs2/ && adb install -r /home/ua1zbe/my_aprs_project/vs2/app-debug.apk
|
||
```
|
||
|
||
---
|
||
|
||
## Контакты
|
||
|
||
Автор: UA1ZBE
|
||
Дата: Март 2026
|