376 lines
10 KiB
Markdown
376 lines
10 KiB
Markdown
# 📦 Инструкция по сборке и запуску CamControl
|
||
|
||
## 🔧 Требования к системе
|
||
|
||
### На компьютере разработчика:
|
||
- Android Studio Arctic Fox или новее
|
||
- Java 11 или выше
|
||
- Gradle 8.0+
|
||
- SDK Platform 34 или выше
|
||
- NDK (если требуется)
|
||
|
||
### На устройстве для тестирования:
|
||
- Android 7.0 (API 24) или выше
|
||
- Минимум 200 МБ свободной памяти
|
||
- Камера на устройстве
|
||
- Подключение в Wi-Fi сеть
|
||
|
||
## 📝 Пошаговая инструкция
|
||
|
||
### Шаг 1: Клонирование репозитория
|
||
|
||
```bash
|
||
cd /home/trevor/AndroidStudioProjects
|
||
git clone <repository-url>
|
||
cd camControl
|
||
```
|
||
|
||
### Шаг 2: Синхронизация Gradle
|
||
|
||
**Через Android Studio:**
|
||
- Откройте проект в Android Studio
|
||
- Дождитесь автоматической синхронизации Gradle
|
||
- Если синхронизация не произошла, нажмите: File → Sync Now
|
||
|
||
**Через командную строку:**
|
||
```bash
|
||
./gradlew clean
|
||
./gradlew build
|
||
```
|
||
|
||
### Шаг 3: Проверка зависимостей
|
||
|
||
```bash
|
||
# Проверить все зависимости
|
||
./gradlew dependencies
|
||
|
||
# Скачать зависимости явно
|
||
./gradlew downloadDependencies
|
||
```
|
||
|
||
### Шаг 4: Сборка приложения
|
||
|
||
#### Вариант A: Через Android Studio (рекомендуется)
|
||
|
||
1. Откройте проект в Android Studio
|
||
2. Build → Make Project (Ctrl+F9)
|
||
3. Дождитесь завершения сборки
|
||
|
||
#### Вариант B: Через командную строку
|
||
|
||
```bash
|
||
# Debug сборка
|
||
./gradlew assembleDebug
|
||
|
||
# Release сборка (требует подписанный ключ)
|
||
./gradlew assembleRelease
|
||
|
||
# Или напрямую
|
||
./gradlew build
|
||
```
|
||
|
||
### Шаг 5: Установка на устройство
|
||
|
||
#### Вариант A: Через Android Studio
|
||
|
||
```
|
||
1. Подключите устройство через USB или запустите эмулятор
|
||
2. Run → Run 'app' (Shift+F10)
|
||
3. Выберите целевое устройство
|
||
4. Нажмите OK
|
||
```
|
||
|
||
#### Вариант B: Через командную строку
|
||
|
||
```bash
|
||
# Установить debug приложение
|
||
./gradlew installDebug
|
||
|
||
# Или напрямую через adb
|
||
adb install -r build/outputs/apk/debug/app-debug.apk
|
||
|
||
# Запустить приложение
|
||
adb shell am start -n com.example.camcontrol/.MainActivity
|
||
```
|
||
|
||
### Шаг 6: Запуск и отладка
|
||
|
||
```bash
|
||
# Просмотр логов приложения
|
||
adb logcat | grep "camControl"
|
||
|
||
# Очистить кэш приложения
|
||
adb shell pm clear com.example.camcontrol
|
||
|
||
# Переустановить приложение
|
||
./gradlew installDebug --force
|
||
```
|
||
|
||
## ⚠️ Устранение проблем при сборке
|
||
|
||
### Проблема: Gradle не может найти зависимости
|
||
|
||
**Решение:**
|
||
```bash
|
||
# Удалить кэш Gradle
|
||
rm -rf ~/.gradle
|
||
rm -rf .gradle
|
||
|
||
# Пересинхронизировать
|
||
./gradlew clean
|
||
./gradlew build --refresh-dependencies
|
||
```
|
||
|
||
### Проблема: Конфликт версий SDK
|
||
|
||
**Решение:**
|
||
Отредактируйте `build.gradle.kts`:
|
||
```kotlin
|
||
android {
|
||
compileSdk = 34 // Используйте версию, установленную на вашем ПК
|
||
minSdk = 24
|
||
targetSdk = 34
|
||
}
|
||
```
|
||
|
||
### Проблема: Приложение не устанавливается
|
||
|
||
**Решение:**
|
||
```bash
|
||
# Удалить старую версию приложения
|
||
adb uninstall com.example.camcontrol
|
||
|
||
# Переустановить
|
||
./gradlew installDebug
|
||
```
|
||
|
||
### Проблема: Логи не отображаются
|
||
|
||
**Решение:**
|
||
```bash
|
||
# Очистить логи
|
||
adb logcat -c
|
||
|
||
# Запустить приложение
|
||
adb shell am start -n com.example.camcontrol/.MainActivity
|
||
|
||
# Просмотр всех логов
|
||
adb logcat
|
||
```
|
||
|
||
## 🎯 Проверка после установки
|
||
|
||
После успешной установки проверьте:
|
||
|
||
```bash
|
||
# Приложение установлено
|
||
adb shell pm list packages | grep camcontrol
|
||
|
||
# Разрешения выданы
|
||
adb shell pm list permissions -u | grep CAMERA
|
||
|
||
# Приложение запущено
|
||
adb shell ps | grep camcontrol
|
||
```
|
||
|
||
## 📋 Файлы проекта
|
||
|
||
### Основная структура
|
||
|
||
```
|
||
camControl/
|
||
├── .gradle/ # Gradle кэш
|
||
├── .idea/ # Android Studio конфигурация
|
||
├── app/
|
||
│ ├── .gradle/
|
||
│ ├── build/ # Скомпилированные файлы
|
||
│ │ └── outputs/
|
||
│ │ └── apk/
|
||
│ │ └── debug/
|
||
│ │ └── app-debug.apk # Финальный APK
|
||
│ ├── src/
|
||
│ │ ├── androidTest/
|
||
│ │ ├── main/
|
||
│ │ │ ├── AndroidManifest.xml
|
||
│ │ │ ├── java/com/example/camcontrol/
|
||
│ │ │ │ ├── MainActivity.kt
|
||
│ │ │ │ ├── StreamViewModel.kt
|
||
│ │ │ │ ├── WebSocketManager.kt
|
||
│ │ │ │ ├── VideoStreamingManager.kt
|
||
│ │ │ │ ├── CameraManager.kt
|
||
│ │ │ │ └── Models.kt
|
||
│ │ │ └── res/
|
||
│ │ └── test/
|
||
│ ├── build.gradle.kts
|
||
│ └── proguard-rules.pro
|
||
├── gradle/
|
||
│ ├── libs.versions.toml # Версии зависимостей
|
||
│ └── wrapper/
|
||
├── build.gradle.kts # Основной build файл
|
||
├── settings.gradle.kts
|
||
├── local.properties # Локальные настройки
|
||
├── README.md # Документация
|
||
├── SETUP_GUIDE.md
|
||
├── INTEGRATION.md
|
||
└── COMPLETION_SUMMARY.md
|
||
```
|
||
|
||
## 🚀 Оптимизация для производства
|
||
|
||
### Release сборка
|
||
|
||
```bash
|
||
# Создать release APK
|
||
./gradlew assembleRelease
|
||
|
||
# Или для Bundle (для Google Play)
|
||
./gradlew bundleRelease
|
||
```
|
||
|
||
### Минификация и оптимизация
|
||
|
||
Отредактируйте `build.gradle.kts`:
|
||
|
||
```kotlin
|
||
android {
|
||
buildTypes {
|
||
release {
|
||
isMinifyEnabled = true
|
||
isShrinkResources = true
|
||
proguardFiles(
|
||
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||
"proguard-rules.pro"
|
||
)
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
### Подписание APK
|
||
|
||
```bash
|
||
# Создать keystore (один раз)
|
||
keytool -genkey -v -keystore my-release-key.jks \
|
||
-keyalg RSA -keysize 2048 -validity 10000 \
|
||
-alias my-key-alias
|
||
|
||
# Подписать APK
|
||
jarsigner -verbose -sigalg SHA256withRSA \
|
||
-digestalg SHA-256 \
|
||
-keystore my-release-key.jks \
|
||
app/build/outputs/apk/release/app-release-unsigned.apk \
|
||
my-key-alias
|
||
|
||
# Выровнять APK
|
||
zipalign -v 4 \
|
||
app/build/outputs/apk/release/app-release-unsigned.apk \
|
||
app-release.apk
|
||
```
|
||
|
||
## 🧪 Тестирование
|
||
|
||
### Unit тесты
|
||
|
||
```bash
|
||
./gradlew test
|
||
```
|
||
|
||
### Instrumented тесты (на устройстве)
|
||
|
||
```bash
|
||
./gradlew connectedAndroidTest
|
||
```
|
||
|
||
### Запуск конкретного теста
|
||
|
||
```bash
|
||
./gradlew testDebugUnitTest --tests "*.ExampleUnitTest"
|
||
```
|
||
|
||
## 📊 Анализ приложения
|
||
|
||
### Проверка размера APK
|
||
|
||
```bash
|
||
# Анализ структуры APK
|
||
./gradlew analyzeDebugBundle
|
||
|
||
# Просмотр размеров
|
||
./gradlew debugApkSize
|
||
```
|
||
|
||
### Проверка зависимостей
|
||
|
||
```bash
|
||
# Дерево зависимостей
|
||
./gradlew dependencies
|
||
|
||
# Только для debug сборки
|
||
./gradlew dependenciesDebug
|
||
|
||
# Экспорт в файл
|
||
./gradlew dependencies > dependencies.txt
|
||
```
|
||
|
||
## 🔍 Отладка
|
||
|
||
### Подключение отладчика
|
||
|
||
1. В Android Studio выберите Run → Debug 'app'
|
||
2. Установите точки останова в коде
|
||
3. Приложение паузируется на точках останова
|
||
|
||
### Профилирование
|
||
|
||
```bash
|
||
# Запустить Profiler через Android Studio
|
||
# Run → Open Profiler
|
||
|
||
# Или через командную строку
|
||
adb forward tcp:9999 tcp:9999
|
||
```
|
||
|
||
### Просмотр файловой системы приложения
|
||
|
||
```bash
|
||
adb shell
|
||
cd /data/data/com.example.camcontrol/
|
||
|
||
# Просмотр логов приложения
|
||
cat files/app.log
|
||
|
||
# Просмотр кэша
|
||
cd cache/
|
||
ls -la
|
||
```
|
||
|
||
## ✅ Контрольный список перед публикацией
|
||
|
||
- [ ] Код протестирован на реальном устройстве
|
||
- [ ] Логирование отключено или установлено на DEBUG уровень
|
||
- [ ] Скрыты все секретные ключи и пароли
|
||
- [ ] Версия приложения обновлена
|
||
- [ ] Документация актуальна
|
||
- [ ] Разрешения в AndroidManifest.xml корректны
|
||
- [ ] Нет утечек памяти (проверено Profiler)
|
||
- [ ] Размер APK оптимален
|
||
- [ ] Подпись для release сборки создана
|
||
|
||
## 📚 Дополнительные ресурсы
|
||
|
||
- [Android Studio Documentation](https://developer.android.com/studio)
|
||
- [Gradle Documentation](https://gradle.org/docs)
|
||
- [Kotlin Documentation](https://kotlinlang.org/docs)
|
||
- [Jetpack Compose](https://developer.android.com/jetpack/compose)
|
||
|
||
## 💬 Получение помощи
|
||
|
||
Если при сборке возникают проблемы:
|
||
|
||
1. Проверьте консоль Gradle (Build → Make Project)
|
||
2. Посмотрите детальные логи (gradle build --info)
|
||
3. Очистите кэш и пересоберите
|
||
4. Проверьте версии инструментов (Preferences → SDK Manager)
|
||
|
||
|