4.9 KiB
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
# 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
- Source code:
-
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)
- Project-level:
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:
- The project uses Gradle Version Catalog (
libs.versions.toml) for dependency management - All build configuration uses Kotlin DSL (
.ktsfiles) - The project is set up for both unit tests (JUnit) and instrumented tests (Espresso)
- 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