mirror of
https://github.com/hmalik144/KotlinMultiplatformWeather.git
synced 2025-12-10 03:05:31 +00:00
Initial commit
This commit is contained in:
39
shared/KotlinMultiplatformWeather.shared.commonMain.iml
Normal file
39
shared/KotlinMultiplatformWeather.shared.commonMain.iml
Normal file
@@ -0,0 +1,39 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="kotlin-language" name="Kotlin">
|
||||
<configuration version="3" platform="Common (experimental) " allPlatforms="JS []/JVM [1.6]/Native []/Native [general]" useProjectSettings="false" isTestModule="false" externalProjectId=":shared">
|
||||
<newMppModelJpsModuleKind>SOURCE_SET_HOLDER</newMppModelJpsModuleKind>
|
||||
<compilerSettings />
|
||||
<compilerArguments>
|
||||
<option name="languageVersion" value="1.3" />
|
||||
<option name="apiVersion" value="1.3" />
|
||||
<option name="pluginOptions">
|
||||
<array>
|
||||
<option value="plugin:org.jetbrains.kotlin.android:experimental=false" />
|
||||
<option value="plugin:org.jetbrains.kotlin.android:enabled=true" />
|
||||
<option value="plugin:org.jetbrains.kotlin.android:defaultCacheImplementation=hashMap" />
|
||||
</array>
|
||||
</option>
|
||||
<option name="pluginClasspaths">
|
||||
<array>
|
||||
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-android-extensions/1.3.50/f16428b9ce307d0f5842bd8ed9af1e43a141edd3/kotlin-android-extensions-1.3.50.jar" />
|
||||
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-compiler-embeddable/1.3.50/1251c1768e5769b06c2487d6f6cf8acf6efb8960/kotlin-compiler-embeddable-1.3.50.jar" />
|
||||
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-scripting-jvm/1.3.50/53f579e1bee3dab3df915d923ad1bb43bc37cd18/kotlin-scripting-jvm-1.3.50.jar" />
|
||||
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-scripting-common/1.3.50/b8e0110c386c08f46a8c5e45b8c64aece1914867/kotlin-scripting-common-1.3.50.jar" />
|
||||
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-reflect/1.3.50/b499f22fd7c3e9c2e5b6c4005221fa47fc7f9a7a/kotlin-reflect-1.3.50.jar" />
|
||||
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.3.50/b529d1738c7e98bbfa36a4134039528f2ce78ebf/kotlin-stdlib-1.3.50.jar" />
|
||||
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-script-runtime/1.3.50/59492b8dfb92522ba0ddb5dd1c4d0ef0a4fca1af/kotlin-script-runtime-1.3.50.jar" />
|
||||
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-daemon-embeddable/1.3.50/5cb93bb33f4c6f833ead0beca4c831668e00cf52/kotlin-daemon-embeddable-1.3.50.jar" />
|
||||
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.intellij.deps/trove4j/1.0.20181211/216c2e14b070f334479d800987affe4054cd563f/trove4j-1.0.20181211.jar" />
|
||||
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlinx/kotlinx-coroutines-core/1.1.1/3d2b7321cdef9ebf9cb7729ea4f75a6f6457df86/kotlinx-coroutines-core-1.1.1.jar" />
|
||||
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.3.50/3d9cd3e1bc7b92e95f43d45be3bfbcf38e36ab87/kotlin-stdlib-common-1.3.50.jar" />
|
||||
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar" />
|
||||
</array>
|
||||
</option>
|
||||
<option name="multiPlatform" value="true" />
|
||||
</compilerArguments>
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
</module>
|
||||
39
shared/KotlinMultiplatformWeather.shared.commonTest.iml
Normal file
39
shared/KotlinMultiplatformWeather.shared.commonTest.iml
Normal file
@@ -0,0 +1,39 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="kotlin-language" name="Kotlin">
|
||||
<configuration version="3" platform="Common (experimental) " allPlatforms="JS []/JVM [1.6]/Native []/Native [general]" useProjectSettings="false" isTestModule="true" externalProjectId=":shared">
|
||||
<newMppModelJpsModuleKind>SOURCE_SET_HOLDER</newMppModelJpsModuleKind>
|
||||
<compilerSettings />
|
||||
<compilerArguments>
|
||||
<option name="languageVersion" value="1.3" />
|
||||
<option name="apiVersion" value="1.3" />
|
||||
<option name="pluginOptions">
|
||||
<array>
|
||||
<option value="plugin:org.jetbrains.kotlin.android:experimental=false" />
|
||||
<option value="plugin:org.jetbrains.kotlin.android:enabled=true" />
|
||||
<option value="plugin:org.jetbrains.kotlin.android:defaultCacheImplementation=hashMap" />
|
||||
</array>
|
||||
</option>
|
||||
<option name="pluginClasspaths">
|
||||
<array>
|
||||
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-android-extensions/1.3.50/f16428b9ce307d0f5842bd8ed9af1e43a141edd3/kotlin-android-extensions-1.3.50.jar" />
|
||||
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-compiler-embeddable/1.3.50/1251c1768e5769b06c2487d6f6cf8acf6efb8960/kotlin-compiler-embeddable-1.3.50.jar" />
|
||||
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-scripting-jvm/1.3.50/53f579e1bee3dab3df915d923ad1bb43bc37cd18/kotlin-scripting-jvm-1.3.50.jar" />
|
||||
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-scripting-common/1.3.50/b8e0110c386c08f46a8c5e45b8c64aece1914867/kotlin-scripting-common-1.3.50.jar" />
|
||||
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-reflect/1.3.50/b499f22fd7c3e9c2e5b6c4005221fa47fc7f9a7a/kotlin-reflect-1.3.50.jar" />
|
||||
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib/1.3.50/b529d1738c7e98bbfa36a4134039528f2ce78ebf/kotlin-stdlib-1.3.50.jar" />
|
||||
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-script-runtime/1.3.50/59492b8dfb92522ba0ddb5dd1c4d0ef0a4fca1af/kotlin-script-runtime-1.3.50.jar" />
|
||||
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-daemon-embeddable/1.3.50/5cb93bb33f4c6f833ead0beca4c831668e00cf52/kotlin-daemon-embeddable-1.3.50.jar" />
|
||||
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.intellij.deps/trove4j/1.0.20181211/216c2e14b070f334479d800987affe4054cd563f/trove4j-1.0.20181211.jar" />
|
||||
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlinx/kotlinx-coroutines-core/1.1.1/3d2b7321cdef9ebf9cb7729ea4f75a6f6457df86/kotlinx-coroutines-core-1.1.1.jar" />
|
||||
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains.kotlin/kotlin-stdlib-common/1.3.50/3d9cd3e1bc7b92e95f43d45be3bfbcf38e36ab87/kotlin-stdlib-common-1.3.50.jar" />
|
||||
<option value="$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.jetbrains/annotations/13.0/919f0dfe192fb4e063e7dacadee7f8bb9a2672a9/annotations-13.0.jar" />
|
||||
</array>
|
||||
</option>
|
||||
<option name="multiPlatform" value="true" />
|
||||
</compilerArguments>
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
</module>
|
||||
33
shared/KotlinMultiplatformWeather.shared.iosMain.iml
Normal file
33
shared/KotlinMultiplatformWeather.shared.iosMain.iml
Normal file
@@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="kotlin-language" name="Kotlin">
|
||||
<configuration version="3" platform="Native (general) " allPlatforms="Native []/Native [general]" useProjectSettings="false" isTestModule="false" externalProjectId=":shared">
|
||||
<dependsOnModuleNames>:shared:commonMain</dependsOnModuleNames>
|
||||
<sourceSets>
|
||||
<sourceSet>KotlinMultiplatformWeather.shared.commonMain</sourceSet>
|
||||
</sourceSets>
|
||||
<newMppModelJpsModuleKind>COMPILATION_AND_SOURCE_SET_HOLDER</newMppModelJpsModuleKind>
|
||||
<compilerSettings />
|
||||
<compilerArguments>
|
||||
<option name="languageVersion" value="1.3" />
|
||||
<option name="apiVersion" value="1.3" />
|
||||
<option name="pluginOptions">
|
||||
<array>
|
||||
<option value="plugin:org.jetbrains.kotlin.android:experimental=false" />
|
||||
<option value="plugin:org.jetbrains.kotlin.android:enabled=true" />
|
||||
<option value="plugin:org.jetbrains.kotlin.android:defaultCacheImplementation=hashMap" />
|
||||
</array>
|
||||
</option>
|
||||
<option name="pluginClasspaths">
|
||||
<array />
|
||||
</option>
|
||||
<option name="multiPlatform" value="true" />
|
||||
<option name="errors">
|
||||
<ArgumentParseErrors />
|
||||
</option>
|
||||
</compilerArguments>
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
</module>
|
||||
35
shared/KotlinMultiplatformWeather.shared.iosTest.iml
Normal file
35
shared/KotlinMultiplatformWeather.shared.iosTest.iml
Normal file
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="kotlin-language" name="Kotlin">
|
||||
<configuration version="3" platform="Native (general) " allPlatforms="Native []/Native [general]" useProjectSettings="false" isTestModule="true" externalProjectId=":shared">
|
||||
<dependsOnModuleNames>:shared:commonTest</dependsOnModuleNames>
|
||||
<sourceSets>
|
||||
<sourceSet>KotlinMultiplatformWeather.shared.commonMain</sourceSet>
|
||||
<sourceSet>KotlinMultiplatformWeather.shared.iosMain</sourceSet>
|
||||
<sourceSet>KotlinMultiplatformWeather.shared.commonTest</sourceSet>
|
||||
</sourceSets>
|
||||
<newMppModelJpsModuleKind>COMPILATION_AND_SOURCE_SET_HOLDER</newMppModelJpsModuleKind>
|
||||
<compilerSettings />
|
||||
<compilerArguments>
|
||||
<option name="languageVersion" value="1.3" />
|
||||
<option name="apiVersion" value="1.3" />
|
||||
<option name="pluginOptions">
|
||||
<array>
|
||||
<option value="plugin:org.jetbrains.kotlin.android:experimental=false" />
|
||||
<option value="plugin:org.jetbrains.kotlin.android:enabled=true" />
|
||||
<option value="plugin:org.jetbrains.kotlin.android:defaultCacheImplementation=hashMap" />
|
||||
</array>
|
||||
</option>
|
||||
<option name="pluginClasspaths">
|
||||
<array />
|
||||
</option>
|
||||
<option name="multiPlatform" value="true" />
|
||||
<option name="errors">
|
||||
<ArgumentParseErrors />
|
||||
</option>
|
||||
</compilerArguments>
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
</module>
|
||||
111
shared/build.gradle.kts
Normal file
111
shared/build.gradle.kts
Normal file
@@ -0,0 +1,111 @@
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
|
||||
|
||||
plugins {
|
||||
kotlin("multiplatform")
|
||||
id("com.android.library")
|
||||
id("kotlin-android-extensions")
|
||||
}
|
||||
group = "me.h_mal"
|
||||
version = "1.0-SNAPSHOT"
|
||||
|
||||
repositories {
|
||||
gradlePluginPortal()
|
||||
google()
|
||||
jcenter()
|
||||
mavenCentral()
|
||||
}
|
||||
kotlin {
|
||||
android()
|
||||
iosX64("ios") {
|
||||
binaries {
|
||||
framework("shared")
|
||||
// framework {
|
||||
// baseName = "shared"
|
||||
// }
|
||||
}
|
||||
}
|
||||
sourceSets {
|
||||
val ktorVersion = "1.2.1"
|
||||
val serializationVersion = "0.11.0"
|
||||
val coroutineVersion = "1.3.7"
|
||||
val kotlin_version = "1.3.50"
|
||||
val commonMain by getting {
|
||||
dependencies {
|
||||
api("org.jetbrains.kotlin:kotlin-stdlib-common")
|
||||
implementation("org.jetbrains.kotlin:kotlin-stdlib-common:$kotlin_version")
|
||||
|
||||
// Coroutines
|
||||
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutineVersion")
|
||||
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core-common:$coroutineVersion")
|
||||
|
||||
// Serialization
|
||||
implementation("org.jetbrains.kotlinx:kotlinx-serialization-runtime-common:$serializationVersion")
|
||||
|
||||
// Ktor
|
||||
implementation("io.ktor:ktor-client-core:$ktorVersion")
|
||||
implementation("io.ktor:ktor-client-json:$ktorVersion")
|
||||
}
|
||||
}
|
||||
val commonTest by getting
|
||||
val androidMain by getting {
|
||||
dependencies {
|
||||
implementation("androidx.core:core-ktx:1.2.0")
|
||||
|
||||
implementation("org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version")
|
||||
implementation("org.jetbrains.kotlin:kotlin-stdlib-common:$kotlin_version")
|
||||
|
||||
// Coroutines
|
||||
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutineVersion")
|
||||
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutineVersion")
|
||||
|
||||
// Serialisation
|
||||
implementation("org.jetbrains.kotlinx:kotlinx-serialization-runtime:$serializationVersion")
|
||||
|
||||
// Ktor
|
||||
implementation("io.ktor:ktor-client-android:$ktorVersion")
|
||||
}
|
||||
}
|
||||
val androidTest by getting
|
||||
val iosMain by getting{
|
||||
dependencies {
|
||||
implementation("org.jetbrains.kotlin:kotlin-stdlib-common:$kotlin_version")
|
||||
|
||||
// Coroutines
|
||||
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core-native:$coroutineVersion")
|
||||
|
||||
// Serialization
|
||||
implementation("org.jetbrains.kotlinx:kotlinx-serialization-runtime-native:$serializationVersion")
|
||||
|
||||
// Ktor
|
||||
implementation("io.ktor:ktor-client-ios:$ktorVersion")
|
||||
}
|
||||
}
|
||||
val iosTest by getting
|
||||
}
|
||||
}
|
||||
android {
|
||||
compileSdkVersion(29)
|
||||
defaultConfig {
|
||||
minSdkVersion(24)
|
||||
targetSdkVersion(29)
|
||||
versionCode = 1
|
||||
versionName = "1.0"
|
||||
}
|
||||
buildTypes {
|
||||
getByName("release") {
|
||||
isMinifyEnabled = false
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
val packForXcode by tasks.creating(Sync::class) {
|
||||
group = "build"
|
||||
val mode = System.getenv("CONFIGURATION") ?: "DEBUG"
|
||||
val framework = kotlin.targets.getByName<KotlinNativeTarget>("ios").binaries.getFramework("shared", mode)
|
||||
inputs.property("mode", mode)
|
||||
dependsOn(framework.linkTask)
|
||||
val targetDir = File(buildDir, "xcode-frameworks")
|
||||
from({ framework.outputDirectory })
|
||||
into(targetDir)
|
||||
}
|
||||
tasks.getByName("build").dependsOn(packForXcode)
|
||||
76
shared/shared.iml
Normal file
76
shared/shared.iml
Normal file
File diff suppressed because one or more lines are too long
5
shared/src/androidMain/kotlin/Dispatcher.kt
Normal file
5
shared/src/androidMain/kotlin/Dispatcher.kt
Normal file
@@ -0,0 +1,5 @@
|
||||
package com.appttude.h_mal.shared
|
||||
|
||||
import kotlinx.coroutines.*
|
||||
|
||||
internal actual val ApplicationDispatcher: CoroutineDispatcher = Dispatchers.Default
|
||||
5
shared/src/androidMain/kotlin/common.kt
Normal file
5
shared/src/androidMain/kotlin/common.kt
Normal file
@@ -0,0 +1,5 @@
|
||||
package com.appttude.h_mal.shared
|
||||
|
||||
actual fun platformName() : String {
|
||||
return "Android"
|
||||
}
|
||||
5
shared/src/commonMain/kotlin/Dispatcher.kt
Normal file
5
shared/src/commonMain/kotlin/Dispatcher.kt
Normal file
@@ -0,0 +1,5 @@
|
||||
package com.appttude.h_mal.shared
|
||||
|
||||
import kotlinx.coroutines.*
|
||||
|
||||
internal expect val ApplicationDispatcher: CoroutineDispatcher
|
||||
7
shared/src/commonMain/kotlin/common.kt
Normal file
7
shared/src/commonMain/kotlin/common.kt
Normal file
@@ -0,0 +1,7 @@
|
||||
package com.appttude.h_mal.shared
|
||||
|
||||
expect fun platformName() : String
|
||||
|
||||
fun createApplicationScreenMessage() : String {
|
||||
return "Kotlin Rocks on ${platformName()}"
|
||||
}
|
||||
16
shared/src/iosMain/kotlin/Dispatcher.kt
Normal file
16
shared/src/iosMain/kotlin/Dispatcher.kt
Normal file
@@ -0,0 +1,16 @@
|
||||
package com.appttude.h_mal.shared
|
||||
|
||||
import kotlinx.coroutines.*
|
||||
import platform.darwin.*
|
||||
|
||||
internal actual val ApplicationDispatcher: CoroutineDispatcher = NsQueueDispatcher(dispatch_get_main_queue())
|
||||
|
||||
internal class NsQueueDispatcher(
|
||||
private val dispatchQueue: dispatch_queue_t
|
||||
) : CoroutineDispatcher() {
|
||||
override fun dispatch(context: CoroutineContext, block: Runnable) {
|
||||
dispatch_async(dispatchQueue) {
|
||||
block.run()
|
||||
}
|
||||
}
|
||||
}
|
||||
8
shared/src/iosMain/kotlin/common.kt
Normal file
8
shared/src/iosMain/kotlin/common.kt
Normal file
@@ -0,0 +1,8 @@
|
||||
package com.appttude.h_mal.shared
|
||||
|
||||
|
||||
import platform.UIKit.UIDevice
|
||||
|
||||
actual fun platformName() : String {
|
||||
return "iOS " + UIDevice.currentDevice.systemVersion
|
||||
}
|
||||
2
shared/src/iosMain/kotlin/dummyFile.kt
Normal file
2
shared/src/iosMain/kotlin/dummyFile.kt
Normal file
@@ -0,0 +1,2 @@
|
||||
// This file is needed because the packForXcode task requires the source code to be present to generate the XCode framework.
|
||||
// Feel free to remove this file as soon as you have created some code in this source set.
|
||||
2
shared/src/main/AndroidManifest.xml
Normal file
2
shared/src/main/AndroidManifest.xml
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="me.h_mal.android"/>
|
||||
Reference in New Issue
Block a user