10 KiB
10 KiB
📦 Инструкция по сборке и запуску CamControl
🔧 Требования к системе
На компьютере разработчика:
- Android Studio Arctic Fox или новее
- Java 11 или выше
- Gradle 8.0+
- SDK Platform 34 или выше
- NDK (если требуется)
На устройстве для тестирования:
- Android 7.0 (API 24) или выше
- Минимум 200 МБ свободной памяти
- Камера на устройстве
- Подключение в Wi-Fi сеть
📝 Пошаговая инструкция
Шаг 1: Клонирование репозитория
cd /home/trevor/AndroidStudioProjects
git clone <repository-url>
cd camControl
Шаг 2: Синхронизация Gradle
Через Android Studio:
- Откройте проект в Android Studio
- Дождитесь автоматической синхронизации Gradle
- Если синхронизация не произошла, нажмите: File → Sync Now
Через командную строку:
./gradlew clean
./gradlew build
Шаг 3: Проверка зависимостей
# Проверить все зависимости
./gradlew dependencies
# Скачать зависимости явно
./gradlew downloadDependencies
Шаг 4: Сборка приложения
Вариант A: Через Android Studio (рекомендуется)
- Откройте проект в Android Studio
- Build → Make Project (Ctrl+F9)
- Дождитесь завершения сборки
Вариант B: Через командную строку
# Debug сборка
./gradlew assembleDebug
# Release сборка (требует подписанный ключ)
./gradlew assembleRelease
# Или напрямую
./gradlew build
Шаг 5: Установка на устройство
Вариант A: Через Android Studio
1. Подключите устройство через USB или запустите эмулятор
2. Run → Run 'app' (Shift+F10)
3. Выберите целевое устройство
4. Нажмите OK
Вариант B: Через командную строку
# Установить debug приложение
./gradlew installDebug
# Или напрямую через adb
adb install -r build/outputs/apk/debug/app-debug.apk
# Запустить приложение
adb shell am start -n com.example.camcontrol/.MainActivity
Шаг 6: Запуск и отладка
# Просмотр логов приложения
adb logcat | grep "camControl"
# Очистить кэш приложения
adb shell pm clear com.example.camcontrol
# Переустановить приложение
./gradlew installDebug --force
⚠️ Устранение проблем при сборке
Проблема: Gradle не может найти зависимости
Решение:
# Удалить кэш Gradle
rm -rf ~/.gradle
rm -rf .gradle
# Пересинхронизировать
./gradlew clean
./gradlew build --refresh-dependencies
Проблема: Конфликт версий SDK
Решение:
Отредактируйте build.gradle.kts:
android {
compileSdk = 34 // Используйте версию, установленную на вашем ПК
minSdk = 24
targetSdk = 34
}
Проблема: Приложение не устанавливается
Решение:
# Удалить старую версию приложения
adb uninstall com.example.camcontrol
# Переустановить
./gradlew installDebug
Проблема: Логи не отображаются
Решение:
# Очистить логи
adb logcat -c
# Запустить приложение
adb shell am start -n com.example.camcontrol/.MainActivity
# Просмотр всех логов
adb logcat
🎯 Проверка после установки
После успешной установки проверьте:
# Приложение установлено
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 сборка
# Создать release APK
./gradlew assembleRelease
# Или для Bundle (для Google Play)
./gradlew bundleRelease
Минификация и оптимизация
Отредактируйте build.gradle.kts:
android {
buildTypes {
release {
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
}
Подписание APK
# Создать 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 тесты
./gradlew test
Instrumented тесты (на устройстве)
./gradlew connectedAndroidTest
Запуск конкретного теста
./gradlew testDebugUnitTest --tests "*.ExampleUnitTest"
📊 Анализ приложения
Проверка размера APK
# Анализ структуры APK
./gradlew analyzeDebugBundle
# Просмотр размеров
./gradlew debugApkSize
Проверка зависимостей
# Дерево зависимостей
./gradlew dependencies
# Только для debug сборки
./gradlew dependenciesDebug
# Экспорт в файл
./gradlew dependencies > dependencies.txt
🔍 Отладка
Подключение отладчика
- В Android Studio выберите Run → Debug 'app'
- Установите точки останова в коде
- Приложение паузируется на точках останова
Профилирование
# Запустить Profiler через Android Studio
# Run → Open Profiler
# Или через командную строку
adb forward tcp:9999 tcp:9999
Просмотр файловой системы приложения
adb shell
cd /data/data/com.example.camcontrol/
# Просмотр логов приложения
cat files/app.log
# Просмотр кэша
cd cache/
ls -la
✅ Контрольный список перед публикацией
- Код протестирован на реальном устройстве
- Логирование отключено или установлено на DEBUG уровень
- Скрыты все секретные ключи и пароли
- Версия приложения обновлена
- Документация актуальна
- Разрешения в AndroidManifest.xml корректны
- Нет утечек памяти (проверено Profiler)
- Размер APK оптимален
- Подпись для release сборки создана
📚 Дополнительные ресурсы
💬 Получение помощи
Если при сборке возникают проблемы:
- Проверьте консоль Gradle (Build → Make Project)
- Посмотрите детальные логи (gradle build --info)
- Очистите кэш и пересоберите
- Проверьте версии инструментов (Preferences → SDK Manager)