Skip to content

Commit 3303e03

Browse files
committed
Integrate sample app
1 parent b748140 commit 3303e03

35 files changed

+892
-4
lines changed

build.gradle.kts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
plugins {
22
id("root.publication")
33
//trick: for the same plugin versions in all sub-modules
4-
alias(libs.plugins.androidLibrary).apply(false)
5-
alias(libs.plugins.kotlinMultiplatform).apply(false)
4+
alias(libs.plugins.androidLibrary) apply false
5+
alias(libs.plugins.kotlinMultiplatform) apply false
6+
alias(libs.plugins.jetbrainsCompose) apply false
7+
alias(libs.plugins.androidApplication) apply false
8+
alias(libs.plugins.kotlinxSerialization) apply false
69
}

gradle/libs.versions.toml

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,38 @@
11
[versions]
22
agp = "8.0.2"
3+
android-minSdk = "24"
4+
android-compileSdk = "34"
5+
android-targetSdk = "34"
6+
androidx-activityCompose = "1.8.2"
7+
jetpack-compose-bom = "2024.02.02"
8+
compose-plugin = "1.6.0"
9+
koin = "3.5.3"
310
kotlin = "1.9.0"
11+
ktor = "2.3.9"
12+
kamel = "0.9.4"
13+
voyager = "1.0.0"
414
nexus-publish = "2.0.0-rc-1"
5-
android-minSdk = "24"
6-
android-compileSdk = "33"
715

816
[libraries]
917
kotlin-test = { module = "org.jetbrains.kotlin:kotlin-test", version.ref = "kotlin" }
1018
nexus-publish = { module = "io.github.gradle-nexus.publish-plugin:io.github.gradle-nexus.publish-plugin.gradle.plugin", version.ref = "nexus-publish" }
19+
compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "jetpack-compose-bom" }
20+
compose-ui-tooling = { module = "androidx.compose.ui:ui-tooling" }
21+
compose-ui-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview" }
22+
androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activityCompose" }
23+
kamel = { module = "media.kamel:kamel-image", version.ref = "kamel" }
24+
koin-core = { module = "io.insert-koin:koin-core", version.ref = "koin" }
25+
ktor-client-core = { module = "io.ktor:ktor-client-core", version.ref = "ktor" }
26+
ktor-client-okhttp = { module = "io.ktor:ktor-client-okhttp", version.ref = "ktor" }
27+
ktor-client-darwin = { module = "io.ktor:ktor-client-darwin", version.ref = "ktor" }
28+
ktor-client-content-negotiation = { module = "io.ktor:ktor-client-content-negotiation", version.ref = "ktor" }
29+
ktor-serialization-kotlinx-json = { module = "io.ktor:ktor-serialization-kotlinx-json", version.ref = "ktor" }
30+
voyager-navigator = { module = "cafe.adriel.voyager:voyager-navigator", version.ref = "voyager" }
31+
voyager-koin = { module = "cafe.adriel.voyager:voyager-koin", version.ref = "voyager" }
1132

1233
[plugins]
1334
androidLibrary = { id = "com.android.library", version.ref = "agp" }
1435
kotlinMultiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }
36+
jetbrainsCompose = { id = "org.jetbrains.compose", version.ref = "compose-plugin" }
37+
androidApplication = { id = "com.android.application", version.ref = "agp" }
38+
kotlinxSerialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }

