- This is a sample Android application built using Kotlin, MVVM architecture, and Jetpack Compose. It demonstrates best practices in Android development, including dependency injection with Hilt, state management with ViewModel, and UI design with Jetpack Compose.
| 📱 Screen Previews | ||
|---|---|---|
![]() Home 3 |
![]() Home 1 |
![]() Home 2 |
![]() Favorite Item |
![]() Camera Detail |
![]() Camera Detail With Like |
![]() Account Under Development |
![]() Settings |
![]() Splash Screen |
- Generate own icon at https://icon.kitchen/
- Copy all inside
Sources/IconKitchen-Output/android/res/toapp/src/main/res/(overwrite existing files) - Change
app/src/main/AndroidManifest.xmlto use the new icon, name ishoang_ic_launcher, default isic_launcherandic_launcher_round
<application
android:icon="@mipmap/hoang_ic_launcher"
android:roundIcon="@mipmap/hoang_ic_launcher">
</application>- local.properties
my.api.key=YOUR_API_KEY
- build.gradle.kts: update
defaultConfigto read fromlocal.propertiesand enablebuildConfigfeature
defaultConfig {
/// Existing configurations...
// Read from local.properties
val properties = Properties()
if (rootProject.file("local.properties").exists()) {
properties.load(project.rootProject.file("local.properties").inputStream())
} else {
throw RuntimeException("local.properties file not found")
}
val error = "variable not found in local.properties"
// Define BuildConfig fields without revealing fallback values
buildConfigField(
"String", "YOUR_API_KEY",
"\"${properties.getProperty("my.api.key") ?: throw RuntimeException(error)}\""
)
}
buildFeatures {
// Existing features...
// Environment variable configuration
buildConfig = true
}








