Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/android/architecture-templates
https://github.com/android/architecture-templates
Last synced: about 1 month ago
JSON representation
- Host: GitHub
- URL: https://github.com/android/architecture-templates
- Owner: android
- License: apache-2.0
- Created: 2022-09-06T17:18:10.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-05-20T22:10:58.000Z (6 months ago)
- Last Synced: 2024-05-21T00:46:52.861Z (6 months ago)
- Size: 589 KB
- Stars: 2,503
- Watchers: 100
- Forks: 264
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
- awesome-list - android/architecture-templates - (Misc)
README
Android Architecture Starter Templates (beta)
==================✅ **What it is**: A collection of templates featuring a layered architecture ready to be used in greenfield projects
or quick experiments, following the [Guide to app architecture](https://developer.android.com/topic/architecture).🙅 **What it's not**: These templates are not designed to be educational code samples. For that, check out [Architecture Samples](https://github.com/android/architecture-samples), the [Now In Android sample](https://github.com/android/nowinandroid) or [Compose samples](https://github.com/android/compose-samples).
Templates are compatible with the latest **stable** version of Android Studio.
| Template | Description |
| ------------- | ------------- |
| [`base`](https://github.com/android/architecture-templates/tree/base) | Reactive architecture, Compose, database, single module |
| [`multimodule`](https://github.com/android/architecture-templates/tree/multimodule) | Base template + multimodule |## Screenshots
## Features
### 🖼️ UI
The app contains a simple Compose UI that shows a list of
saved strings and lets the user save new ones.
### 🧱 Build* [KTS gradle files](https://docs.gradle.org/current/userguide/kotlin_dsl.html)
* [Version catalog](https://docs.gradle.org/current/userguide/platforms.html)### 🏠 Architecture
* [Room Database](https://developer.android.com/training/data-storage/room)
* Dependency injection with [Hilt](https://developer.android.com/training/dependency-injection/hilt-android)
* [Jetpack ViewModel](https://developer.android.com/topic/libraries/architecture/viewmodel)
* UI using [Jetpack Compose](https://developer.android.com/jetpack/compose) and
[Material3](https://developer.android.com/jetpack/androidx/releases/compose-material3)
* [Jetpack Navigation](https://developer.android.com/jetpack/compose/navigation)
* [Reactive data layer](https://developer.android.com/topic/architecture/data-layer)
* [Kotlin Coroutines and Flow](https://developer.android.com/kotlin/coroutines)
* [Unit tests](https://developer.android.com/training/testing/local-tests)
* [UI tests](https://developer.android.com/jetpack/compose/testing) using fake data with
[Hilt](https://developer.android.com/training/dependency-injection/hilt-testing)## Usage
1. Clone the repository, optionally choosing a branch and a target directory. For example, to check out the `base` branch:
```
git clone https://github.com/android/architecture-templates.git --branch base targetDirectory
```For the customizer to work, dont open the project in Android Studio yet.
2. Run the customizer script:
```
bash customizer.sh your.package.name DataItemType [YourAppName]
```* `your.package.name` is your app ID (should be lowercase)
* `DataItemType` is used for the name of the screen, exposed state and data base entity
(should be PascalCase).
* Optionally, you can specify a name for your application (should be in PascalCase).Note: the customizer script requires bash 4 and above. You might have to install a modern version
on macOS:```
brew install bash
```# License
This code is distributed under the terms of the Apache License (Version 2.0). See the
[license](LICENSE) for more information.