This sample Android app presents the Giphy trending animated gifs for sharing or download. You can now also search animated gifs by keyword.
- Kotlin
- MVVM & clean architecture
- Jetpack Compose - Single Activity
- Kotlin Coroutines and Flow
- Dependency Injection using Dagger Hilt
- Material 3 dynamic colour theming supporting light and dark modes
- Dynamic screen layout support using Windows Size Class
- Gradle Kotlin DSL and Version Catalog
- Macrobenchmark and Baseline Profile
- Full unit test and UI (Journey) test suite
- AndroidX Core KTX - Apache 2.0 - Extensions to Java APIs for Android development
- JUnit - EPL 2.0 - A simple framework to write repeatable tests
- AndroidX Espresso - Apache 2.0 - UI testing framework
- AndroidX Activity Compose - Apache 2.0 - Jetpack Compose integration with Activity
- Jetpack Compose BOM - Apache 2.0 - Bill of Materials for Jetpack Compose
- AndroidX Compose UI - Apache 2.0 - UI components for Jetpack Compose
- AndroidX Material3 - Apache 2.0 - Material Design components for Jetpack Compose
- AndroidX Benchmark - Apache 2.0 - Benchmarking library
- AndroidX Core Splashscreen - Apache 2.0 - Core splash screen
- AndroidX DataStore Preferences - Apache 2.0 - Data storage solution
- AndroidX Legacy Support - Apache 2.0 - Legacy libraries
- AndroidX Lifecycle - Apache 2.0 - Lifecycles-aware components
- AndroidX Room - Apache 2.0 - Persistence library
- Kotlinx DateTime - Apache 2.0 - A multiplatform Kotlin library for working with date and time
- Timber - Apache 2.0 - A logger with a small, extensible API
- Coil - Apache 2.0 - An image loading library for Android backed by Kotlin Coroutines
- MockK - Apache 2.0 - Mocking library for Kotlin
- Kotlinx Coroutines - Apache 2.0 - Libraries for Kotlin coroutines
- Kotest - Apache 2.0 - Kotlin test framework
- Robolectric - MIT - A framework that brings fast, reliable unit tests to Android
- AndroidX Test - Apache 2.0 - Testing framework for Android
- Hilt - Apache 2.0 - A dependency injection library for Android that reduces the boilerplate of doing manual dependency injection
- LeakCanary - Apache 2.0 - A memory leak detection library for Android
- Ktor - Apache 2.0 - Framework for building asynchronous servers and clients in connected systems
- Android Application Plugin - Google - Plugin for building Android applications
- Jetbrains Kotlin Android Plugin - JetBrains - Plugin for Kotlin Android projects
- Compose Compiler Plugin - JetBrains - Plugin for Jetpack Compose
- Hilt Android Plugin - Google - Plugin for Hilt dependency injection
- Kover Plugin - JetBrains - Code coverage tool for Kotlin
- Ktlint Plugin - JLLeitschuh - Plugin for Kotlin linter
- Google DevTools KSP - Google - Kotlin Symbol Processing API plugin
- Android Test Plugin - Google - Plugin for Android testing
- Baseline Profile Plugin - AndroidX - Plugin for generating baseline profiles
- Serialization Plugin - JetBrains - Plugin for Kotlin serialization
- To build the app by yourself, you need your own Giphy API Key
Release builds will be signed if either the keystore file or environment variables are set. Otherwise, the app will be built unsigned and without the Giphy API key installed, which will not pull any data from the endpoint.
-
Android Keystore is not being stored in this repository. You need your own Keystore to generate the apk / App Bundle
-
If your project folder is at
/app/giphy/
, the Keystore file andkeystore.properties
should be placed at/app/
-
The format of
keystore.properties
is:store=/app/release-key.keystore alias=<alias> pass=<alias password> storePass=<keystore password> giphyApiKey="<your API Key here>"
-
This project has been configured to support automated CI builds.
-
The following environment variables have been set to provide the keystore:
BITRISE = true HOME = <the home directory of the bitrise environment> BITRISEIO_ANDROID_KEYSTORE_PASSWORD = <your keystore password> BITRISEIO_ANDROID_KEYSTORE_ALIAS = <your keystore alias> BITRISEIO_ANDROID_KEYSTORE_PRIVATE_KEY_PASSWORD = <your keystore private key password> GIPHYAPIKEY= <your API Key>
This app has two build variants: Debug
and Release
. The most common build commands are:
./gradlew clean installDebug
./gradlew clean instal
./gradlew clean bundleRelease
./gradlew clean assembleRelease
The generated apk(s) will be stored under app/build/outputs/