Simple App is an Android application designed with a modern user interface and robust functionality. It leverages various libraries to enhance performance, streamline development, and provide a rich user experience.
- Purpose: To build the UI using a declarative approach, allowing for a responsive and flexible design.
- Key Components: UI components like buttons, text fields, and layouts.
- Purpose: For dependency injection, which simplifies code management and improves testability.
- Usage: Managing dependencies efficiently throughout the app.
- Purpose: To handle network requests and data fetching.
- Features: Supports REST APIs and integrates seamlessly with Kotlin Coroutines for asynchronous operations.
- Purpose: A comprehensive suite for backend services.
- Authentication: Simplifies user login and registration.
- Analytics: Provides insights into user behavior and app performance.
- Crashlytics: Helps in tracking and managing app crashes.
- Performance Monitoring: Assists in monitoring app performance in real-time.
- Purpose: An image loading library that efficiently loads and displays images in the app.
- Benefits: Lightweight and supports modern Android development practices.
- Purpose: Manages app navigation and deep linking.
- Benefits: Simplifies the implementation of navigation flows within the app.
- Purpose: Facilitates the conversion of Kotlin objects to and from JSON.
- Usage: Streamlines data handling in network requests and responses.
To run the app, clone the repository and open it in Android Studio. Ensure that you have the required libraries and dependencies configured in the build.gradle file.
Note: You need to add a service account for Google services to enable functionalities like Firebase Authentication and Analytics. Follow the Firebase documentation to set up a service account and download the JSON credentials file.
Simply run the app on an emulator or a physical device after ensuring all configurations are correctly set up.
The deployment process for Simple App is automated using GitHub Actions. The workflow consists of two main jobs: test and distribute.
- Purpose: To run unit tests before the deployment process.
- Steps:
- Checkout the repository to access the code.
- Set up JDK 17 using the
actions/setup-javaaction. - Grant execute permissions for the Gradle wrapper.
- Run unit tests (currently a placeholder step).
- Purpose: To prepare and deploy the app bundle to Google Play.
- Dependencies: It runs after the test job is completed successfully.
- Steps:
- Checkout the repository again.
- Set up JDK 17.
- Get and increment version codes:
- Reads the current
versionCodeandversionNamefrombuild.gradle.kts. - Increments
versionCodeand updates theversionNameby bumping the patch version.
- Reads the current
- Commit the version bump changes to the repository.
- Grant execute permissions for Gradle.
- Assemble the release bundle using Gradle.
- Sign the release bundle using the
r0adkll/sign-android-releaseaction. - Set up authorization with Google Play by creating a service account JSON file.
- Deploy the signed bundle to Google Play using the
r0adkll/upload-google-playaction.
- Ensure that you have configured all necessary secrets (like
ANDROID_KEYSTORE,KEYSTORE_PASSWORD, etc.) in your GitHub repository settings. - The workflow triggers on pushes to the
masterbranch, making it suitable for continuous deployment.
This setup helps streamline your deployment process, reducing manual effort and minimizing the risk of errors.