A lightweight, clean, and CLI-first Android Jetpack Compose template. Designed for developers who prefer VS Code, Neovim, or terminal workflows over heavy IDEs.
This template is "Open Source First", optimized for F-Droid / IzzyOnDroid standards and maximum build transparency.
- Terminal Centric: no dependency on Android Studio. Built to be run with
gradlewandadb. - Privacy & Transparency: no proprietary Google binaries, no obfuscated encryption blocks, fully compatible with IzzyOnDroid and F-Droid audit standards (
dependenciesInfois always disabled). - Minimalist: only essential dependencies included.
- Modern UI stack: Jetpack Compose with Material3, light and dark theme plus dynamic color on Android 12+.
- Broad compatibility: Android 8.0 (API 26) up to the latest (API 36).
- Production ready: pre-configured R8 for minification and shrinking in release builds.
- Clean architecture: zero boilerplate business logic, ready for your code immediately.
- Offline capable: dependency versions are locked in the Gradle version catalog for reproducible builds.
- Store ready: GitHub Actions CI builds the debug APK and runs unit tests on every push and pull request.
- JDK 21 or higher.
- Android SDK Command-line Tools (compileSdk 36 / targetSdk 36).
- Git.
Clone the repository and rename the package as needed:
git clone https://github.com/ahmedthebest31/Android-Compose-CLI-Template.git my-app
cd my-appOpen gradle.properties and edit the values:
APP_ID=com.yourcompany.project
APP_NAME=Your App Name
VERSION_CODE=1
VERSION_NAME=1.0.0The app_name shown on the launcher is injected from APP_NAME at build time.
No IDE required. Use the wrapper directly.
Debug build:
./gradlew assembleDebugRelease build (minified and signed, see Signing below):
./gradlew assembleRelease./gradlew testadb install -r app/build/outputs/apk/debug/app-debug.apk./gradlew clean- Copy the example file:
cp signing.properties.example signing.properties - Open
signing.propertiesand add your real keystore details (path, passwords, alias). - The build script automatically detects the file and signs the release APK.
Notes:
signing.propertiesis strictly ignored by Git to protect your secrets.- Without it, the release build produces an unsigned APK (the build still succeeds and prints a note).
app/src/main/java/com/ahmedsamy/app: main Kotlin source code (Hello World sample).app/src/main/java/com/ahmedsamy/app/ui/theme: Material3 theme, color and typography definitions.app/src/main/java/com/ahmedsamy/app/util: small pure-Kotlin utilities with unit tests.app/src/test/java/com/ahmedsamy/app: JVM unit tests (JUnit 4).gradle/libs.versions.toml: centralized dependency management (version catalog)..github/workflows/build.yml: CI pipeline for debug APK and unit tests.
All dependency versions are locked in gradle/libs.versions.toml. After the first online build (which populates the Gradle cache), subsequent builds can run fully offline:
./gradlew --offline assembleDebug
./gradlew --offline testReleased under the MIT License.

