Skip to content

Commit ef0afeb

Browse files
committed
Initial end commit
1 parent 55d3b44 commit ef0afeb

28 files changed

Lines changed: 151 additions & 68 deletions

File tree

get-started/androidApp/build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ android {
5353
}
5454

5555
dependencies {
56+
implementation(projects.shared)
57+
5658
val composeBom = platform(libs.compose.bom)
5759
implementation(composeBom)
5860

get-started/androidApp/src/main/java/com/example/kmp/getstarted/android/MainActivity.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import androidx.compose.material3.Scaffold
1010
import androidx.compose.material3.Text
1111
import androidx.compose.ui.Alignment
1212
import androidx.compose.ui.Modifier
13+
import com.example.kmp.shared.platform
1314

1415
class MainActivity : ComponentActivity() {
1516
override fun onCreate(savedInstanceState: Bundle?) {
@@ -23,7 +24,7 @@ class MainActivity : ComponentActivity() {
2324
.padding(innerPadding),
2425
contentAlignment = Alignment.Center,
2526
) {
26-
Text("Hello KMP")
27+
Text("Hello ${platform()}")
2728
}
2829
}
2930
}

get-started/build.gradle.kts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ plugins {
2222
alias(libs.plugins.kotlinAndroid) apply false
2323
alias(libs.plugins.kotlinCompose) apply false
2424
alias(libs.plugins.spotless) apply false
25+
alias(libs.plugins.kotlinMultiplatform) apply false
26+
alias(libs.plugins.androidKotlinMultiplatformLibrary) apply false
27+
alias(libs.plugins.skie) apply false
2528
}
2629

2730
subprojects {

get-started/gradle/libs.versions.toml

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,12 @@ kotlinx-coroutines = "1.10.1"
2525
spotless = "7.0.2"
2626
composeBom = "2025.01.00"
2727
ktlint = "1.3.1"
28-
28+
kotlinStdlib = "2.1.0"
29+
kotlinTest = "2.1.0"
30+
runner = "1.6.2"
31+
core = "1.6.1"
32+
junit = "1.2.1"
33+
skie = "0.10.1"
2934

3035
[libraries]
3136
androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activityCompose" }
@@ -39,10 +44,18 @@ compose-material3 = { module = "androidx.compose.material3:material3" }
3944
## Compose BOM End ##
4045

4146
kotlinx-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "kotlinx-coroutines" }
47+
kotlin-stdlib = { group = "org.jetbrains.kotlin", name = "kotlin-stdlib", version.ref = "kotlinStdlib" }
48+
kotlin-test = { group = "org.jetbrains.kotlin", name = "kotlin-test", version.ref = "kotlinTest" }
49+
androidx-runner = { group = "androidx.test", name = "runner", version.ref = "runner" }
50+
androidx-core = { group = "androidx.test", name = "core", version.ref = "core" }
51+
androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junit" }
4252

4353
[plugins]
54+
skie = { id = "co.touchlab.skie", version.ref = "skie" }
4455
androidApplication = { id = "com.android.application", version.ref = "agp" }
4556
kotlinAndroid = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
4657
kotlinxSerialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
4758
kotlinCompose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
4859
spotless = { id = "com.diffplug.spotless", version.ref = "spotless" }
60+
kotlinMultiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }
61+
androidKotlinMultiplatformLibrary = { id = "com.android.kotlin.multiplatform.library", version.ref = "agp" }

