This is not an official Google product
ComposeLife is a work-in-progress Game of Life simulator multiplatform app.
This project is a personal sandbox of sorts, experimenting with the latest libraries and tools. These include:
- Written in Kotlin
- UI written in Jetpack Compose
- Mobile Android app and desktop app for exploring Game of Life patterns.
- Watchface for Wear OS with configuration
- Custom adaptive navigation library
- Dependency injection using kotlin-inject and context receivers
- AGSL, OpenGL and SKSL rendering
- Fully functional CI system with GitHub Actions with:
- Comprehensive automated tests
- Hierarchical KMP tests shared across platforms
- Shared Robolectric and instrumentation tests
- Minified instrumentation tests with the help of Keeper, memory leak checking with LeakCanary)
- Screenshot tests with Roborazzi with automatic updates on CI
- Code coverage with JaCoCo (reporting done with Codecov)
- Linting, with android/lint and detekt with automatic updates on CI
- Automatic dependency updates with Renovate
- Automatic baseline profile generation
- Comprehensive automated tests
Requirements:
- Android Studio Ladybug 2024.2.1
- JDK 21+
Clone the project, and build! (no API keys or other setup necessary)
app contains the mobile app simulator for running, editing, and exploring Game of Life patterns.
desktop-app contains the desktop app simulator for running, editing, and exploring Game of Life patterns.
wear contains a Game of Life watchface, with a stable pattern displaying the time with a surrounding random soup potentially destroying it while the watchface is active.
Copyright 2022 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.