Skip to content

Commit 496ca35

Browse files
authored
Upgraded and new project structure (#15)
* Upgraded libraries versions and gradle wrapper * moved to new standard module * added missing desktop dependencies * removed unneeded files * corrected versioning for android and desktop * added run config for desktop * updated README.md * missing new line * ktlint issues * ktlint issues
1 parent 3cd6e38 commit 496ca35

File tree

91 files changed

+623
-357
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

91 files changed

+623
-357
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,5 @@ google-services.json
3737
xcuserdata
3838

3939
*.klib
40-
.kotlin/metadata
40+
.kotlin/metadata
41+
.kotlin/sessions

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
-->
66

77
[![Build](https://github.com/MultiplatformKickstarter/Adoptme/actions/workflows/basic.yml/badge.svg)](https://github.com/multiplatformkickstarter/Adoptme/actions/workflows/basic.yml)
8-
[![Kotlin](https://img.shields.io/badge/Kotlin-1.9.22-blue.svg?style=flat&logo=kotlin)](https://kotlinlang.org)
8+
[![Kotlin](https://img.shields.io/badge/Kotlin-2.0.0-blue.svg?style=flat&logo=kotlin)](https://kotlinlang.org)
99
![badge-android](http://img.shields.io/badge/platform-android-6EDB8D.svg?style=flat)
1010
![badge-ios](http://img.shields.io/badge/platform-ios-6EDB8D.svg?style=flat)
1111
![badge-desktop](http://img.shields.io/badge/platform-desktop-6EDB8D.svg?style=flat)

androidApp/build.gradle.kts

Lines changed: 0 additions & 81 deletions
This file was deleted.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<component name="ProjectRunConfigurationManager">
2+
<configuration default="false" name="Adoptme [desktopRun]" type="GradleRunConfiguration" factoryName="Gradle" nameIsGenerated="true">
3+
<ExternalSystemSettings>
4+
<option name="executionName" />
5+
<option name="externalProjectPath" value="$PROJECT_DIR$" />
6+
<option name="externalSystemIdString" value="GRADLE" />
7+
<option name="scriptParameters" value="-DmainClass=MainKt --quiet" />
8+
<option name="taskDescriptions">
9+
<list />
10+
</option>
11+
<option name="taskNames">
12+
<list>
13+
<option value="desktopRun" />
14+
</list>
15+
</option>
16+
<option name="vmOptions" />
17+
</ExternalSystemSettings>
18+
<ExternalSystemDebugServerProcess>true</ExternalSystemDebugServerProcess>
19+
<ExternalSystemReattachDebugProcess>true</ExternalSystemReattachDebugProcess>
20+
<DebugAllEnabled>false</DebugAllEnabled>
21+
<RunAsTest>false</RunAsTest>
22+
<method v="2" />
23+
</configuration>
24+
</component>

composeApp/build.gradle.kts

Lines changed: 252 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,252 @@
1+
2+
import org.jetbrains.compose.desktop.application.dsl.TargetFormat
3+
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
4+
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
5+
6+
plugins {
7+
alias(libs.plugins.kotlinMultiplatform)
8+
alias(libs.plugins.android.application)
9+
alias(libs.plugins.compose.multiplatform)
10+
alias(libs.plugins.compose.compiler)
11+
}
12+
13+
val versionNum: String? by project
14+
val versionMajor = properties["multiplatformkickstarter.version.major"].toString().toInt()
15+
val versionMinor = properties["multiplatformkickstarter.version.minor"].toString().toInt()
16+
val versionPatch = properties["multiplatformkickstarter.version.patch"].toString().toInt()
17+
18+
fun versionCode(): Int {
19+
versionNum?.let {
20+
return (versionMajor * 1000000) + (versionMinor * 1000) + it.toInt()
21+
} ?: return 1
22+
}
23+
24+
kotlin {
25+
/*@OptIn(ExperimentalWasmDsl::class)
26+
wasmJs {
27+
moduleName = "composeApp"
28+
browser {
29+
commonWebpackConfig {
30+
outputFileName = "composeApp.js"
31+
devServer = (devServer ?: KotlinWebpackConfig.DevServer()).apply {
32+
static = (static ?: mutableListOf()).apply {
33+
// Serve sources to debug inside browser
34+
add(project.projectDir.path)
35+
}
36+
}
37+
}
38+
}
39+
binaries.executable()
40+
}*/
41+
androidTarget {
42+
@OptIn(ExperimentalKotlinGradlePluginApi::class)
43+
compilerOptions {
44+
jvmTarget.set(JvmTarget.JVM_17)
45+
}
46+
}
47+
jvm("desktop")
48+
listOf(
49+
iosX64(),
50+
iosArm64(),
51+
iosSimulatorArm64()
52+
).forEach { iosTarget ->
53+
iosTarget.binaries.framework {
54+
baseName = "ComposeApp"
55+
isStatic = true
56+
}
57+
}
58+
sourceSets {
59+
val desktopMain by getting
60+
androidMain.dependencies {
61+
implementation(compose.preview)
62+
implementation(libs.androidx.activity.compose)
63+
implementation(libs.ktor.client.android)
64+
}
65+
commonMain.dependencies {
66+
implementation(compose.runtime)
67+
implementation(compose.foundation)
68+
implementation(compose.material)
69+
implementation(compose.ui)
70+
implementation(compose.components.resources)
71+
implementation(compose.components.uiToolingPreview)
72+
implementation(project(":shared"))
73+
74+
// Dependency Injection
75+
implementation(libs.koin.core)
76+
implementation(libs.koin.test)
77+
implementation(libs.koin.compose)
78+
}
79+
desktopMain.dependencies {
80+
implementation(compose.desktop.currentOs)
81+
implementation(libs.skiko)
82+
implementation(compose.ui)
83+
implementation(compose.foundation)
84+
implementation(compose.material)
85+
implementation(compose.material3)
86+
implementation(compose.animation)
87+
implementation(compose.materialIconsExtended)
88+
@OptIn(org.jetbrains.compose.ExperimentalComposeLibrary::class)
89+
implementation(compose.components.resources)
90+
implementation(libs.skiko.macos.arm64)
91+
92+
implementation(libs.androidx.compose.ui.util)
93+
94+
implementation(libs.kotlinx.serialization.json)
95+
implementation(libs.kotlinx.datetime)
96+
implementation(libs.kotlinx.coroutines.core)
97+
implementation(libs.kotlinx.coroutines.swingui)
98+
implementation(libs.ktor.client)
99+
implementation(libs.ktor.client.java)
100+
implementation(libs.ktor.client.content.negotiation)
101+
implementation(libs.ktor.server.serialization.kotlinx.json)
102+
103+
// Kamel for image loading
104+
implementation(libs.kamel)
105+
106+
// Voyager for Navigation
107+
implementation(libs.voyager.navigator)
108+
implementation(libs.voyager.bottom.sheet.navigator)
109+
implementation(libs.voyager.tab.navigator)
110+
implementation(libs.voyager.transitions)
111+
implementation(libs.voyager.koin)
112+
113+
// Multiplatform Settings to encrypted key-value data
114+
implementation(libs.multiplatform.settings.no.arg)
115+
implementation(libs.multiplatform.settings.serialization)
116+
117+
// Dependency Injection
118+
implementation(libs.koin.core)
119+
implementation(libs.koin.test)
120+
implementation(libs.koin.compose)
121+
122+
// Logging
123+
implementation(libs.kermit)
124+
}
125+
}
126+
}
127+
128+
android {
129+
namespace = "com.multiplatformkickstarter.app.android"
130+
compileSdk = libs.versions.android.compileSdk.get().toInt()
131+
132+
sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml")
133+
sourceSets["main"].res.srcDirs("src/androidMain/res")
134+
sourceSets["main"].resources.srcDirs("src/commonMain/resources")
135+
136+
defaultConfig {
137+
applicationId = "com.multiplatformkickstarter.app.android"
138+
minSdk = libs.versions.android.minSdk.get().toInt()
139+
targetSdk = libs.versions.android.targetSdk.get().toInt()
140+
versionCode = versionCode()
141+
versionName = "$versionMajor.$versionMinor.$versionPatch"
142+
}
143+
packaging {
144+
resources {
145+
excludes += "/META-INF/{AL2.0,LGPL2.1}"
146+
}
147+
}
148+
buildTypes {
149+
getByName("release") {
150+
isMinifyEnabled = false
151+
}
152+
}
153+
compileOptions {
154+
sourceCompatibility = JavaVersion.VERSION_17
155+
targetCompatibility = JavaVersion.VERSION_17
156+
}
157+
buildFeatures {
158+
compose = true
159+
}
160+
dependencies {
161+
implementation(project(":shared"))
162+
163+
implementation(platform(libs.compose.bom))
164+
165+
implementation(libs.androidx.core.ktx)
166+
implementation(libs.androidx.core.splashscreen)
167+
implementation(libs.androidx.tracing.ktx)
168+
169+
implementation(libs.androidx.ui)
170+
implementation(libs.androidx.material)
171+
implementation(libs.androidx.material3)
172+
implementation(libs.androidx.material3.window.size)
173+
implementation(libs.androidx.ui.tooling.preview)
174+
175+
implementation(libs.androidx.activity.compose)
176+
implementation(libs.accompanist.systemuicontroller)
177+
178+
implementation(libs.koin.core)
179+
implementation(libs.koin.android)
180+
181+
implementation(platform(libs.firebase.bom))
182+
implementation(libs.firebase.analytics.ktx)
183+
184+
testImplementation(libs.junit)
185+
testImplementation(libs.koin.test)
186+
androidTestImplementation(libs.androidx.junit)
187+
androidTestImplementation(libs.androidx.espresso.core)
188+
189+
// androidTestImplementation("androidx.compose.ui:ui-test-junit4")
190+
debugImplementation(libs.androidx.ui.tooling)
191+
}
192+
}
193+
194+
compose.desktop {
195+
application {
196+
mainClass = "MainKt"
197+
198+
nativeDistributions {
199+
targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
200+
packageName = "com.multiplatformkickstarter.app"
201+
packageVersion = "$versionMajor.$versionMinor.$versionPatch"
202+
}
203+
}
204+
205+
dependencies {
206+
implementation(compose.desktop.currentOs)
207+
implementation(libs.skiko)
208+
implementation(compose.ui)
209+
implementation(compose.foundation)
210+
implementation(compose.material)
211+
implementation(compose.material3)
212+
implementation(compose.animation)
213+
implementation(compose.materialIconsExtended)
214+
@OptIn(org.jetbrains.compose.ExperimentalComposeLibrary::class)
215+
implementation(compose.components.resources)
216+
implementation(libs.skiko.macos.arm64)
217+
implementation(project(":shared"))
218+
219+
implementation(libs.androidx.compose.ui.util)
220+
221+
implementation(libs.kotlinx.serialization.json)
222+
implementation(libs.kotlinx.datetime)
223+
implementation(libs.kotlinx.coroutines.core)
224+
implementation(libs.kotlinx.coroutines.swingui)
225+
implementation(libs.ktor.client)
226+
implementation(libs.ktor.client.java)
227+
implementation(libs.ktor.client.content.negotiation)
228+
implementation(libs.ktor.server.serialization.kotlinx.json)
229+
230+
// Kamel for image loading
231+
implementation(libs.kamel)
232+
233+
// Voyager for Navigation
234+
implementation(libs.voyager.navigator)
235+
implementation(libs.voyager.bottom.sheet.navigator)
236+
implementation(libs.voyager.tab.navigator)
237+
implementation(libs.voyager.transitions)
238+
implementation(libs.voyager.koin)
239+
240+
// Multiplatform Settings to encrypted key-value data
241+
implementation(libs.multiplatform.settings.no.arg)
242+
implementation(libs.multiplatform.settings.serialization)
243+
244+
// Dependency Injection
245+
implementation(libs.koin.core)
246+
implementation(libs.koin.test)
247+
implementation(libs.koin.compose)
248+
249+
// Logging
250+
implementation(libs.kermit)
251+
}
252+
}

0 commit comments

Comments
 (0)