samples/ride/build.gradle.kts

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
plugins {
2+
alias(libs.plugins.kotlinMultiplatform)
3+
alias(libs.plugins.androidApplication)
4+
alias(libs.plugins.jetbrainsCompose)
5+
alias(libs.plugins.kotlinxSerialization)
6+
}
7+
8+
kotlin {
9+
androidTarget {
10+
compilations.all {
11+
kotlinOptions {
12+
jvmTarget = "11"
13+
}
14+
}
15+
}
16+
17+
listOf(
18+
iosX64(),
19+
iosArm64(),
20+
iosSimulatorArm64()
21+
).forEach { iosTarget ->
22+
iosTarget.binaries.framework {
23+
baseName = "NodalRideSample"
24+
isStatic = true
25+
}
26+
}
27+
28+
29+
sourceSets {
30+
val commonMain by getting {
31+
dependencies {
32+
implementation(compose.runtime)
33+
implementation(compose.foundation)
34+
implementation(compose.material)
35+
implementation(compose.components.resources)
36+
37+
implementation(libs.ktor.client.core)
38+
implementation(libs.ktor.client.content.negotiation)
39+
implementation(libs.ktor.serialization.kotlinx.json)
40+
41+
implementation(libs.kamel)
42+
implementation(libs.koin.core)
43+
implementation(libs.voyager.navigator)
44+
implementation(libs.voyager.koin)
45+
}
46+
}
47+
val androidMain by getting {
48+
dependencies {
49+
implementation(project.dependencies.platform(libs.compose.bom))
50+
implementation(libs.compose.ui.tooling.preview)
51+
implementation(libs.androidx.activity.compose)
52+
implementation(libs.ktor.client.okhttp)
53+
}
54+
}
55+
// val iosMain by getting {
56+
// dependencies {
57+
// implementation(libs.ktor.client.darwin)
58+
// }
59+
// }
60+
val commonTest by getting {
61+
dependencies {
62+
implementation(libs.kotlin.test)
63+
}
64+
}
65+
}
66+
}
67+
68+
android {
69+
namespace = "com.jetbrains.kmpapp"
70+
compileSdk = libs.versions.android.compileSdk.get().toInt()
71+
72+
sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml")
73+
sourceSets["main"].res.srcDirs("src/androidMain/res")
74+
sourceSets["main"].resources.srcDirs("src/commonMain/resources")
75+
76+
defaultConfig {
77+
applicationId = "com.jetbrains.kmpapp"
78+
minSdk = libs.versions.android.minSdk.get().toInt()
79+
targetSdk = libs.versions.android.targetSdk.get().toInt()
80+
versionCode = 1
81+
versionName = "1.0"
82+
}
83+
packaging {
84+
resources {
85+
excludes += "/META-INF/{AL2.0,LGPL2.1}"
86+
}
87+
}
88+
buildTypes {
89+
getByName("release") {
90+
isMinifyEnabled = false
91+
}
92+
}
93+
compileOptions {
94+
sourceCompatibility = JavaVersion.VERSION_11
95+
targetCompatibility = JavaVersion.VERSION_11
96+
}
97+
dependencies {
98+
debugImplementation(libs.compose.ui.tooling)
99+
}
100+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
3+
4+
<uses-permission android:name="android.permission.INTERNET"/>
5+
6+
<application
7+
android:allowBackup="true"
8+
android:icon="@mipmap/ic_launcher"
9+
android:label="@string/app_name"
10+
android:name=".RideApp"
11+
android:roundIcon="@mipmap/ic_launcher_round"
12+
android:supportsRtl="true"
13+
android:theme="@android:style/Theme.Material.Light.NoActionBar">
14+
<activity
15+
android:exported="true"
16+
android:configChanges="orientation|screenSize|screenLayout|keyboardHidden|mnc|colorMode|density|fontScale|fontWeightAdjustment|keyboard|layoutDirection|locale|mcc|navigation|smallestScreenSize|touchscreen|uiMode"
17+
android:name=".MainActivity">
18+
<intent-filter>
19+
<action android:name="android.intent.action.MAIN" />
20+
21+
<category android:name="android.intent.category.LAUNCHER" />
22+
</intent-filter>
23+
</activity>
24+
</application>
25+
26+
</manifest>
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.jetbrains.kmpapp
2+
3+
import android.os.Bundle
4+
import androidx.activity.ComponentActivity
5+
import androidx.activity.compose.setContent
6+
import androidx.compose.runtime.Composable
7+
import androidx.compose.ui.tooling.preview.Preview
8+
9+
class MainActivity : ComponentActivity() {
10+
override fun onCreate(savedInstanceState: Bundle?) {
11+
super.onCreate(savedInstanceState)
12+
13+
setContent {
14+
App()
15+
}
16+
}
17+
}
18+
19+
@Preview
20+
@Composable
21+
fun AppAndroidPreview() {
22+
App()
23+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.jetbrains.kmpapp
2+
3+
import android.app.Application
4+
import com.jetbrains.kmpapp.di.initKoin
5+
6+
class RideApp : Application() {
7+
override fun onCreate() {
8+
super.onCreate()
9+
initKoin()
10+
}
11+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
xmlns:aapt="http://schemas.android.com/aapt"
3+
android:width="108dp"
4+
android:height="108dp"
5+
android:viewportWidth="108"
6+
android:viewportHeight="108">
7+
<path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
8+
<aapt:attr name="android:fillColor">
9+
<gradient
10+
android:endX="85.84757"
11+
android:endY="92.4963"
12+
android:startX="42.9492"
13+
android:startY="49.59793"
14+
android:type="linear">
15+
<item
16+
android:color="#44000000"
17+
android:offset="0.0" />
18+
<item
19+
android:color="#00000000"
20+
android:offset="1.0" />
21+
</gradient>
22+
</aapt:attr>
23+
</path>
24+
<path
25+
android:fillColor="#FFFFFF"
26+
android:fillType="nonZero"
27+
android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
28+
android:strokeWidth="1"
29+
android:strokeColor="#00000000" />
30+
</vector>

0 commit comments

Comments
 (0)