Files

167 lines
4.9 KiB
Markdown
Raw Permalink Normal View History

2025-06-13 16:58:23 -04:00
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Project Overview
This is an Android application project using Gradle with Kotlin DSL. The project uses modern Android development practices with AndroidX libraries and targets Android 12+ (minSdk 32).
## Build Commands
```bash
# Clean build artifacts
./gradlew clean
# Build debug APK
./gradlew assembleDebug
# Build release APK
./gradlew assembleRelease
# Run unit tests
./gradlew test
# Run instrumented tests (requires connected device/emulator)
./gradlew connectedAndroidTest
# Run all tests
./gradlew test connectedAndroidTest
# Check for lint issues
./gradlew lint
# Install debug APK on connected device
./gradlew installDebug
# Run a specific test class
./gradlew test --tests "com.mattintech.androidtestapp.ExampleUnitTest"
# Run tests with additional output
./gradlew test --info
```
## Project Structure
- **App Module**: `app/` - Main application module
- Source code: `app/src/main/java/com/mattintech/androidtestapp/`
- Unit tests: `app/src/test/java/com/mattintech/androidtestapp/`
- Instrumented tests: `app/src/androidTest/java/com/mattintech/androidtestapp/`
- Resources: `app/src/main/res/`
- Manifest: `app/src/main/AndroidManifest.xml`
- **Gradle Configuration**:
- Project-level: `build.gradle.kts`
- App-level: `app/build.gradle.kts`
- Version catalog: `gradle/libs.versions.toml`
- Gradle wrapper: `gradle/wrapper/` (Gradle 8.11.1)
## Key Configuration
- **Package name**: `com.mattintech.androidtestapp`
- **Application ID**: `com.mattintech.androidtestapp`
- **Target SDK**: 35 (Android 15)
- **Min SDK**: 32 (Android 12)
- **Compile SDK**: 35
- **Test runner**: `androidx.test.runner.AndroidJUnitRunner`
## Development Notes
This is currently a minimal Android project template. When developing:
1. The project uses Gradle Version Catalog (`libs.versions.toml`) for dependency management
2. All build configuration uses Kotlin DSL (`.kts` files)
3. The project is set up for both unit tests (JUnit) and instrumented tests (Espresso)
4. No custom lint rules are configured - default Android lint rules apply
## App Features
This is a demo app for testing device stress scenarios with three main features:
### 1. Battery Draining Feature
Tests battery consumption through various hardware components:
**User-configurable options:**
- Test duration (minutes/hours)
- CPU intensive operations (mathematical calculations, loops)
- Screen (maximum brightness, prevent sleep)
- Flashlight (continuous or strobe)
- GPS (high accuracy location updates)
- BLE scanning (continuous discovery)
- WiFi scanning
- Network activity (continuous data transfers)
- Sensors (accelerometer, gyroscope, magnetometer - continuous reading)
- Camera (preview without recording)
- Audio (silent playback to keep audio subsystem active)
- Vibration (continuous patterns)
**Presets:**
- "Maximum Drain" - All features enabled
- "CPU & GPU Focus" - CPU calculations + screen brightness
- "Radio Focus" - GPS + BLE + WiFi scanning
- "Sensor Focus" - All sensors + vibration
### 2. Bad Behavior Feature
Intentionally causes app crashes and ANRs for testing:
**Crash types (user-selectable):**
- Division by zero
- Null pointer exception
- Out of memory error
- Stack overflow
- Array index out of bounds
**ANR triggers (user-selectable):**
- UI thread blocking (long-running operation on main thread)
- Broadcast receiver timeout
- Service timeout
**Settings:**
- Frequency: Manual trigger or random intervals (configurable)
- Auto-restart: App automatically restarts after crash
### 3. Downloader Feature
Schedules and executes file downloads:
**User-configurable options:**
- Download URL (with default test URLs)
- File size options (1MB, 10MB, 100MB, custom)
- Schedule type:
- One-time download
- Repeat every X minutes/hours
- Specific times of day
- Network preference (WiFi only, cellular only, any)
- Storage behavior (save or discard after download)
- Background downloads (continue when app in background)
- Concurrent downloads (1-10 simultaneous)
**UI shows:**
- Download progress
- Download history
- Total data downloaded
## Architecture
- **MainActivity**: Launch screen with buttons to three feature activities
- **BatteryDrainActivity**: Configure and run battery drain tests
- **BadBehaviorActivity**: Configure and trigger crashes/ANRs
- **DownloaderActivity**: Configure and manage downloads
- **Services**: Background services for battery drain and downloads
- **Permissions**: Auto-request all required permissions on app launch
## Required Permissions
The app will need these permissions (auto-requested on launch):
- CAMERA
- ACCESS_FINE_LOCATION
- ACCESS_COARSE_LOCATION
- BLUETOOTH_SCAN
- BLUETOOTH_CONNECT
- FLASHLIGHT
- VIBRATE
- INTERNET
- ACCESS_NETWORK_STATE
- ACCESS_WIFI_STATE
- WAKE_LOCK
- FOREGROUND_SERVICE
- WRITE_EXTERNAL_STORAGE (for downloads)
- HIGH_SAMPLING_RATE_SENSORS