get-started/iosApp/KMPGetStartedCodelab.xcodeproj/project.pbxproj

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
isa = PBXNativeTarget;
5353
buildConfigurationList = 2DCC1BFC2D4100C80017AC11 /* Build configuration list for PBXNativeTarget "KMPGetStartedCodelab" */;
5454
buildPhases = (
55-
2DCC1BFF2D4101410017AC11 /* ShellScript */,
55+
2DCC1BFF2D4101410017AC11 /* Run Script */,
5656
2DCC1BEA2D4100C60017AC11 /* Sources */,
5757
2DCC1BEB2D4100C60017AC11 /* Frameworks */,
5858
2DCC1BEC2D4100C60017AC11 /* Resources */,
@@ -116,7 +116,7 @@
116116
/* End PBXResourcesBuildPhase section */
117117

118118
/* Begin PBXShellScriptBuildPhase section */
119-
2DCC1BFF2D4101410017AC11 /* ShellScript */ = {
119+
2DCC1BFF2D4101410017AC11 /* Run Script */ = {
120120
isa = PBXShellScriptBuildPhase;
121121
buildActionMask = 2147483647;
122122
files = (
@@ -125,6 +125,7 @@
125125
);
126126
inputPaths = (
127127
);
128+
name = "Run Script";
128129
outputFileListPaths = (
129130
);
130131
outputPaths = (
@@ -183,7 +184,7 @@
183184
DEBUG_INFORMATION_FORMAT = dwarf;
184185
ENABLE_STRICT_OBJC_MSGSEND = YES;
185186
ENABLE_TESTABILITY = YES;
186-
ENABLE_USER_SCRIPT_SANDBOXING = YES;
187+
ENABLE_USER_SCRIPT_SANDBOXING = NO;
187188
GCC_C_LANGUAGE_STANDARD = gnu17;
188189
GCC_DYNAMIC_NO_PIC = NO;
189190
GCC_NO_COMMON_BLOCKS = YES;
@@ -246,7 +247,7 @@
246247
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
247248
ENABLE_NS_ASSERTIONS = NO;
248249
ENABLE_STRICT_OBJC_MSGSEND = YES;
249-
ENABLE_USER_SCRIPT_SANDBOXING = YES;
250+
ENABLE_USER_SCRIPT_SANDBOXING = NO;
250251
GCC_C_LANGUAGE_STANDARD = gnu17;
251252
GCC_NO_COMMON_BLOCKS = YES;
252253
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
@@ -274,6 +275,7 @@
274275
CURRENT_PROJECT_VERSION = 1;
275276
DEVELOPMENT_ASSET_PATHS = "\"KMPGetStartedCodelab/Preview Content\"";
276277
ENABLE_PREVIEWS = YES;
278+
ENABLE_USER_SCRIPT_SANDBOXING = NO;
277279
GENERATE_INFOPLIST_FILE = YES;
278280
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
279281
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
@@ -302,6 +304,7 @@
302304
CURRENT_PROJECT_VERSION = 1;
303305
DEVELOPMENT_ASSET_PATHS = "\"KMPGetStartedCodelab/Preview Content\"";
304306
ENABLE_PREVIEWS = YES;
307+
ENABLE_USER_SCRIPT_SANDBOXING = NO;
305308
GENERATE_INFOPLIST_FILE = YES;
306309
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
307310
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;

get-started/iosApp/KMPGetStartedCodelab/ContentView.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,15 @@
55
//
66

77
import SwiftUI
8+
import sharedKit
89

910
struct ContentView: View {
1011
var body: some View {
1112
VStack {
1213
Image(systemName: "globe")
1314
.imageScale(.large)
1415
.foregroundStyle(.tint)
15-
Text("Hello, KMP!")
16+
Text("Hello, \(platform())!")
1617
}
1718
.padding()
1819
}

get-started/settings.gradle.kts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,5 @@ dependencyResolutionManagement {
4444
}
4545

4646
rootProject.name = "KmpGetStartedCodelab"
47-
include(":androidApp")
47+
include(":androidApp")
48+
include(":shared")

migrate-room/androidApp/build.gradle.kts

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ plugins {
1919
alias(libs.plugins.kotlinCompose)
2020
alias(libs.plugins.kotlinxSerialization)
2121
alias(libs.plugins.ksp)
22-
alias(libs.plugins.room)
2322
alias(libs.plugins.spotless)
2423
alias(libs.plugins.hilt)
2524
}
@@ -69,9 +68,6 @@ android {
6968
languageVersion = JavaLanguageVersion.of(17)
7069
}
7170
}
72-
ksp {
73-
arg("room.generateKotlin", "true")
74-
}
7571
}
7672

7773
dependencies {
@@ -93,8 +89,7 @@ dependencies {
9389
debugImplementation(libs.compose.ui.tooling)
9490

9591
// TODO switch this dependency to KMP-ready version
96-
implementation(libs.androidx.room.ktx)
97-
ksp(libs.androidx.room.compiler)
92+
implementation(libs.androidx.room.runtime)
9893

9994
implementation(libs.hilt.android)
10095
ksp(libs.hilt.compiler)
@@ -111,7 +106,3 @@ dependencies {
111106
androidTestImplementation(libs.androidx.test.junit)
112107
androidTestImplementation(libs.kotlinx.coroutines.test)
113108
}
114-
115-
room {
116-
schemaDirectory("$projectDir/schemas")
117-
}

migrate-room/androidApp/src/main/kotlin/com/example/fruitties/kmptutorial/android/di/DatabaseModule.kt

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@
1616
package com.example.fruitties.kmptutorial.android.di
1717

1818
import android.content.Context
19-
import androidx.room.Room
2019
import com.example.fruitties.kmptutorial.android.database.AppDatabase
20+
import com.example.fruitties.kmptutorial.android.database.buildAppDatabase
21+
import com.example.fruitties.kmptutorial.android.database.getDatabaseBuilder
2122
import dagger.Module
2223
import dagger.Provides
2324
import dagger.hilt.InstallIn
@@ -31,13 +32,13 @@ internal object DatabaseModule {
3132

3233
@Provides
3334
@Singleton
34-
fun providesAppDatabase(@ApplicationContext context: Context): AppDatabase = Room
35-
.databaseBuilder(context, AppDatabase::class.java, "fruits.db")
36-
.build()
35+
fun providesAppDatabase(@ApplicationContext context: Context): AppDatabase {
36+
return getDatabaseBuilder(context).buildAppDatabase()
37+
}
3738

3839
@Provides
3940
fun providesFruittieDao(appDatabase: AppDatabase) = appDatabase.fruittieDao()
4041

4142
@Provides
4243
fun providesCartDao(appDatabase: AppDatabase) = appDatabase.cartDao()
43-
}
44+
}

migrate-room/androidApp/src/main/kotlin/com/example/fruitties/kmptutorial/android/model/Fruittie.kt

Lines changed: 0 additions & 28 deletions
This file was deleted.

0 commit comments

Comments
 (0)