Skip to content

Commit f84f091

Browse files
authored
Upgraded project (#18)
* Upgrade project to Kotlin 2.0.20 * improved build * upgraded project to latest versions * added needed property * replaced LifeCycleEffect * replaced replaced some icons * changed version * updated README.md
1 parent 496ca35 commit f84f091

File tree

19 files changed

+93
-99
lines changed

19 files changed

+93
-99
lines changed

README.md

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -108,17 +108,16 @@ Click to "Use This Template" button to create a new repository with this templat
108108
Go to the [Documentation page](https://docs.multiplatformkickstarter.com) for all the information. (**WIP**)
109109
<br><br>
110110

111-
PRO Template
111+
Need a different template?
112112
-----------------
113113

114-
Do you need more? Adoptme is a good start but the **Pro template** have all you need to create professional apps without a hassle.
115-
It includes more features, screens and components. Like:
114+
Do you need a different use case? Adoptme Template is a good start but the are more **complete templates** that have all you need to create professional apps without a hassle.
115+
Including more features, screens and components. Like:
116116

117117
- Advanced CI (deployment)
118-
- A/B Component
119-
- Deeplinks
120-
- More Translations
121-
- Social Login
118+
- RSS Component
119+
- Read and Download PDFs
120+
- Built-in video-game
122121
- 3rd party integrations
123122
- **and more!**
124123

@@ -171,7 +170,7 @@ Check out our social media to be up-to-date about new products, features and rel
171170
License
172171
-------
173172

174-
Copyright 2023-2024 Multiplatform Kickstarter
173+
Copyright 2023-2025 Multiplatform Kickstarter
175174

176175
Licensed under the Apache License, Version 2.0 (the "License");
177176
you may not use this file except in compliance with the License.

composeApp/build.gradle.kts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ kotlin {
4141
androidTarget {
4242
@OptIn(ExperimentalKotlinGradlePluginApi::class)
4343
compilerOptions {
44-
jvmTarget.set(JvmTarget.JVM_17)
44+
jvmTarget.set(JvmTarget.JVM_21)
4545
}
4646
}
4747
jvm("desktop")
@@ -151,8 +151,8 @@ android {
151151
}
152152
}
153153
compileOptions {
154-
sourceCompatibility = JavaVersion.VERSION_17
155-
targetCompatibility = JavaVersion.VERSION_17
154+
sourceCompatibility = JavaVersion.VERSION_21
155+
targetCompatibility = JavaVersion.VERSION_21
156156
}
157157
buildFeatures {
158158
compose = true

gradle.properties

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
# Gradle
2-
org.gradle.jvmargs=-Xms8g -Xmx8g -XX:MaxMetaspaceSize=1g -XX:+HeapDumpOnOutOfMemoryError -XX:+UseParallelGC
2+
org.gradle.jvmargs=-Xms8g -Xmx8g -XX:MaxMetaspaceSize=1g -XX:+HeapDumpOnOutOfMemoryError -XX:+UseParallelGC -XX:-UseGCOverheadLimit
33
kotlin.daemon.jvmargs=-Xms4g -Xmx4g -XX:+UseParallelGC
44
org.gradle.caching=true
5+
kotlin.mpp.androidGradlePluginCompatibility.nowarn=true
6+
org.gradle.parallel=true
57

68
org.gradle.configuration-cache=true
79

@@ -32,5 +34,5 @@ kotlin.native.cachekind=none
3234

3335
# Multiplatform Kickstarter config
3436
multiplatformkickstarter.version.major = 2
35-
multiplatformkickstarter.version.minor = 0
37+
multiplatformkickstarter.version.minor = 1
3638
multiplatformkickstarter.version.patch = 0

gradle/libs.versions.toml

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,29 @@
11
[versions]
2-
android-compileSdk = "34"
2+
android-compileSdk = "35"
33
android-minSdk = "26"
4-
android-targetSdk = "34"
5-
kotlin = "2.0.0"
4+
android-targetSdk = "35"
5+
kotlin = "2.1.10"
66
ktor-client = "2.3.12"
77
ktor-server = "2.3.12"
88
multiplatform-settings = "1.0.0"
9-
voyager = "1.0.0"
10-
koin = "3.5.6"
11-
koin-compose = "1.1.3"
9+
voyager = "1.1.0-beta03"
10+
koin = "4.0.1"
11+
koin-compose = "4.0.1"
1212
junit = "4.13.2"
13-
androidGradlePlugin = "8.5.1"
14-
composeMultiplatform = "1.6.11"
13+
androidGradlePlugin = "8.8.2"
14+
composeMultiplatform = "1.7.3"
1515
exposed = "0.37.3"
16-
skiko = "0.8.4"
16+
skiko = "0.8.18"
1717
ktlint = "11.5.1"
18-
detekt = "1.23.1"
19-
kotlinx-coroutines = "1.8.1"
18+
detekt = "1.23.7"
19+
kotlinx-coroutines = "1.10.2"
2020
androidx-junit = "1.2.1"
2121
espressoCore = "3.6.1"
22-
accompanistSystemuicontroller = "0.32.0"
23-
activityCompose = "1.9.0"
24-
firebase = "33.1.2"
22+
accompanistSystemuicontroller = "0.36.0"
23+
activityCompose = "1.10.1"
24+
firebase = "33.13.0"
2525
touchlab = "2.0.5"
26-
navigationCommonKtx = "2.7.7"
26+
navigationCommonKtx = "2.8.9"
2727

2828
[libraries]
2929
# Common
@@ -41,8 +41,8 @@ ktor-client = { module = "io.ktor:ktor-client-core", version.ref = "ktor-client"
4141
kamel = "media.kamel:kamel-image:0.7.1"
4242
kermit = "co.touchlab:kermit:2.0.0-RC5"
4343

44-
kotlinx-serialization-json = "org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.1"
45-
kotlinx-datetime = "org.jetbrains.kotlinx:kotlinx-datetime:0.5.0"
44+
kotlinx-serialization-json = "org.jetbrains.kotlinx:kotlinx-serialization-json:1.8.1"
45+
kotlinx-datetime = "org.jetbrains.kotlinx:kotlinx-datetime:0.6.0"
4646
kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinx-coroutines" }
4747
kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "kotlinx-coroutines" }
4848

@@ -56,12 +56,12 @@ koin-core = { module = "io.insert-koin:koin-core", version.ref = "koin" }
5656
koin-test = { module = "io.insert-koin:koin-test", version.ref = "koin" }
5757

5858
# Android
59-
compose-bom = "androidx.compose:compose-bom:2024.06.00"
59+
compose-bom = "androidx.compose:compose-bom:2025.01.00"
6060
koin-android = { module = "io.insert-koin:koin-android", version.ref = "koin" }
6161

62-
androidx-core-ktx = "androidx.core:core-ktx:1.13.1"
62+
androidx-core-ktx = "androidx.core:core-ktx:1.16.0"
6363
androidx-core-splashscreen = "androidx.core:core-splashscreen:1.0.1"
64-
androidx-tracing-ktx = "androidx.tracing:tracing-ktx:1.2.0"
64+
androidx-tracing-ktx = "androidx.tracing:tracing-ktx:1.3.0"
6565
accompanist-systemuicontroller = { module = "com.google.accompanist:accompanist-systemuicontroller", version.ref = "accompanistSystemuicontroller" }
6666
androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "activityCompose" }
6767
firebase-bom = { module = "com.google.firebase:firebase-bom", version.ref = "firebase" }
@@ -83,9 +83,9 @@ stately-common = { module = "co.touchlab:stately-common", version.ref = "touchla
8383

8484
# Desktop
8585
koin-compose = { module = "io.insert-koin:koin-compose", version.ref = "koin-compose" }
86-
kotlinx-coroutines-swingui = "org.jetbrains.kotlinx:kotlinx-coroutines-swing:1.8.1"
86+
kotlinx-coroutines-swingui = "org.jetbrains.kotlinx:kotlinx-coroutines-swing:1.10.2"
8787
ktor-client-java = { module = "io.ktor:ktor-client-java", version.ref = "ktor-client" }
88-
androidx-compose-ui-util = "androidx.compose.ui:ui-util:1.6.8"
88+
androidx-compose-ui-util = "androidx.compose.ui:ui-util:1.7.5"
8989

9090
# Backend
9191
ktor-server-core = { module = "io.ktor:ktor-server-core", version.ref = "ktor-server" }

gradle/wrapper/gradle-wrapper.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
44
networkTimeout=10000
55
validateDistributionUrl=true
66
zipStoreBase=GRADLE_USER_HOME

iosApp/iosApp/Info.plist

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
33
<plist version="1.0">
44
<dict>
5+
<key>CADisableMinimumFrameDurationOnPhone</key>
6+
<true/>
57
<key>CFBundleDevelopmentRegion</key>
68
<string>$(DEVELOPMENT_LANGUAGE)</string>
79
<key>CFBundleExecutable</key>

shared/build.gradle.kts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ kotlin {
2828
androidTarget {
2929
@OptIn(ExperimentalKotlinGradlePluginApi::class)
3030
compilerOptions {
31-
jvmTarget.set(JvmTarget.JVM_17)
31+
jvmTarget.set(JvmTarget.JVM_21)
3232
}
3333
}
3434

@@ -123,8 +123,11 @@ android {
123123
minSdk = libs.versions.android.minSdk.get().toInt()
124124
}
125125
compileOptions {
126-
sourceCompatibility = JavaVersion.VERSION_17
127-
targetCompatibility = JavaVersion.VERSION_17
126+
sourceCompatibility = JavaVersion.VERSION_21
127+
targetCompatibility = JavaVersion.VERSION_21
128+
}
129+
kotlin {
130+
jvmToolchain(21)
128131
}
129132
}
130133

shared/src/commonMain/kotlin/com/multiplatformkickstarter/app/feature/debugmenu/DebugMenuScreen.kt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,6 @@ import androidx.compose.foundation.layout.size
1515
import androidx.compose.foundation.layout.width
1616
import androidx.compose.foundation.rememberScrollState
1717
import androidx.compose.foundation.verticalScroll
18-
import androidx.compose.material.icons.Icons
19-
import androidx.compose.material.icons.automirrored.filled.ArrowBack
2018
import androidx.compose.material3.Button
2119
import androidx.compose.material3.Checkbox
2220
import androidx.compose.material3.CheckboxColors
@@ -45,7 +43,7 @@ import androidx.compose.ui.Modifier
4543
import androidx.compose.ui.text.font.FontWeight
4644
import androidx.compose.ui.unit.dp
4745
import cafe.adriel.voyager.core.screen.Screen
48-
import cafe.adriel.voyager.koin.getScreenModel
46+
import cafe.adriel.voyager.koin.koinScreenModel
4947
import cafe.adriel.voyager.navigator.LocalNavigator
5048
import cafe.adriel.voyager.navigator.currentOrThrow
5149
import com.multiplatformkickstarter.app.feature.debugmenu.viewmodel.DebugMenuSideEffects
@@ -74,7 +72,7 @@ class DebugMenuScreen : Screen {
7472
val snackbarHostState = remember { SnackbarHostState() }
7573
showingModal = remember { mutableStateOf(false) }
7674

77-
val viewModel = getScreenModel<DebugMenuViewModel>()
75+
val viewModel = koinScreenModel<DebugMenuViewModel>()
7876

7977
SetupSideEffects(viewModel)
8078
DebugMenuView(viewModel, snackbarHostState) {
@@ -139,7 +137,7 @@ class DebugMenuScreen : Screen {
139137
),
140138
navigationIcon = {
141139
IconButton(onClick = { onClose.invoke() }) {
142-
Icon(imageVector = Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "Go back")
140+
Icon(imageVector = MultiplatformKickstarterIcons.ArrowBack, contentDescription = "Go back")
143141
}
144142
}
145143
)

shared/src/commonMain/kotlin/com/multiplatformkickstarter/app/feature/loginsignup/EmailLoginScreen.kt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@ import androidx.compose.foundation.layout.height
1111
import androidx.compose.foundation.layout.padding
1212
import androidx.compose.foundation.shape.RoundedCornerShape
1313
import androidx.compose.foundation.text.KeyboardOptions
14-
import androidx.compose.material.icons.Icons
15-
import androidx.compose.material.icons.automirrored.filled.ArrowBack
1614
import androidx.compose.material3.Button
1715
import androidx.compose.material3.ButtonDefaults
1816
import androidx.compose.material3.ExperimentalMaterial3Api
@@ -38,7 +36,7 @@ import androidx.compose.ui.text.input.PasswordVisualTransformation
3836
import androidx.compose.ui.text.input.TextFieldValue
3937
import androidx.compose.ui.unit.dp
4038
import cafe.adriel.voyager.core.screen.Screen
41-
import cafe.adriel.voyager.koin.getScreenModel
39+
import cafe.adriel.voyager.koin.koinScreenModel
4240
import cafe.adriel.voyager.navigator.LocalNavigator
4341
import cafe.adriel.voyager.navigator.currentOrThrow
4442
import com.multiplatformkickstarter.app.feature.loginsignup.viewmodels.EmailLoginSideEffects
@@ -60,7 +58,7 @@ class EmailLoginScreen : Screen {
6058
MultiplatformKickstarterTheme {
6159
val localization = getCurrentLocalization()
6260
val snackbarHostState = remember { SnackbarHostState() }
63-
val viewModel = getScreenModel<EmailLoginViewModel>()
61+
val viewModel = koinScreenModel<EmailLoginViewModel>()
6462

6563
SetupSideEffects(viewModel, snackbarHostState, localization)
6664
EmailLoginView(viewModel, snackbarHostState, localization)
@@ -123,7 +121,7 @@ fun EmailLoginView(viewModel: EmailLoginViewModel, snackbarHostState: SnackbarHo
123121
navigationIcon = {
124122
IconButton(onClick = { currentNavigator.pop() }) {
125123
Icon(
126-
imageVector = Icons.AutoMirrored.Filled.ArrowBack,
124+
imageVector = MultiplatformKickstarterIcons.ArrowBack,
127125
contentDescription = localization.backLabel
128126
)
129127
}

shared/src/commonMain/kotlin/com/multiplatformkickstarter/app/feature/loginsignup/EmailSignUpScreen.kt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@ import androidx.compose.foundation.layout.height
1111
import androidx.compose.foundation.layout.padding
1212
import androidx.compose.foundation.shape.RoundedCornerShape
1313
import androidx.compose.foundation.text.KeyboardOptions
14-
import androidx.compose.material.icons.Icons
15-
import androidx.compose.material.icons.automirrored.filled.ArrowBack
1614
import androidx.compose.material3.Button
1715
import androidx.compose.material3.ButtonDefaults
1816
import androidx.compose.material3.ExperimentalMaterial3Api
@@ -38,7 +36,7 @@ import androidx.compose.ui.text.input.TextFieldValue
3836
import androidx.compose.ui.text.style.TextAlign
3937
import androidx.compose.ui.unit.dp
4038
import cafe.adriel.voyager.core.screen.Screen
41-
import cafe.adriel.voyager.koin.getScreenModel
39+
import cafe.adriel.voyager.koin.koinScreenModel
4240
import cafe.adriel.voyager.navigator.LocalNavigator
4341
import cafe.adriel.voyager.navigator.currentOrThrow
4442
import com.multiplatformkickstarter.app.feature.loginsignup.viewmodels.EmailSignUpSideEffects
@@ -60,7 +58,7 @@ class EmailSignUpScreen : Screen {
6058
MultiplatformKickstarterTheme {
6159
val localization = getCurrentLocalization()
6260
val snackbarHostState = remember { SnackbarHostState() }
63-
val viewModel = getScreenModel<EmailSignUpViewModel>()
61+
val viewModel = koinScreenModel<EmailSignUpViewModel>()
6462

6563
SetupSideEffects(viewModel, snackbarHostState)
6664
EmailSignUpView(viewModel, snackbarHostState, localization)
@@ -111,7 +109,7 @@ fun EmailSignUpView(viewModel: EmailSignUpViewModel, snackbarHostState: Snackbar
111109
navigationIcon = {
112110
IconButton(onClick = { currentNavigator.pop() }) {
113111
Icon(
114-
imageVector = Icons.AutoMirrored.Filled.ArrowBack,
112+
imageVector = MultiplatformKickstarterIcons.ArrowBack,
115113
contentDescription = localization.backLabel
116114
)
117115
}

0 commit comments

Comments
 (0)