{"id":51544985,"url":"https://github.com/maheshtechnicals/android-project-generator","last_synced_at":"2026-07-09T17:01:54.849Z","repository":{"id":364273666,"uuid":"1267138812","full_name":"MaheshTechnicals/android-project-generator","owner":"MaheshTechnicals","description":"Generate Android Kotlin + Jetpack Compose projects from your terminal — no Android Studio needed. Ideal for AI code editors like Cursor and VS Code. Auto-fetches latest AGP, Kotlin, Gradle, and Compose BOM. Includes Gradle catalog, CI/CD pipelines, tests, Material 3 theme, and adaptive icons.","archived":false,"fork":false,"pushed_at":"2026-06-12T11:22:37.000Z","size":43,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-12T12:06:15.082Z","etag":null,"topics":["android","android-development","bash","ci-cd","cursor","gradle","jetpack-compose","kotlin","material3","project-generator","scaffold","template"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MaheshTechnicals.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"MaheshTechnicals"}},"created_at":"2026-06-12T08:58:22.000Z","updated_at":"2026-06-12T11:22:40.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/MaheshTechnicals/android-project-generator","commit_stats":null,"previous_names":["maheshtechnicals/android-project-generator"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/MaheshTechnicals/android-project-generator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaheshTechnicals%2Fandroid-project-generator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaheshTechnicals%2Fandroid-project-generator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaheshTechnicals%2Fandroid-project-generator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaheshTechnicals%2Fandroid-project-generator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MaheshTechnicals","download_url":"https://codeload.github.com/MaheshTechnicals/android-project-generator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MaheshTechnicals%2Fandroid-project-generator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35306717,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-09T02:00:07.329Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","android-development","bash","ci-cd","cursor","gradle","jetpack-compose","kotlin","material3","project-generator","scaffold","template"],"created_at":"2026-07-09T17:01:53.747Z","updated_at":"2026-07-09T17:01:54.821Z","avatar_url":"https://github.com/MaheshTechnicals.png","language":"Shell","funding_links":["https://github.com/sponsors/MaheshTechnicals"],"categories":[],"sub_categories":[],"readme":"# Android Project Generator 🚀\n\n**Create a ready-to-code Android Hello World app from your terminal — no Android Studio required.**\n\n[![GitHub release](https://img.shields.io/github/v/release/MaheshTechnicals/android-project-generator?style=flat-square)](https://github.com/MaheshTechnicals/android-project-generator/releases)\n[![License](https://img.shields.io/github/license/MaheshTechnicals/android-project-generator?style=flat-square)](LICENSE)\n[![Platform](https://img.shields.io/badge/platform-linux-blue?style=flat-square)]()\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen?style=flat-square)](CONTRIBUTING.md)\n\n---\n\n## 📖 Overview\n\n### Why this script exists\n\nAI code editors like Cursor and VS Code are very popular now. When you want to start a new Android project, you usually have to:\n\n1. Open **Android Studio** (a heavy app that needs installation)\n2. Click through menus to create a new project\n3. Wait for Gradle sync\n4. Then finally start working on your code\n\nBut many developers just want a **simple Hello World app with a proper file structure** so they can open it in their AI editor and start coding right away.\n\nThis script solves that problem. It creates a complete Android Hello World application with all the right files — no Android Studio needed. You just run one command, answer a few simple questions, and you get a ready-to-code project. Open the folder in Cursor, VS Code, or any editor and start building your app.\n\n### What it does\n\n- Creates a **Kotlin + Jetpack Compose** project with all required files\n- Auto-generates **launcher icons** (with or without ImageMagick)\n- Sets up **GitHub Actions and GitLab CI/CD workflows** — so even if your laptop is not powerful enough to build Android apps, you can push your code and let GitHub/GitLab build it for you\n- Fetches the **latest stable versions** of AGP, Kotlin, Gradle, and Compose BOM at runtime\n- Creates unit tests, UI tests, and everything needed for a professional project structure\n\n### Who it's for\n\n- **Developers using AI code editors** — quickly generate a project and start working with AI assistance\n- **Anyone with a low-end laptop** — generate the project locally, build remotely via GitHub/GitLab CI\n- **Android phone users** — install Debian/Ubuntu (XFCE4 desktop) via Termux, set up VS Code or Cursor, run this script, and create Android projects right from your phone. Use GitHub/GitLab workflows to build\n- **Anyone who wants to skip Android Studio setup** — just the terminal, Java, and a few seconds\n\n\u003e Only a terminal, Java 21+, and a few seconds are needed.\n\n---\n\n## 🧰 Requirements\n\nThe script requires the following dependencies installed on your Linux system:\n\n```bash\nsudo apt update \u0026\u0026 sudo apt install -y openjdk-21-jdk git curl python3 imagemagick\n```\n\n| Dependency       | Purpose                              | Required |\n|------------------|--------------------------------------|----------|\n| **Java 21+**     | Compile Android bytecode             | ✅ Yes   |\n| **Git**          | Initialize repository                | ✅ Yes   |\n| **curl**         | Fetch latest SDK tool versions       | ✅ Yes   |\n| **Python 3**     | Parse Maven metadata XML             | ✅ Yes   |\n| **ImageMagick**  | Generate launcher \u0026 Play Store icons | ⬜ No*   |\n\n\u003e \\*ImageMagick is optional — without it, the script writes minimal placeholder PNGs so the build still succeeds.\n\n---\n\n## 🚀 Quick Start\n\n```bash\n# 1. Clone the generator\ngit clone https://github.com/MaheshTechnicals/android-project-generator.git\ncd android-project-generator\n\n# 2. Run it\nbash create-android-app.sh\n\n# 3. Follow the prompts — that's it!\n```\n\n### What You'll Be Asked\n\n| Prompt               | Example                          |\n|----------------------|----------------------------------|\n| App Name             | `My Awesome App`                 |\n| Package Name         | `com.example.myawesomeapp`       |\n| Project Directory    | `my-awesome-app`                 |\n| Min SDK              | `24` (Android 7.0, default)      |\n| Git Remote URL       | `https://github.com/you/repo.git`|\n| Logo PNG Path        | `/path/to/logo.png` (optional)   |\n| Icon Background Color| `#FF5722` (default: white)       |\n\n---\n\n## 📦 What Gets Generated\n\n```\nmy-app/\n├── app/\n│   ├── src/\n│   │   ├── main/\n│   │   │   ├── kotlin/com/example/myapp/\n│   │   │   │   ├── MainActivity.kt\n│   │   │   │   └── ui/\n│   │   │   │       ├── HelloWorldScreen.kt\n│   │   │   │       └── theme/\n│   │   │   │           ├── Theme.kt\n│   │   │   │           ├── Color.kt\n│   │   │   │           └── Type.kt\n│   │   │   ├── res/\n│   │   │   │   ├── drawable/\n│   │   │   │   ├── mipmap-{mdpi,hdpi,xhdpi,xxhdpi,xxxhdpi}/\n│   │   │   │   ├── mipmap-anydpi-v26/\n│   │   │   │   ├── values/\n│   │   │   │   ├── layout/\n│   │   │   │   └── xml/\n│   │   │   └── AndroidManifest.xml\n│   │   ├── test/kotlin/com/example/myapp/ExampleUnitTest.kt\n│   │   └── androidTest/kotlin/com/example/myapp/ExampleInstrumentedTest.kt\n│   ├── build.gradle.kts\n│   └── proguard-rules.pro\n├── gradle/\n│   ├── wrapper/\n│   └── libs.versions.toml\n├── .github/workflows/android-ci.yml\n├── .gitlab-ci.yml\n├── fastlane/\n├── build.gradle.kts\n├── settings.gradle.kts\n├── gradle.properties\n├── gradlew\n├── local.properties.template\n├── .gitignore\n└── README.md\n```\n\n---\n\n## 🏗 Generated Project Architecture\n\n### Build System\n- **Gradle Kotlin DSL** with version catalog (`gradle/libs.versions.toml`)\n- Centralized dependency management\n- Configuration caching enabled\n- Parallel builds enabled\n\n### UI Layer\n- **Material 3** design system with dynamic color support (Android 12+)\n- Edge-to-edge rendering via `enableEdgeToEdge()`\n- Dark/Light theme with automatic system detection\n- Preview composable for Android Studio\n\n### Testing\n| Type              | Framework         | File                               |\n|-------------------|-------------------|------------------------------------|\n| Unit tests        | JUnit 4           | `ExampleUnitTest.kt`               |\n| Instrumented tests| AndroidX Test     | `ExampleInstrumentedTest.kt`       |\n| Compose UI tests  | Compose UI Test   | Built-in (via BOM)                 |\n\n### CI/CD Pipelines\n\n| Stage     | GitHub Actions                                   | GitLab CI                                         |\n|-----------|--------------------------------------------------|---------------------------------------------------|\n| Validate  | `lint`                                           | `lint`                                            |\n| Test      | `test` (unit tests)                              | `unit-test`                                       |\n| Build     | `assembleDebug` (debug), `assembleRelease` + `bundleRelease` (release) | Same                           |\n| Release   | Auto GitHub Release on tag                       | Auto GitLab Release on tag                        |\n\n### Signing Release Builds\n\nThe generated project supports two naming conventions for signing secrets — modern (`ANDROID_*`) and legacy (`KEY_*`/`KEYSTORE_*`). Modern names take precedence; if neither is set, release builds fall back to the debug keystore (unsigned).\n\n| Secret                    | Description                          |\n|---------------------------|--------------------------------------|\n| `ANDROID_SIGNING_KEY`     | Base64-encoded keystore file         |\n| `ANDROID_KEYSTORE_PASSWORD` | Keystore password                  |\n| `ANDROID_ALIAS`           | Key alias                            |\n| `ANDROID_KEY_PASSWORD`    | Key password                         |\n| `KEYSTORE_BASE64`         | *(legacy)* Base64-encoded keystore   |\n| `KEYSTORE_PASSWORD`       | *(legacy)* Keystore password         |\n| `KEY_ALIAS`               | *(legacy)* Key alias                 |\n| `KEY_PASSWORD`            | *(legacy)* Key password              |\n\n\u003e **Note:** When both a modern and legacy variable are present, the `ANDROID_*` variable wins. This is safe to configure alongside existing `KEY_*`/`KEYSTORE_*` secrets during migration.\n\n---\n\n## 🎨 Icon Generation\n\nThe script creates **5 density sets** for both legacy and adaptive icons:\n\n| Density   | Legacy PNG | Adaptive Layer |\n|-----------|------------|----------------|\n| mdpi      | 48×48      | 108×108        |\n| hdpi      | 72×72      | 162×162        |\n| xhdpi     | 96×96      | 216×216        |\n| xxhdpi    | 144×144    | 324×324        |\n| xxxhdpi   | 192×192    | 432×432        |\n\nPlus a **512×512 Play Store icon** in the `fastlane/` directory.\n\n**Placeholder mode**: If no logo is provided, the script generates a Material-style gradient icon with the first letter of your app name.\n\n---\n\n## 🔧 Version Management\n\nVersions are **auto-fetched** at runtime from official sources:\n\n| Component  | Source                        |\n|------------|-------------------------------|\n| AGP        | Google Maven                  |\n| Kotlin     | Maven Central                 |\n| Gradle     | services.gradle.org API       |\n| Compose BOM| Google Maven                  |\n| core-ktx   | Google Maven                  |\n| lifecycle  | Google Maven                  |\n| activity-compose | Google Maven           |\n\nFallback hardcoded versions are used if the network is unavailable.\n\n---\n\n## 🧪 Usage Examples\n\n### Create a project with a custom logo\n```bash\nbash create-android-app.sh\n# At the prompt, provide: /home/user/logo.png\n```\n\n### Create a project with dark icon background\n```bash\nbash create-android-app.sh\n# At the prompt, provide icon background: #212121\n```\n\n### Generate and push to remote in one go\n```bash\nbash create-android-app.sh\n# At the prompt, provide the Git Remote URL\n```\n\n---\n\n## 🤝 Contributing\n\nContributions are welcome! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\n---\n\n## 🔒 Security\n\nReport security issues to the project's security advisory. See [SECURITY.md](SECURITY.md).\n\n---\n\n## 📄 License\n\nThis project is licensed under the MIT License — see the [LICENSE](LICENSE) file for details.\n\n---\n\n## 🙋 FAQ\n\n**Q: Can I use this on macOS?**  \nA: The script is designed for Linux. macOS support requires tweaks to dependency checks.\n\n**Q: Do I need Android Studio?**  \nA: No. The generated project can be built entirely from the command line.\n\n**Q: Can I customize the generated code?**  \nA: Yes! Fork the script and modify the heredoc templates to match your needs.\n\n**Q: Will this work with older JDK versions?**  \nA: Java 17+ is required. Java 21 is recommended and tested.\n\n---\n\n## ⭐ Support\n\nIf you find this project useful, please give it a ⭐ on [GitHub](https://github.com/MaheshTechnicals/android-project-generator)!\n\n---\n\n*Made with ♥ by [Mahesh Technicals](https://github.com/MaheshTechnicals)*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaheshtechnicals%2Fandroid-project-generator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaheshtechnicals%2Fandroid-project-generator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaheshtechnicals%2Fandroid-project-generator/lists"}