Parrot is my toy project designed to explore multi-module Android configurations and eventually Android Media3.
Parrot is a multi-module Android project that focuses on experimenting with different Android architecture patterns and features. The primary goal is to provide a sandbox for learning and trying out new concepts related to Android app development.
The project leverages several custom plugins created in the build-logic
directory to streamline the development process. These plugins offer pre-configured settings and dependencies for different module types:
-
ParrotBaseAndroidPlugin: This base plugin should be applied to all Android modules in the project. It configures common settings and dependencies, such as compileSdk, defaultConfig, packaging, build types, compile options, and Kotlin settings. It also applies other necessary plugins like "org.jetbrains.kotlin.android" and "kotlin-kapt."
-
ParrotAndroidAppPlugin: This plugin is specifically designed for applying to "app" modules. It automatically applies essential plugins like "com.android.application," "org.jetbrains.kotlin.android," "parrot-android-base-plugin," and "parrot-compose-plugin." It configures the targetSdk and applies common settings to the "app" module.
-
ParrotAndroidFeaturePlugin: This plugin should be applied to Android feature modules. It applies the necessary plugins like "com.android.library," "org.jetbrains.kotlin.android," "parrot-android-base-plugin," and "parrot-compose-plugin."
-
ParrotComposePlugin: This plugin enables Jetpack Compose and configures related dependencies for Android modules. It handles settings related to Jetpack Compose, such as enabling build features and specifying the Kotlin compiler extension version.
-
ParrotAnvilPlugin: This plugin adds Anvil-related dependencies to the module where it's applied.
-
ParrotHiltPlugin: This plugin adds Hilt-related dependencies to the module where it's applied. It simplifies the process of adding Hilt's annotation processor and runtime dependencies.
Parrot uses a libs.versions.toml
file to manage dependencies and their versions. This approach centralizes version control, ensuring consistent dependency versions across modules. The custom libs
function in the buildSrc
directory simplifies the retrieval of dependency versions defined in the version catalog.
This project is licensed under the MIT License.