# 📦 Инструкция по сборке и запуску 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 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)