File tree Expand file tree Collapse file tree 7 files changed +123
-9
lines changed
kotlin/com/example/kmp/snippets Expand file tree Collapse file tree 7 files changed +123
-9
lines changed Original file line number Diff line number Diff line change
1
+ /build
Original file line number Diff line number Diff line change
1
+ plugins {
2
+ alias(libs.plugins.android.application)
3
+ alias(libs.plugins.kotlin.android)
4
+ alias(libs.plugins.compose.compiler)
5
+ }
6
+
7
+ android {
8
+ namespace = " com.example.kmp.snippets"
9
+ compileSdk = libs.versions.compileSdk.get().toInt()
10
+
11
+ defaultConfig {
12
+ applicationId = " com.example.kmp.snippets"
13
+ minSdk = libs.versions.minSdk.get().toInt()
14
+ targetSdk = libs.versions.targetSdk.get().toInt()
15
+ versionCode = 1
16
+ versionName = " 1.0"
17
+
18
+ testInstrumentationRunner = " androidx.test.runner.AndroidJUnitRunner"
19
+ }
20
+
21
+ buildTypes {
22
+ release {
23
+ isMinifyEnabled = false
24
+ proguardFiles(
25
+ getDefaultProguardFile(" proguard-android-optimize.txt" ),
26
+ " proguard-rules.pro"
27
+ )
28
+ }
29
+ }
30
+
31
+ compileOptions {
32
+ sourceCompatibility = JavaVersion .VERSION_17
33
+ targetCompatibility = JavaVersion .VERSION_17
34
+ }
35
+
36
+ kotlin {
37
+ jvmToolchain(17 )
38
+ }
39
+
40
+ buildFeatures {
41
+ compose = true
42
+ }
43
+ }
44
+
45
+ dependencies {
46
+ val composeBom = project.dependencies.platform(libs.androidx.compose.bom)
47
+ implementation(composeBom)
48
+ implementation(project(" :kmp:shared" ))
49
+
50
+ implementation(libs.androidx.compose.runtime)
51
+ implementation(libs.androidx.compose.ui)
52
+ implementation(libs.androidx.compose.foundation)
53
+ implementation(libs.androidx.compose.foundation.layout)
54
+ implementation(libs.androidx.compose.ui.util)
55
+ implementation(libs.androidx.compose.material)
56
+ implementation(libs.androidx.lifecycle.runtime)
57
+ implementation(libs.androidx.lifecycle.viewModelCompose)
58
+ }
Original file line number Diff line number Diff line change
1
+ # Add project specific ProGuard rules here.
2
+ # You can control the set of applied configuration files using the
3
+ # proguardFiles setting in build.gradle.
4
+ #
5
+ # For more details, see
6
+ # http://developer.android.com/guide/developing/tools/proguard.html
7
+
8
+ # If your project uses WebView with JS, uncomment the following
9
+ # and specify the fully qualified class name to the JavaScript interface
10
+ # class:
11
+ #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12
+ # public *;
13
+ #}
14
+
15
+ # Uncomment this to preserve the line number information for
16
+ # debugging stack traces.
17
+ #-keepattributes SourceFile,LineNumberTable
18
+
19
+ # If you keep the line number information, uncomment this to
20
+ # hide the original source file name.
21
+ #-renamesourcefileattribute SourceFile
Original file line number Diff line number Diff line change
1
+ <?xml version =" 1.0" encoding =" utf-8" ?>
2
+ <manifest xmlns : android =" http://schemas.android.com/apk/res/android" />
Original file line number Diff line number Diff line change
1
+ /*
2
+ * Copyright 2025 The Android Open Source Project
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * https://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ package com.example.kmp.snippets
18
+
19
+ import androidx.compose.runtime.Composable
20
+ import androidx.lifecycle.viewmodel.compose.viewModel
21
+
22
+ // [START android_kmp_viewmodel_screen]
23
+ // androidApp/ui/MainScreen.kt
24
+
25
+ @Composable
26
+ fun MainScreen (
27
+ viewModel : MainViewModel = viewModel(
28
+ factory = mainViewModelFactory,
29
+ ),
30
+ ) {
31
+ // observe the viewModel state
32
+ }
33
+ // [END android_kmp_viewmodel_screen]
Original file line number Diff line number Diff line change @@ -5,14 +5,13 @@ plugins {
5
5
}
6
6
7
7
kotlin {
8
-
9
8
// Target declarations - add or remove as needed below. These define
10
9
// which platforms this KMP module supports.
11
10
// See: https://kotlinlang.org/docs/multiplatform-discover-project.html#targets
12
11
androidLibrary {
13
- namespace = " com.example.kmp.snippets"
14
- compileSdk = 36
15
- minSdk = 24
12
+ namespace = " com.example.kmp.snippets.shared "
13
+ compileSdk = libs.versions.compileSdk.get().toInt()
14
+ minSdk = libs.versions.minSdk.get().toInt()
16
15
17
16
withHostTestBuilder {
18
17
}
@@ -24,6 +23,8 @@ kotlin {
24
23
}
25
24
}
26
25
26
+ jvmToolchain(17 )
27
+
27
28
// For iOS targets, this is also where you should
28
29
// configure native binary output. For more information, see:
29
30
// https://kotlinlang.org/docs/multiplatform-build-native-binaries.html#build-xcframeworks
@@ -64,9 +65,7 @@ kotlin {
64
65
65
66
androidMain {
66
67
dependencies {
67
- // Add Android-specific dependencies here. Note that this source set depends on
68
- // commonMain by default and will correctly pull the Android artifacts of any KMP
69
- // dependencies declared in commonMain.
68
+
70
69
}
71
70
}
72
71
@@ -88,5 +87,4 @@ kotlin {
88
87
}
89
88
}
90
89
}
91
-
92
90
}
Original file line number Diff line number Diff line change @@ -39,5 +39,6 @@ include(
39
39
" :identity:credentialmanager" ,
40
40
" :xr" ,
41
41
" :watchfacepush:validator" ,
42
- " :kmp:shared" ,
42
+ " :kmp:androidApp" ,
43
+ " :kmp:shared"
43
44
)
You can’t perform that action at this time.
0 commit comments