Android app for the 5th Android Developer conference- Droidcon Kenya to be held in Nairobi on 6th - 8th November.
This project is the Android app for the conference. The app supports devices running Android 5.0+, and is optimized for phones and tablets of all shapes and sizes.
To ensure the project runs on your local environment ensure you have Java 17 on your PC or if you don't have you can install it from here.
If you have multiple installations of Java make sure to set Java 17 as your preferred version to run the project.
With the new Android Gradle Plugin version 8.0.0, you need Java 17 to run the project and any terminal commands. A workaround for this is to add this in your global gradle.properties file:
org.gradle.java.home=/Applications/Android Studio.app/Contents/jbr/Contents/Home
This simply sets the Gradle Java home to the one set in Android Studio. Android Studio Flamingo comes bundled with Java 17. You only need to ensure the project uses Java 17. To do so, go to File -> Project Structure -> SDK Location -> Gradle Settings and set the Java Version to 17 from the list that appears.
The proposed architecture is as follows;
This layer will include;
This layer will contain;
The app will have the following features:
This is the link to the app designs:
The app uses a design system: Chai
The project uses Versions Catalog to set up and share dependencies across the modules. The main reasons for choosing to adopt Versions Catalog are:
To add a dependency, navigate to **gradle/libs.versions.toml*** file, which has all the dependencies for the whole project. This file has the following sections:
[versions] is used to declare the version numbers that will be referenced later by plugins and
libraries.
[libraries] Define the libraries that will be later accessed in our Gradle files.
[bundles] Are used to define a set of dependencies. For this, we have compose
, room
, lifecycle
and ktor
as examples.
[plugins] Used to define plugins.
You need to add your dependency version in [versions]. After defining the version, add your library in the [libraries] section as:
androidx-splashscreen = { module = "androidx.core:core-splashscreen", version.ref = "splash" }
Note:
Previews are limited when using ViewModel within a composable.
If you want to preview a composable that uses a ViewModel, you should create another composable with the parameters from ViewModel passed as arguments of the composable. This way, you don't need to preview the composable that uses the ViewModel.
More on Previews and ViewModels can be found here.
This project uses coreLibraryDesugaring
to support newer Java 8 APIs that are not available on API
levels 25 and below. Specifically the Kotlin kotlinx.datetime
API which depends on
Java's java.time
.
This allows use of kotlinx.datetime.LocalDate
without having to wrap it
in @RequiresAPI(Build.VERSION_CODES.O)
and also backports the fix to API level 21.
More on Desugaring using Android Gradle Plugin can be
found here.
Instructions on how to set up and add coreLibraryDesugaring
to your project can be
found here.
Contributions are always welcome!
See CONTRIBUTING.md
for ways to get started.
We would endlessly like to thank the following contributors