# {{PROJECT_NAME}} Android Benchmark App

This is an auto-generated Android app for running Rust benchmarks and local native profiling captures.

## Building

```bash
# Build debug APK
./gradlew assembleDebug

# Build release APK (recommended for BrowserStack uploads)
./gradlew assembleRelease
```

## Benchmark execution

```bash
# Build with mobench (use --release for smaller APK uploads)
cargo mobench build --target android --release

# Run locally
cargo mobench run --target android --function my_benchmark

# Run on BrowserStack
cargo mobench run --target android --function my_benchmark \
  --devices "Google Pixel 7-13.0" --release
```

## Local native profiling

```bash
cargo mobench profile run \
  --target android \
  --provider local \
  --backend android-native \
  --function my_benchmark
```

## Running Benchmarks

The app reads benchmark configuration from:
1. Intent extras (`bench_function`, `bench_iterations`, `bench_warmup`)
2. `assets/bench_spec.json`
3. Default values in code

## Benchmark report capture

The app emits benchmark results for both local automation and BrowserStack:
- Runs the benchmark in an isolated `:mobench_worker` process and shows the worker result on screen
- Outputs JSON with `BENCH_JSON` marker to logcat
- Includes `phases` when the benchmark uses `profile_phase(...)`
- Is marked `profileable` so local native profilers can attach to it

## Generated by

[mobench](https://crates.io/crates/mobench) - Mobile benchmarking SDK for Rust
