This repository hosts EtchDroid, an Android application for writing OS images to USB drives. This file provides guidance for Codex agents working in the project.
app/– Android app modulesrc/main/– Kotlin sources and Compose UIsrc/foss/– F-Droid flavor overridessrc/gplay/– Google Play flavor overrides (telemetry, in-app review)src/test/– unit tests
appium-tests/– end-to-end tests written in Python with Appium. Some tests require QEMU; skip those.misc/– helper scripts andmock-google-services.jsonused for GPlay buildsfastlane/– Play Store text and images- Top-level
build.gradle.ktsandsettings.gradle.ktsdefine the Gradle build.
- The first build and test run may take up to 10 minutes. Allow enough time.
- It's best to run the build as a background process by daemonizing it and make it log to a file, so you can periodically check whether it's done or not, and so you don't accidentally risk interrupting it when checking.
- Run unit tests with Gradle for the appropriate flavor.
- You should not use
--scanwhen invoking Gradle, since that would attempt to contact scans.gradle.com.
- Ensure
ETCHDROID_ENABLE_SENTRYis unset or empty. - Run
./gradlew assembleFossDebug. - Run
./gradlew testFossDebugUnitTest.
- Set
ETCHDROID_ENABLE_SENTRY=true. - Copy the mock Google services file before running Gradle:
cp misc/mock-google-services.json app/google-services.json
- Run
./gradlew assembleGplayDebug. - Run
./gradlew testGplayDebugUnitTest.
- Do not run the QEMU-based tests in
appium-testsbecause the environment lacks KVM support.
- You may run
./gradlew lintbefore submitting changes.