├── .gitignore
├── .idea
├── .gitignore
├── artifacts
│ ├── common_desktop_1_0_SNAPSHOT.xml
│ └── desktop_jvm_1_0_SNAPSHOT.xml
├── gradle.xml
├── kotlinc.xml
├── ktfmt.xml
├── misc.xml
└── vcs.xml
├── LICENSE.md
├── README.md
├── android
├── build.gradle.kts
└── src
│ └── main
│ ├── AndroidManifest.xml
│ └── java
│ └── com
│ └── kashif
│ └── android
│ ├── App.kt
│ └── MainActivity.kt
├── build.gradle.kts
├── common
├── build.gradle.kts
├── common.podspec
└── src
│ ├── androidMain
│ ├── AndroidManifest.xml
│ └── kotlin
│ │ └── com
│ │ └── kashif
│ │ └── common
│ │ ├── main
│ │ └── main.android.kt
│ │ └── platform.kt
│ ├── commonMain
│ └── kotlin
│ │ └── com
│ │ └── kashif
│ │ └── common
│ │ ├── App.kt
│ │ ├── Platform.kt
│ │ └── di
│ │ └── Koin.kt
│ ├── desktopMain
│ └── kotlin
│ │ └── com
│ │ └── kashif
│ │ └── common
│ │ ├── VideoPlayer.kt
│ │ ├── main.desktop.kt
│ │ └── platform.kt
│ └── iosMain
│ └── kotlin
│ └── com
│ └── kashif
│ └── common
│ ├── Platform.kt
│ ├── ServiceProvider.kt
│ └── main.ios.kt
├── desktop
├── build.gradle.kts
└── src
│ └── jvmMain
│ └── kotlin
│ └── com
│ └── kashif
│ └── Main.kt
├── gradle.properties
├── gradle
├── libs.versions.toml
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── ios
├── .idea
│ ├── .gitignore
│ ├── .name
│ ├── artifacts
│ │ ├── common_desktop_1_0_SNAPSHOT.xml
│ │ └── desktop_jvm_1_0_SNAPSHOT.xml
│ ├── compiler.xml
│ ├── gradle.xml
│ ├── jarRepositories.xml
│ ├── misc.xml
│ ├── modules.xml
│ ├── vcs.xml
│ └── xcode.xml
├── Podfile
├── Podfile.lock
├── Pods
│ ├── Local Podspecs
│ │ ├── common.podspec.json
│ │ └── shared.podspec.json
│ ├── Manifest.lock
│ ├── Pods.xcodeproj
│ │ ├── project.pbxproj
│ │ └── xcuserdata
│ │ │ ├── kashif.mehmood.xcuserdatad
│ │ │ └── xcschemes
│ │ │ │ ├── Pods-iosApp.xcscheme
│ │ │ │ ├── common.xcscheme
│ │ │ │ └── xcschememanagement.plist
│ │ │ └── mac.xcuserdatad
│ │ │ └── xcschemes
│ │ │ ├── Pods-iosApp.xcscheme
│ │ │ ├── shared.xcscheme
│ │ │ └── xcschememanagement.plist
│ └── Target Support Files
│ │ ├── Pods-iosApp
│ │ ├── Pods-iosApp-Info.plist
│ │ ├── Pods-iosApp-acknowledgements.markdown
│ │ ├── Pods-iosApp-acknowledgements.plist
│ │ ├── Pods-iosApp-dummy.m
│ │ ├── Pods-iosApp-umbrella.h
│ │ ├── Pods-iosApp.debug.xcconfig
│ │ ├── Pods-iosApp.modulemap
│ │ └── Pods-iosApp.release.xcconfig
│ │ └── common
│ │ ├── common.debug.xcconfig
│ │ └── common.release.xcconfig
├── iosApp.xcodeproj
│ ├── project.pbxproj
│ └── xcuserdata
│ │ └── kashif.mehmood.xcuserdatad
│ │ └── xcschemes
│ │ ├── iosApp.xcscheme
│ │ └── xcschememanagement.plist
├── iosApp.xcworkspace
│ ├── contents.xcworkspacedata
│ ├── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
│ └── xcuserdata
│ │ └── kashif.mehmood.xcuserdatad
│ │ ├── UserInterfaceState.xcuserstate
│ │ └── xcschemes
│ │ └── xcschememanagement.plist
└── iosApp
│ ├── Assets.xcassets
│ ├── AccentColor.colorset
│ │ └── Contents.json
│ ├── AppIcon.appiconset
│ │ └── Contents.json
│ └── Contents.json
│ ├── Info.plist
│ ├── Preview Content
│ └── Preview Assets.xcassets
│ │ └── Contents.json
│ └── iOSApp.swift
└── settings.gradle.kts
/.gitignore:
--------------------------------------------------------------------------------
1 | .gradle
2 | build/
3 | !gradle/wrapper/gradle-wrapper.jar
4 | !**/src/main/**/build/
5 | !**/src/test/**/build/
6 |
7 | ### IntelliJ IDEA ###
8 | .idea/modules.xml
9 | .idea/jarRepositories.xml
10 | .idea/compiler.xml
11 | .idea/libraries/
12 | *.iws
13 | *.iml
14 | *.ipr
15 | out/
16 | !**/src/main/**/out/
17 | !**/src/test/**/out/
18 |
19 | ### Eclipse ###
20 | .apt_generated
21 | .classpath
22 | .factorypath
23 | .project
24 | .settings
25 | .springBeans
26 | .sts4-cache
27 | bin/
28 | !**/src/main/**/bin/
29 | !**/src/test/**/bin/
30 |
31 | ### NetBeans ###
32 | /nbproject/private/
33 | /nbbuild/
34 | /dist/
35 | /nbdist/
36 | /.nb-gradle/
37 |
38 | ### VS Code ###
39 | .vscode/
40 |
41 | ### Mac OS ###
42 | .DS_Store
43 | /local.properties
44 |
--------------------------------------------------------------------------------
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # Editor-based HTTP Client requests
5 | /httpRequests/
6 | # Datasource local storage ignored files
7 | /dataSources/
8 | /dataSources.local.xml
9 |
--------------------------------------------------------------------------------
/.idea/artifacts/common_desktop_1_0_SNAPSHOT.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | $PROJECT_DIR$/common/build/libs
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/artifacts/desktop_jvm_1_0_SNAPSHOT.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | $PROJECT_DIR$/desktop/build/libs
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/.idea/kotlinc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/ktfmt.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/LICENSE.md:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2023 Kashif Mehmood
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Compose Multiplatform Video player
2 |
3 |
4 |
5 | Featured in Kotlin weekly and Kotlin weeekly
6 |
7 |
8 |
9 | This example demonstrates how you can use video player in your compose multiplatform app:
10 |
11 | Android
12 | iOS
13 | Desktop
14 |
15 |
16 |
17 | [](https://www.youtube.com/watch?v=su4L5BcONXU)
18 |
19 | # Troubleshooting
20 | ## MacOS on Apple Chip (M1/M2)
21 | If you encounter the error 'pod install' command failed with code 1. run the following commands in the terminal:
22 |
23 | ```bash
24 | sudo softwareupdate --install-rosetta --agree-to-license
25 | ```
26 | ```bash
27 | sudo gem uninstall ffi && sudo gem install ffi -- --enable-libffi-alloc
28 | ```
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/android/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | id("org.jetbrains.compose")
3 | id("com.android.application")
4 | kotlin("android")
5 | }
6 |
7 | dependencies {
8 | implementation(project(":common"))
9 | implementation(libs.androidx.activity.compose)
10 | implementation(libs.koin.compose)
11 | }
12 |
13 | android {
14 | compileSdk = libs.versions.compileSdk.get().toInt()
15 | defaultConfig {
16 | //TODO: change your application id
17 | applicationId = "com.kashif.android"
18 | minSdk = libs.versions.minSdk.get().toInt()
19 | targetSdk = libs.versions.targetSdk.get().toInt()
20 | versionCode = 1
21 | versionName = "1.0-SNAPSHOT"
22 | }
23 | compileOptions {
24 | sourceCompatibility = JavaVersion.VERSION_1_8
25 | targetCompatibility = JavaVersion.VERSION_1_8
26 | }
27 | buildTypes { getByName("release") { isMinifyEnabled = false } }
28 | }
29 |
--------------------------------------------------------------------------------
/android/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/android/src/main/java/com/kashif/android/App.kt:
--------------------------------------------------------------------------------
1 | package com.kashif.android
2 |
3 | import android.app.Application
4 | import com.kashif.common.di.initKoin
5 |
6 | class App : Application() {
7 |
8 | override fun onCreate() {
9 | super.onCreate()
10 | // TODO: Change your base url from here
11 | initKoin(enableNetworkLogs = true, baseUrl = "Your base url here") {}
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/android/src/main/java/com/kashif/android/MainActivity.kt:
--------------------------------------------------------------------------------
1 | package com.kashif.android
2 |
3 | import android.os.Bundle
4 | import androidx.activity.compose.setContent
5 | import androidx.appcompat.app.AppCompatActivity
6 | import androidx.compose.material.MaterialTheme
7 | import com.kashif.common.main.Application
8 |
9 | class MainActivity : AppCompatActivity() {
10 | override fun onCreate(savedInstanceState: Bundle?) {
11 | super.onCreate(savedInstanceState)
12 | setContent {
13 | MaterialTheme {
14 | Application()
15 | }
16 | }
17 | }
18 | }
--------------------------------------------------------------------------------
/build.gradle.kts:
--------------------------------------------------------------------------------
1 | allprojects {
2 | repositories {
3 | google()
4 | mavenCentral()
5 | maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
6 | }
7 | }
8 |
9 | buildscript {
10 | repositories {
11 | google()
12 | mavenCentral()
13 | maven("https://maven.pkg.jetbrains.space/public/p/compose/dev")
14 | }
15 | dependencies {
16 | classpath(libs.androidGradle)
17 | classpath(libs.composeGradle)
18 | classpath(libs.kotlinGradle)
19 | classpath((kotlin("serialization", version = "1.8.0")))
20 |
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/common/build.gradle.kts:
--------------------------------------------------------------------------------
1 | plugins {
2 | kotlin("multiplatform")
3 | id("org.jetbrains.compose")
4 | id("com.android.library")
5 | kotlin("native.cocoapods")
6 | kotlin("plugin.serialization")
7 | }
8 |
9 | //TODO: change your group
10 |
11 | group = "com.kashif"
12 | version = "1.0-SNAPSHOT"
13 |
14 | fun composeDependency(groupWithArtifact: String) = "$groupWithArtifact:${libs.versions.compose}"
15 |
16 | kotlin {
17 | android()
18 | jvm("desktop") {
19 | compilations.all {
20 | kotlinOptions.jvmTarget = "11"
21 | }
22 | }
23 |
24 | ios()
25 | iosSimulatorArm64()
26 |
27 | cocoapods {
28 | summary = "Some description for the Shared Module"
29 | homepage = "Link to the Shared Module homepage"
30 | version = "1.0"
31 | ios.deploymentTarget = "14.1"
32 | podfile = project.file("../ios/Podfile")
33 | framework {
34 | baseName = "common"
35 | isStatic = true
36 | }
37 | }
38 |
39 |
40 |
41 | sourceSets {
42 | val commonMain by getting {
43 | dependencies {
44 | api(compose.runtime)
45 | api(compose.foundation)
46 | api(compose.material)
47 | implementation(libs.koin.core)
48 | implementation(libs.ktor.json)
49 | implementation(libs.ktor.client.logging)
50 | implementation(libs.ktor.serialization)
51 | implementation(libs.ktor.contentnegotiation)
52 | implementation(libs.ktor.serialization.json)
53 | implementation(libs.kotlin.serialization)
54 | implementation(libs.material.icon.extended)
55 | api(libs.image.loader)
56 | implementation(libs.compose.util)
57 |
58 |
59 | }
60 | }
61 | val commonTest by getting {
62 | dependencies {
63 | implementation(kotlin("test"))
64 |
65 |
66 | }
67 | }
68 | val androidMain by getting {
69 | dependencies {
70 | api(libs.androidx.appcompat)
71 | api(libs.androidx.coreKtx)
72 | implementation(libs.ktor.android)
73 | implementation(libs.koin.compose)
74 | implementation("androidx.media3:media3-exoplayer:1.1.0")
75 | implementation("androidx.media3:media3-exoplayer-dash:1.1.0")
76 | implementation("androidx.media3:media3-ui:1.1.0")
77 | }
78 | }
79 | val androidUnitTest by getting {
80 | dependencies {
81 | implementation(libs.junit)
82 | }
83 | }
84 | val desktopMain by getting {
85 | dependencies {
86 | api(compose.preview)
87 | implementation(libs.koin.core)
88 | implementation(libs.ktor.java)
89 | implementation(libs.koin.compose)
90 | implementation("uk.co.caprica:vlcj:4.7.0")
91 |
92 | }
93 | }
94 | val desktopTest by getting
95 |
96 | val iosMain by getting {
97 | dependsOn(commonMain)
98 | dependencies {
99 | implementation(libs.ktor.ios)
100 | }
101 | }
102 | val iosSimulatorArm64Main by getting {
103 | dependsOn(iosMain)
104 | }
105 |
106 | }
107 | }
108 |
109 |
110 | android {
111 | compileSdk = libs.versions.compileSdk.get().toInt()
112 | sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml")
113 | defaultConfig {
114 | minSdk = libs.versions.minSdk.get().toInt()
115 | targetSdk = libs.versions.targetSdk.get().toInt()
116 | }
117 | compileOptions {
118 | sourceCompatibility = JavaVersion.VERSION_1_8
119 | targetCompatibility = JavaVersion.VERSION_1_8
120 | }
121 | }
--------------------------------------------------------------------------------
/common/common.podspec:
--------------------------------------------------------------------------------
1 | Pod::Spec.new do |spec|
2 | spec.name = 'common'
3 | spec.version = '1.0'
4 | spec.homepage = 'Link to the Shared Module homepage'
5 | spec.source = { :http=> ''}
6 | spec.authors = ''
7 | spec.license = ''
8 | spec.summary = 'Some description for the Shared Module'
9 | spec.vendored_frameworks = 'build/cocoapods/framework/common.framework'
10 | spec.libraries = 'c++'
11 | spec.ios.deployment_target = '14.1'
12 |
13 |
14 | spec.pod_target_xcconfig = {
15 | 'KOTLIN_PROJECT_PATH' => ':common',
16 | 'PRODUCT_MODULE_NAME' => 'common',
17 | }
18 |
19 | spec.script_phases = [
20 | {
21 | :name => 'Build common',
22 | :execution_position => :before_compile,
23 | :shell_path => '/bin/sh',
24 | :script => <<-SCRIPT
25 | if [ "YES" = "$OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED" ]; then
26 | echo "Skipping Gradle build task invocation due to OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED environment variable set to \"YES\""
27 | exit 0
28 | fi
29 | set -ev
30 | REPO_ROOT="$PODS_TARGET_SRCROOT"
31 | "$REPO_ROOT/../gradlew" -p "$REPO_ROOT" $KOTLIN_PROJECT_PATH:syncFramework \
32 | -Pkotlin.native.cocoapods.platform=$PLATFORM_NAME \
33 | -Pkotlin.native.cocoapods.archs="$ARCHS" \
34 | -Pkotlin.native.cocoapods.configuration="$CONFIGURATION"
35 | SCRIPT
36 | }
37 | ]
38 |
39 | end
--------------------------------------------------------------------------------
/common/src/androidMain/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/common/src/androidMain/kotlin/com/kashif/common/main/main.android.kt:
--------------------------------------------------------------------------------
1 | package com.kashif.common.main
2 |
3 | import androidx.compose.runtime.Composable
4 | import com.kashif.common.App
5 | import org.koin.core.context.GlobalContext.get
6 |
7 | @Composable
8 | fun Application() {
9 | App(platform = "Android")
10 | }
--------------------------------------------------------------------------------
/common/src/androidMain/kotlin/com/kashif/common/platform.kt:
--------------------------------------------------------------------------------
1 | package com.kashif.common
2 |
3 | import android.widget.MediaController
4 | import android.widget.VideoView
5 | import androidx.compose.runtime.Composable
6 | import androidx.compose.ui.Modifier
7 | import androidx.compose.ui.viewinterop.AndroidView
8 | import io.ktor.client.engine.android.*
9 | import org.koin.dsl.module
10 |
11 | actual fun platformModule() = module {
12 | single {
13 | Android.create()
14 | }
15 | }
16 |
17 | @Composable
18 | actual fun VideoPlayer(modifier: Modifier, url: String){
19 | AndroidView(
20 | modifier = modifier,
21 | factory = { context ->
22 | VideoView(context).apply {
23 | setVideoPath(url)
24 | val mediaController = MediaController(context)
25 | mediaController.setAnchorView(this)
26 | setMediaController(mediaController)
27 | start()
28 | }
29 | },
30 | update = {})
31 | }
--------------------------------------------------------------------------------
/common/src/commonMain/kotlin/com/kashif/common/App.kt:
--------------------------------------------------------------------------------
1 | package com.kashif.common
2 |
3 | import androidx.compose.foundation.layout.*
4 | import androidx.compose.material.Button
5 | import androidx.compose.material.Text
6 | import androidx.compose.runtime.*
7 | import androidx.compose.ui.Alignment
8 | import androidx.compose.ui.Modifier
9 | import androidx.compose.ui.unit.dp
10 |
11 | @Composable
12 | internal fun App(platform: String) {
13 | var text by remember { mutableStateOf("Hello, World!") }
14 |
15 | Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) {
16 | Column(
17 | horizontalAlignment = Alignment.CenterHorizontally,
18 | verticalArrangement = Arrangement.SpaceAround) {
19 | VideoPlayer(
20 | modifier = Modifier.fillMaxWidth().height(400.dp),
21 | url =
22 | "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4")
23 |
24 | Button(onClick = { text = "Hello, $platform" }) { Text(text) }
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/common/src/commonMain/kotlin/com/kashif/common/Platform.kt:
--------------------------------------------------------------------------------
1 | package com.kashif.common
2 |
3 | import androidx.compose.runtime.Composable
4 | import androidx.compose.ui.Modifier
5 | import org.koin.core.module.Module
6 |
7 | expect fun platformModule(): Module
8 |
9 | @Composable
10 | expect fun VideoPlayer(modifier: Modifier, url: String)
11 |
--------------------------------------------------------------------------------
/common/src/commonMain/kotlin/com/kashif/common/di/Koin.kt:
--------------------------------------------------------------------------------
1 | package com.kashif.common.di
2 |
3 | import com.kashif.common.platformModule
4 | import io.ktor.client.*
5 | import io.ktor.client.engine.*
6 | import io.ktor.client.plugins.*
7 | import io.ktor.client.plugins.contentnegotiation.*
8 | import io.ktor.client.plugins.logging.*
9 | import io.ktor.http.*
10 | import io.ktor.serialization.kotlinx.json.*
11 | import kotlinx.serialization.json.Json
12 | import org.koin.core.context.startKoin
13 | import org.koin.dsl.KoinAppDeclaration
14 | import org.koin.dsl.module
15 |
16 | fun initKoin(
17 | enableNetworkLogs: Boolean = false,
18 | baseUrl: String,
19 | appDeclaration: KoinAppDeclaration = {},
20 | ) = startKoin {
21 | appDeclaration()
22 | modules(commonModule(enableNetworkLogs = enableNetworkLogs, baseUrl))
23 | }
24 |
25 | // called by iOS etc
26 | fun initKoin(baseUrl: String) = initKoin(enableNetworkLogs = true, baseUrl = baseUrl) {}
27 |
28 | fun commonModule(
29 | enableNetworkLogs: Boolean,
30 | baseUrl: String,
31 | ) = platformModule() + getDataModule(enableNetworkLogs, baseUrl)
32 |
33 | fun getDataModule(
34 | enableNetworkLogs: Boolean,
35 | baseUrl: String,
36 | ) = module {
37 |
38 | single { createJson() }
39 |
40 | single { createHttpClient(get(), get(), enableNetworkLogs = enableNetworkLogs) }
41 |
42 | }
43 |
44 | fun createHttpClient(httpClientEngine: HttpClientEngine, json: Json, enableNetworkLogs: Boolean) =
45 | HttpClient(httpClientEngine) {
46 | // exception handling
47 | install(HttpTimeout) {
48 | requestTimeoutMillis = 10000
49 | connectTimeoutMillis = 10000
50 | socketTimeoutMillis = 10000
51 | }
52 |
53 | install(HttpRequestRetry) {
54 | maxRetries = 3
55 | retryIf { _, response -> !response.status.isSuccess() }
56 | retryOnExceptionIf { _, cause -> cause is HttpRequestTimeoutException }
57 | delayMillis { 3000L } // retries in 3, 6, 9, etc. seconds
58 | }
59 |
60 | install(HttpCallValidator) {
61 | handleResponseException { cause -> println("exception $cause") }
62 | }
63 |
64 | install(ContentNegotiation) { json(json) }
65 | if (enableNetworkLogs) {
66 | install(Logging) {
67 | logger = Logger.SIMPLE
68 | level = LogLevel.ALL
69 | }
70 | }
71 | }
72 |
73 | fun createJson() = Json {
74 | ignoreUnknownKeys = true
75 | isLenient = true
76 | encodeDefaults = true
77 | prettyPrint = true
78 | coerceInputValues = true
79 | }
80 |
--------------------------------------------------------------------------------
/common/src/desktopMain/kotlin/com/kashif/common/VideoPlayer.kt:
--------------------------------------------------------------------------------
1 | package com.kashif.common
2 |
3 | import androidx.compose.runtime.Composable
4 | import androidx.compose.runtime.DisposableEffect
5 | import androidx.compose.runtime.LaunchedEffect
6 | import androidx.compose.runtime.remember
7 | import androidx.compose.ui.Modifier
8 | import androidx.compose.ui.awt.SwingPanel
9 | import androidx.compose.ui.graphics.Color
10 | import uk.co.caprica.vlcj.factory.discovery.NativeDiscovery
11 | import uk.co.caprica.vlcj.player.base.MediaPlayer
12 | import uk.co.caprica.vlcj.player.component.CallbackMediaPlayerComponent
13 | import uk.co.caprica.vlcj.player.component.EmbeddedMediaPlayerComponent
14 | import java.awt.Component
15 | import java.util.Locale
16 |
17 | @Composable
18 | fun VideoPlayerImpl(
19 | url: String,
20 | modifier: Modifier,
21 | ) {
22 | val mediaPlayerComponent = remember { initializeMediaPlayerComponent() }
23 | val mediaPlayer = remember { mediaPlayerComponent.mediaPlayer() }
24 |
25 | val factory = remember { { mediaPlayerComponent } }
26 | /* OR the following code and using SwingPanel(factory = { factory }, ...) */
27 | // val factory by rememberUpdatedState(mediaPlayerComponent)
28 |
29 | LaunchedEffect(url) { mediaPlayer.media().play/*OR .start*/(url) }
30 | DisposableEffect(Unit) { onDispose(mediaPlayer::release) }
31 | SwingPanel(
32 | factory = factory,
33 | background = Color.Transparent,
34 | modifier = modifier
35 | )
36 | }
37 |
38 | private fun initializeMediaPlayerComponent(): Component {
39 | NativeDiscovery().discover()
40 | return if (isMacOS()) {
41 | CallbackMediaPlayerComponent()
42 | } else {
43 | EmbeddedMediaPlayerComponent()
44 | }
45 | }
46 |
47 |
48 | /**
49 | * Returns [MediaPlayer] from player components.
50 | * The method names are the same, but they don't share the same parent/interface.
51 | * That's why we need this method.
52 | */
53 | private fun Component.mediaPlayer() = when (this) {
54 | is CallbackMediaPlayerComponent -> mediaPlayer()
55 | is EmbeddedMediaPlayerComponent -> mediaPlayer()
56 | else -> error("mediaPlayer() can only be called on vlcj player components")
57 | }
58 |
59 | private fun isMacOS(): Boolean {
60 | val os = System
61 | .getProperty("os.name", "generic")
62 | .lowercase(Locale.ENGLISH)
63 | return "mac" in os || "darwin" in os
64 | }
--------------------------------------------------------------------------------
/common/src/desktopMain/kotlin/com/kashif/common/main.desktop.kt:
--------------------------------------------------------------------------------
1 | package com.kashif.common
2 |
3 | import androidx.compose.desktop.ui.tooling.preview.Preview
4 | import androidx.compose.runtime.Composable
5 |
6 | @Preview
7 | @Composable
8 | fun Application() {
9 | App("Desktop")
10 | }
--------------------------------------------------------------------------------
/common/src/desktopMain/kotlin/com/kashif/common/platform.kt:
--------------------------------------------------------------------------------
1 | package com.kashif.common
2 |
3 | import androidx.compose.foundation.layout.Column
4 | import androidx.compose.foundation.layout.fillMaxWidth
5 | import androidx.compose.foundation.layout.height
6 | import androidx.compose.runtime.Composable
7 | import androidx.compose.runtime.remember
8 | import androidx.compose.ui.Modifier
9 | import androidx.compose.ui.unit.dp
10 | import io.ktor.client.engine.java.*
11 | import org.koin.dsl.module
12 |
13 | actual fun platformModule() = module { single { Java.create() } }
14 |
15 | @Composable
16 | actual fun VideoPlayer(modifier: Modifier, url: String) {
17 |
18 |
19 | Column {
20 | VideoPlayerImpl(
21 | url = url,
22 | modifier = Modifier.fillMaxWidth().height(400.dp))
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/common/src/iosMain/kotlin/com/kashif/common/Platform.kt:
--------------------------------------------------------------------------------
1 | package com.kashif.common
2 |
3 | import androidx.compose.runtime.Composable
4 | import androidx.compose.runtime.remember
5 | import androidx.compose.ui.Modifier
6 | import androidx.compose.ui.interop.UIKitView
7 | import io.ktor.client.engine.darwin.*
8 | import kotlinx.cinterop.CValue
9 | import org.koin.dsl.module
10 | import platform.AVFoundation.AVPlayer
11 | import platform.AVFoundation.AVPlayerLayer
12 | import platform.AVFoundation.play
13 | import platform.AVKit.AVPlayerViewController
14 | import platform.CoreGraphics.CGRect
15 | import platform.Foundation.NSURL
16 | import platform.QuartzCore.CATransaction
17 | import platform.QuartzCore.kCATransactionDisableActions
18 | import platform.UIKit.UIView
19 |
20 |
21 | actual fun platformModule() = module {
22 | single {
23 | Darwin.create()
24 | }
25 | }
26 |
27 |
28 | @Composable
29 | actual fun VideoPlayer(modifier: Modifier, url: String) {
30 | val player = remember { AVPlayer(uRL = NSURL.URLWithString(url)!!) }
31 | val playerLayer = remember { AVPlayerLayer() }
32 | val avPlayerViewController = remember { AVPlayerViewController() }
33 | avPlayerViewController.player = player
34 | avPlayerViewController.showsPlaybackControls = true
35 |
36 | playerLayer.player = player
37 | // Use a UIKitView to integrate with your existing UIKit views
38 | UIKitView(
39 | factory = {
40 | // Create a UIView to hold the AVPlayerLayer
41 | val playerContainer = UIView()
42 | playerContainer.addSubview(avPlayerViewController.view)
43 | // Return the playerContainer as the root UIView
44 | playerContainer
45 | },
46 | onResize = { view: UIView, rect: CValue ->
47 | CATransaction.begin()
48 | CATransaction.setValue(true, kCATransactionDisableActions)
49 | view.layer.setFrame(rect)
50 | playerLayer.setFrame(rect)
51 | avPlayerViewController.view.layer.frame = rect
52 | CATransaction.commit()
53 | },
54 | update = { view ->
55 | player.play()
56 | avPlayerViewController.player!!.play()
57 | },
58 | modifier = modifier)
59 | }
--------------------------------------------------------------------------------
/common/src/iosMain/kotlin/com/kashif/common/ServiceProvider.kt:
--------------------------------------------------------------------------------
1 | package com.kashif.common
2 |
3 | import org.koin.core.component.KoinComponent
4 |
5 | object ServiceProvider : KoinComponent {
6 |
7 | }
--------------------------------------------------------------------------------
/common/src/iosMain/kotlin/com/kashif/common/main.ios.kt:
--------------------------------------------------------------------------------
1 | package com.kashif.common
2 |
3 | import androidx.compose.ui.window.Application
4 | import platform.UIKit.UIViewController
5 |
6 | fun MainViewController(): UIViewController =
7 | Application("Example Application") {
8 | App("Ios")
9 | }
--------------------------------------------------------------------------------
/desktop/build.gradle.kts:
--------------------------------------------------------------------------------
1 | import org.jetbrains.compose.desktop.application.dsl.TargetFormat
2 |
3 | plugins {
4 | kotlin("multiplatform")
5 | id("org.jetbrains.compose")
6 | }
7 |
8 | //TODO: Change group
9 |
10 | group = "com.kashif"
11 | version = "1.0-SNAPSHOT"
12 |
13 |
14 | kotlin {
15 | jvm {
16 | compilations.all {
17 | kotlinOptions.jvmTarget = "11"
18 | }
19 | withJava()
20 | }
21 | sourceSets {
22 | val jvmMain by getting {
23 | dependencies {
24 | implementation(project(":common"))
25 | implementation(compose.desktop.currentOs)
26 |
27 | }
28 | configurations.all {
29 | // some dependencies contains it, this causes an exception to initialize the Main dispatcher in desktop for image loader
30 | exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-android")
31 | }
32 | }
33 | val jvmTest by getting
34 | }
35 | }
36 |
37 | compose.desktop {
38 | application {
39 | mainClass = "com.kashif.MainKt"
40 | nativeDistributions {
41 | targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb)
42 | packageName = "ComposeVideoPlayer"
43 | packageVersion = "1.0.0"
44 | }
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/desktop/src/jvmMain/kotlin/com/kashif/Main.kt:
--------------------------------------------------------------------------------
1 | package com.kashif
2 |
3 |
4 | import androidx.compose.ui.window.Window
5 | import androidx.compose.ui.window.application
6 | import com.kashif.common.Application
7 |
8 |
9 | fun main() = application {
10 | Window(onCloseRequest = ::exitApplication) {
11 | Application()
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | kotlin.code.style=official
2 | android.useAndroidX=true
3 | kotlin.version=1.8.0
4 | agp.version=7.4.0-beta02
5 | compose.version=1.3.0
6 | org.jetbrains.compose.experimental.uikit.enabled=true
7 | kotlin.mpp.androidSourceSetLayoutVersion=2
8 | org.gradle.jvmargs=-Xmx4096m
9 | kotlin.native.cacheKind=none
10 |
--------------------------------------------------------------------------------
/gradle/libs.versions.toml:
--------------------------------------------------------------------------------
1 | [versions]
2 | # https://github.com/JetBrains/compose-jb/blob/master/VERSIONING.md#kotlin-compatibility
3 | kotlin = "1.8.20" # https://kotlinlang.org/docs/releases.html#release-details
4 | agp = "7.4.1" # https://developer.android.com/studio/releases/gradle-plugin
5 | compose = "1.4.1" # https://github.com/JetBrains/compose-jb
6 |
7 | coreKtx = "1.9.0" # https://developer.android.com/jetpack/androidx/releases/core
8 | appcompat = "1.6.1" # https://developer.android.com/jetpack/androidx/releases/appcompat
9 | activity = "1.6.1" # https://developer.android.com/jetpack/androidx/releases/activity
10 |
11 | compileSdk = "33"
12 | minSdk = "24"
13 | targetSdk = "33"
14 |
15 | koin-version = "3.3.3"
16 | koin-compose-version = "3.4.2"
17 |
18 | ktor_version = "2.2.3"
19 | kotlin-serialization = "1.5.0-RC"
20 |
21 |
22 | material-icon-version = "1.3.0"
23 |
24 | image-loader-version = "1.5.3"
25 |
26 | accompanist-version = "0.25.2"
27 |
28 | voyager = "1.0.0-rc06"
29 |
30 | [libraries]
31 | androidGradle = { module = "com.android.tools.build:gradle", version.ref = "agp" }
32 | composeGradle = { module = "org.jetbrains.compose:compose-gradle-plugin", version.ref = "compose" }
33 | kotlinGradle = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "kotlin" }
34 |
35 | androidx-coreKtx = { module = "androidx.core:core-ktx", version.ref = "coreKtx" }
36 | androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "appcompat" }
37 | androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "activity" }
38 | compose-util = {module = "org.jetbrains.compose.ui:ui-util", version.ref = "compose"}
39 |
40 | koin-core = {module = "io.insert-koin:koin-core", version.ref = "koin-version"}
41 | koin-compose = {module = "io.insert-koin:koin-androidx-compose", version.ref = "koin-compose-version"}
42 |
43 | ktor-core = {module = "io.ktor:ktor-client-core", version.ref = "ktor_version"}
44 | ktor-serialization = {module = "io.ktor:ktor-client-serialization", version.ref = "ktor_version"}
45 | ktor-android = {module = "io.ktor:ktor-client-android", version.ref = "ktor_version"}
46 | ktor-ios = {module = "io.ktor:ktor-client-ios", version.ref = "ktor_version"}
47 | ktor-java = {module = "io.ktor:ktor-client-java", version.ref = "ktor_version"}
48 | ktor-client-logging = {module = "io.ktor:ktor-client-logging", version.ref = "ktor_version"}
49 | ktor-json = {module = "io.ktor:ktor-client-json", version.ref = "ktor_version"}
50 | ktor-serialization-json = {module = "io.ktor:ktor-serialization-kotlinx-json", version.ref = "ktor_version"}
51 | ktor-contentnegotiation = {module = "io.ktor:ktor-client-content-negotiation", version.ref = "ktor_version"}
52 | kotlin-serialization = {module = "org.jetbrains.kotlinx:kotlinx-serialization-core", version.ref = "kotlin-serialization"}
53 |
54 | material-icon-extended = {module = "org.jetbrains.compose.material:material-icons-extended", version.ref = "material-icon-version"}
55 |
56 | image-loader = {module= "io.github.qdsfdhvh:image-loader", version.ref = "image-loader-version"}
57 |
58 | accompanist-pager = {module = "ca.gosyer:accompanist-pager", version.ref = "accompanist-version"}
59 |
60 | voyager-navigator = { module = "cafe.adriel.voyager:voyager-navigator", version.ref = "voyager" }
61 |
62 | voyager-bottomSheetNavigator = { module = "cafe.adriel.voyager:voyager-bottom-sheet-navigator", version.ref = "voyager" }
63 |
64 | voyager-tabNavigator = { module = "cafe.adriel.voyager:voyager-tab-navigator", version.ref = "voyager" }
65 |
66 | voyager-transitions = { module = "cafe.adriel.voyager:voyager-transitions", version.ref = "voyager" }
67 |
68 | voyager-koin = { module = "cafe.adriel.voyager:voyager-koin", version.ref = "voyager" }
69 |
70 | junit = "junit:junit:4.13.2"
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Kashif-E/Compose-Multiplatform-Video-Player/a9c00c7b6e7f4683eda27d0cc3cd3df3ff79c09d/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 |
--------------------------------------------------------------------------------
/gradlew:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | #
4 | # Copyright © 2015-2021 the original authors.
5 | #
6 | # Licensed under the Apache License, Version 2.0 (the "License");
7 | # you may not use this file except in compliance with the License.
8 | # You may obtain a copy of the License at
9 | #
10 | # https://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS,
14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | # See the License for the specific language governing permissions and
16 | # limitations under the License.
17 | #
18 |
19 | ##############################################################################
20 | #
21 | # Gradle start up script for POSIX generated by Gradle.
22 | #
23 | # Important for running:
24 | #
25 | # (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
26 | # noncompliant, but you have some other compliant shell such as ksh or
27 | # bash, then to run this script, type that shell name before the whole
28 | # command line, like:
29 | #
30 | # ksh Gradle
31 | #
32 | # Busybox and similar reduced shells will NOT work, because this script
33 | # requires all of these POSIX shell features:
34 | # * functions;
35 | # * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
36 | # «${var#prefix}», «${var%suffix}», and «$( cmd )»;
37 | # * compound commands having a testable exit status, especially «case»;
38 | # * various built-in commands including «command», «set», and «ulimit».
39 | #
40 | # Important for patching:
41 | #
42 | # (2) This script targets any POSIX shell, so it avoids extensions provided
43 | # by Bash, Ksh, etc; in particular arrays are avoided.
44 | #
45 | # The "traditional" practice of packing multiple parameters into a
46 | # space-separated string is a well documented source of bugs and security
47 | # problems, so this is (mostly) avoided, by progressively accumulating
48 | # options in "$@", and eventually passing that to Java.
49 | #
50 | # Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
51 | # and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
52 | # see the in-line comments for details.
53 | #
54 | # There are tweaks for specific operating systems such as AIX, CygWin,
55 | # Darwin, MinGW, and NonStop.
56 | #
57 | # (3) This script is generated from the Groovy template
58 | # https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
59 | # within the Gradle project.
60 | #
61 | # You can find Gradle at https://github.com/gradle/gradle/.
62 | #
63 | ##############################################################################
64 |
65 | # Attempt to set APP_HOME
66 |
67 | # Resolve links: $0 may be a link
68 | app_path=$0
69 |
70 | # Need this for daisy-chained symlinks.
71 | while
72 | APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
73 | [ -h "$app_path" ]
74 | do
75 | ls=$( ls -ld "$app_path" )
76 | link=${ls#*' -> '}
77 | case $link in #(
78 | /*) app_path=$link ;; #(
79 | *) app_path=$APP_HOME$link ;;
80 | esac
81 | done
82 |
83 | APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
84 |
85 | APP_NAME="Gradle"
86 | APP_BASE_NAME=${0##*/}
87 |
88 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
89 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
90 |
91 | # Use the maximum available, or set MAX_FD != -1 to use that value.
92 | MAX_FD=maximum
93 |
94 | warn () {
95 | echo "$*"
96 | } >&2
97 |
98 | die () {
99 | echo
100 | echo "$*"
101 | echo
102 | exit 1
103 | } >&2
104 |
105 | # OS specific support (must be 'true' or 'false').
106 | cygwin=false
107 | msys=false
108 | darwin=false
109 | nonstop=false
110 | case "$( uname )" in #(
111 | CYGWIN* ) cygwin=true ;; #(
112 | Darwin* ) darwin=true ;; #(
113 | MSYS* | MINGW* ) msys=true ;; #(
114 | NONSTOP* ) nonstop=true ;;
115 | esac
116 |
117 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
118 |
119 |
120 | # Determine the Java command to use to start the JVM.
121 | if [ -n "$JAVA_HOME" ] ; then
122 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
123 | # IBM's JDK on AIX uses strange locations for the executables
124 | JAVACMD=$JAVA_HOME/jre/sh/java
125 | else
126 | JAVACMD=$JAVA_HOME/bin/java
127 | fi
128 | if [ ! -x "$JAVACMD" ] ; then
129 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
130 |
131 | Please set the JAVA_HOME variable in your environment to match the
132 | location of your Java installation."
133 | fi
134 | else
135 | JAVACMD=java
136 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
137 |
138 | Please set the JAVA_HOME variable in your environment to match the
139 | location of your Java installation."
140 | fi
141 |
142 | # Increase the maximum file descriptors if we can.
143 | if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
144 | case $MAX_FD in #(
145 | max*)
146 | MAX_FD=$( ulimit -H -n ) ||
147 | warn "Could not query maximum file descriptor limit"
148 | esac
149 | case $MAX_FD in #(
150 | '' | soft) :;; #(
151 | *)
152 | ulimit -n "$MAX_FD" ||
153 | warn "Could not set maximum file descriptor limit to $MAX_FD"
154 | esac
155 | fi
156 |
157 | # Collect all arguments for the java command, stacking in reverse order:
158 | # * args from the command line
159 | # * the main class name
160 | # * -classpath
161 | # * -D...appname settings
162 | # * --module-path (only if needed)
163 | # * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
164 |
165 | # For Cygwin or MSYS, switch paths to Windows format before running java
166 | if "$cygwin" || "$msys" ; then
167 | APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
168 | CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
169 |
170 | JAVACMD=$( cygpath --unix "$JAVACMD" )
171 |
172 | # Now convert the arguments - kludge to limit ourselves to /bin/sh
173 | for arg do
174 | if
175 | case $arg in #(
176 | -*) false ;; # don't mess with options #(
177 | /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
178 | [ -e "$t" ] ;; #(
179 | *) false ;;
180 | esac
181 | then
182 | arg=$( cygpath --path --ignore --mixed "$arg" )
183 | fi
184 | # Roll the args list around exactly as many times as the number of
185 | # args, so each arg winds up back in the position where it started, but
186 | # possibly modified.
187 | #
188 | # NB: a `for` loop captures its iteration list before it begins, so
189 | # changing the positional parameters here affects neither the number of
190 | # iterations, nor the values presented in `arg`.
191 | shift # remove old arg
192 | set -- "$@" "$arg" # push replacement arg
193 | done
194 | fi
195 |
196 | # Collect all arguments for the java command;
197 | # * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
198 | # shell script including quotes and variable substitutions, so put them in
199 | # double quotes to make sure that they get re-expanded; and
200 | # * put everything else in single quotes, so that it's not re-expanded.
201 |
202 | set -- \
203 | "-Dorg.gradle.appname=$APP_BASE_NAME" \
204 | -classpath "$CLASSPATH" \
205 | org.gradle.wrapper.GradleWrapperMain \
206 | "$@"
207 |
208 | # Use "xargs" to parse quoted args.
209 | #
210 | # With -n1 it outputs one arg per line, with the quotes and backslashes removed.
211 | #
212 | # In Bash we could simply go:
213 | #
214 | # readarray ARGS < <( xargs -n1 <<<"$var" ) &&
215 | # set -- "${ARGS[@]}" "$@"
216 | #
217 | # but POSIX shell has neither arrays nor command substitution, so instead we
218 | # post-process each arg (as a line of input to sed) to backslash-escape any
219 | # character that might be a shell metacharacter, then use eval to reverse
220 | # that process (while maintaining the separation between arguments), and wrap
221 | # the whole thing up as a single "set" statement.
222 | #
223 | # This will of course break if any of these variables contains a newline or
224 | # an unmatched quote.
225 | #
226 |
227 | eval "set -- $(
228 | printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
229 | xargs -n1 |
230 | sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
231 | tr '\n' ' '
232 | )" '"$@"'
233 |
234 | exec "$JAVACMD" "$@"
235 |
--------------------------------------------------------------------------------
/gradlew.bat:
--------------------------------------------------------------------------------
1 | @rem
2 | @rem Copyright 2015 the original author or authors.
3 | @rem
4 | @rem Licensed under the Apache License, Version 2.0 (the "License");
5 | @rem you may not use this file except in compliance with the License.
6 | @rem You may obtain a copy of the License at
7 | @rem
8 | @rem https://www.apache.org/licenses/LICENSE-2.0
9 | @rem
10 | @rem Unless required by applicable law or agreed to in writing, software
11 | @rem distributed under the License is distributed on an "AS IS" BASIS,
12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | @rem See the License for the specific language governing permissions and
14 | @rem limitations under the License.
15 | @rem
16 |
17 | @if "%DEBUG%" == "" @echo off
18 | @rem ##########################################################################
19 | @rem
20 | @rem Gradle startup script for Windows
21 | @rem
22 | @rem ##########################################################################
23 |
24 | @rem Set local scope for the variables with windows NT shell
25 | if "%OS%"=="Windows_NT" setlocal
26 |
27 | set DIRNAME=%~dp0
28 | if "%DIRNAME%" == "" set DIRNAME=.
29 | set APP_BASE_NAME=%~n0
30 | set APP_HOME=%DIRNAME%
31 |
32 | @rem Resolve any "." and ".." in APP_HOME to make it shorter.
33 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
34 |
35 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
36 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
37 |
38 | @rem Find java.exe
39 | if defined JAVA_HOME goto findJavaFromJavaHome
40 |
41 | set JAVA_EXE=java.exe
42 | %JAVA_EXE% -version >NUL 2>&1
43 | if "%ERRORLEVEL%" == "0" goto execute
44 |
45 | echo.
46 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
47 | echo.
48 | echo Please set the JAVA_HOME variable in your environment to match the
49 | echo location of your Java installation.
50 |
51 | goto fail
52 |
53 | :findJavaFromJavaHome
54 | set JAVA_HOME=%JAVA_HOME:"=%
55 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
56 |
57 | if exist "%JAVA_EXE%" goto execute
58 |
59 | echo.
60 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
61 | echo.
62 | echo Please set the JAVA_HOME variable in your environment to match the
63 | echo location of your Java installation.
64 |
65 | goto fail
66 |
67 | :execute
68 | @rem Setup the command line
69 |
70 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
71 |
72 |
73 | @rem Execute Gradle
74 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
75 |
76 | :end
77 | @rem End local scope for the variables with windows NT shell
78 | if "%ERRORLEVEL%"=="0" goto mainEnd
79 |
80 | :fail
81 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
82 | rem the _cmd.exe /c_ return code!
83 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
84 | exit /b 1
85 |
86 | :mainEnd
87 | if "%OS%"=="Windows_NT" endlocal
88 |
89 | :omega
90 |
--------------------------------------------------------------------------------
/ios/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 | # Editor-based HTTP Client requests
5 | /httpRequests/
6 | # Datasource local storage ignored files
7 | /dataSources/
8 | /dataSources.local.xml
9 |
--------------------------------------------------------------------------------
/ios/.idea/.name:
--------------------------------------------------------------------------------
1 | KMPTemplate
--------------------------------------------------------------------------------
/ios/.idea/artifacts/common_desktop_1_0_SNAPSHOT.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | $PROJECT_DIR$/../common/build/libs
4 |
5 |
6 |
--------------------------------------------------------------------------------
/ios/.idea/artifacts/desktop_jvm_1_0_SNAPSHOT.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | $PROJECT_DIR$/../desktop/build/libs
4 |
5 |
6 |
--------------------------------------------------------------------------------
/ios/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/ios/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/ios/.idea/jarRepositories.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/ios/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/ios/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/ios/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/ios/.idea/xcode.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/ios/Podfile:
--------------------------------------------------------------------------------
1 | target 'iosApp' do
2 | use_frameworks!
3 | platform :ios, '14.1'
4 | pod 'common', :path => '../common'
5 | end
--------------------------------------------------------------------------------
/ios/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - common (1.0)
3 |
4 | DEPENDENCIES:
5 | - common (from `../common`)
6 |
7 | EXTERNAL SOURCES:
8 | common:
9 | :path: "../common"
10 |
11 | SPEC CHECKSUMS:
12 | common: 7b9ef703eb6c49a3f71e0ff50e37571c057e2a93
13 |
14 | PODFILE CHECKSUM: 7a3fba8fd11eab85bad12d285efed36f9fb815ca
15 |
16 | COCOAPODS: 1.12.1
17 |
--------------------------------------------------------------------------------
/ios/Pods/Local Podspecs/common.podspec.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "common",
3 | "version": "1.0",
4 | "homepage": "Link to the Shared Module homepage",
5 | "source": {
6 | "http": ""
7 | },
8 | "authors": "",
9 | "license": "",
10 | "summary": "Some description for the Shared Module",
11 | "vendored_frameworks": "build/cocoapods/framework/common.framework",
12 | "libraries": "c++",
13 | "platforms": {
14 | "ios": "14.1"
15 | },
16 | "pod_target_xcconfig": {
17 | "KOTLIN_PROJECT_PATH": ":common",
18 | "PRODUCT_MODULE_NAME": "common"
19 | },
20 | "script_phases": [
21 | {
22 | "name": "Build common",
23 | "execution_position": "before_compile",
24 | "shell_path": "/bin/sh",
25 | "script": " if [ \"YES\" = \"$OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED\" ]; then\n echo \"Skipping Gradle build task invocation due to OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED environment variable set to \"YES\"\"\n exit 0\n fi\n set -ev\n REPO_ROOT=\"$PODS_TARGET_SRCROOT\"\n \"$REPO_ROOT/../gradlew\" -p \"$REPO_ROOT\" $KOTLIN_PROJECT_PATH:syncFramework -Pkotlin.native.cocoapods.platform=$PLATFORM_NAME -Pkotlin.native.cocoapods.archs=\"$ARCHS\" -Pkotlin.native.cocoapods.configuration=\"$CONFIGURATION\"\n"
26 | }
27 | ]
28 | }
29 |
--------------------------------------------------------------------------------
/ios/Pods/Local Podspecs/shared.podspec.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "shared",
3 | "version": "1.0",
4 | "homepage": "Link to the Shared Module homepage",
5 | "source": {
6 | "http": ""
7 | },
8 | "authors": "",
9 | "license": "",
10 | "summary": "Some description for the Shared Module",
11 | "vendored_frameworks": "build/cocoapods/framework/shared.framework",
12 | "libraries": "c++",
13 | "platforms": {
14 | "ios": "14.1"
15 | },
16 | "pod_target_xcconfig": {
17 | "KOTLIN_PROJECT_PATH": ":shared",
18 | "PRODUCT_MODULE_NAME": "shared"
19 | },
20 | "script_phases": [
21 | {
22 | "name": "Build shared",
23 | "execution_position": "before_compile",
24 | "shell_path": "/bin/sh",
25 | "script": " if [ \"YES\" = \"$COCOAPODS_SKIP_KOTLIN_BUILD\" ]; then\n echo \"Skipping Gradle build task invocation due to COCOAPODS_SKIP_KOTLIN_BUILD environment variable set to \"YES\"\"\n exit 0\n fi\n set -ev\n REPO_ROOT=\"$PODS_TARGET_SRCROOT\"\n \"$REPO_ROOT/../gradlew\" -p \"$REPO_ROOT\" $KOTLIN_PROJECT_PATH:syncFramework -Pkotlin.native.cocoapods.platform=$PLATFORM_NAME -Pkotlin.native.cocoapods.archs=\"$ARCHS\" -Pkotlin.native.cocoapods.configuration=\"$CONFIGURATION\"\n"
26 | }
27 | ]
28 | }
29 |
--------------------------------------------------------------------------------
/ios/Pods/Manifest.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - common (1.0)
3 |
4 | DEPENDENCIES:
5 | - common (from `../common`)
6 |
7 | EXTERNAL SOURCES:
8 | common:
9 | :path: "../common"
10 |
11 | SPEC CHECKSUMS:
12 | common: 7b9ef703eb6c49a3f71e0ff50e37571c057e2a93
13 |
14 | PODFILE CHECKSUM: 7a3fba8fd11eab85bad12d285efed36f9fb815ca
15 |
16 | COCOAPODS: 1.12.1
17 |
--------------------------------------------------------------------------------
/ios/Pods/Pods.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 50;
7 | objects = {
8 |
9 | /* Begin PBXAggregateTarget section */
10 | 8217FBB9D1218C346C0781D0B8F2BBE8 /* common */ = {
11 | isa = PBXAggregateTarget;
12 | buildConfigurationList = 1D5F1C893FEB1534A938215715B55EDF /* Build configuration list for PBXAggregateTarget "common" */;
13 | buildPhases = (
14 | 7117138631DE463A2F0FAF7227B3ADA6 /* [CP-User] Build common */,
15 | );
16 | dependencies = (
17 | );
18 | name = common;
19 | };
20 | /* End PBXAggregateTarget section */
21 |
22 | /* Begin PBXBuildFile section */
23 | 6F2BC57E1D6720A63FFB714410C35634 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */; };
24 | D35C90276605CE55DFB56E479BC69765 /* Pods-iosApp-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 42DE4C0106600A5B6D599285368F3270 /* Pods-iosApp-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; };
25 | F52E2EF48835C7010B62DDCDB0B02E77 /* Pods-iosApp-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A2475209BEE7612101900020629C625 /* Pods-iosApp-dummy.m */; };
26 | /* End PBXBuildFile section */
27 |
28 | /* Begin PBXContainerItemProxy section */
29 | 0EB96256AF0EF6CCEBCA7EE69221F7A0 /* PBXContainerItemProxy */ = {
30 | isa = PBXContainerItemProxy;
31 | containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */;
32 | proxyType = 1;
33 | remoteGlobalIDString = 8217FBB9D1218C346C0781D0B8F2BBE8;
34 | remoteInfo = common;
35 | };
36 | /* End PBXContainerItemProxy section */
37 |
38 | /* Begin PBXFileReference section */
39 | 0011AEE22E8296B3D9E0B0B2CDCAB2EE /* Pods-iosApp-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-iosApp-acknowledgements.plist"; sourceTree = ""; };
40 | 1A2FB55B5C37861BC78ECD1420D818C3 /* Pods-iosApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-iosApp.release.xcconfig"; sourceTree = ""; };
41 | 3A2475209BEE7612101900020629C625 /* Pods-iosApp-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-iosApp-dummy.m"; sourceTree = ""; };
42 | 42DE4C0106600A5B6D599285368F3270 /* Pods-iosApp-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-iosApp-umbrella.h"; sourceTree = ""; };
43 | 482384ADFE4EF692B16FACB8C2021970 /* Pods-iosApp.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-iosApp.modulemap"; sourceTree = ""; };
44 | 50F23192AFA70E5F0C72CC4A7C941DDD /* common.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = common.framework; path = build/cocoapods/framework/common.framework; sourceTree = ""; };
45 | 5322F4D58F773B8686AB4E3C7D1175E0 /* common.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = common.release.xcconfig; sourceTree = ""; };
46 | 66CB301C7AFFA80B04FF8C97876B8394 /* common.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = common.debug.xcconfig; sourceTree = ""; };
47 | 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
48 | 97713D97AAEED94F7795B9A7B1CFCFB1 /* common.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = common.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
49 | 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
50 | A43877303056397968EC90C7AAFE17E8 /* Pods-iosApp-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-iosApp-acknowledgements.markdown"; sourceTree = ""; };
51 | A79C2AA5C063914B2D1BD80187FDF6DE /* Pods-iosApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-iosApp.debug.xcconfig"; sourceTree = ""; };
52 | B097DD7534E741D5C41838011D755842 /* Pods-iosApp */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-iosApp"; path = Pods_iosApp.framework; sourceTree = BUILT_PRODUCTS_DIR; };
53 | BCAED803D074E2E9C3B1327F049C8C2A /* Pods-iosApp-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-iosApp-Info.plist"; sourceTree = ""; };
54 | /* End PBXFileReference section */
55 |
56 | /* Begin PBXFrameworksBuildPhase section */
57 | 52E6767D4DE21F51040B43BF5F44B26F /* Frameworks */ = {
58 | isa = PBXFrameworksBuildPhase;
59 | buildActionMask = 2147483647;
60 | files = (
61 | 6F2BC57E1D6720A63FFB714410C35634 /* Foundation.framework in Frameworks */,
62 | );
63 | runOnlyForDeploymentPostprocessing = 0;
64 | };
65 | /* End PBXFrameworksBuildPhase section */
66 |
67 | /* Begin PBXGroup section */
68 | 1F86AA6785DF34AFD5A71790761717DE /* Products */ = {
69 | isa = PBXGroup;
70 | children = (
71 | B097DD7534E741D5C41838011D755842 /* Pods-iosApp */,
72 | );
73 | name = Products;
74 | sourceTree = "";
75 | };
76 | 310087C345B86EEF25A054485E0BB5CB /* Pods-iosApp */ = {
77 | isa = PBXGroup;
78 | children = (
79 | 482384ADFE4EF692B16FACB8C2021970 /* Pods-iosApp.modulemap */,
80 | A43877303056397968EC90C7AAFE17E8 /* Pods-iosApp-acknowledgements.markdown */,
81 | 0011AEE22E8296B3D9E0B0B2CDCAB2EE /* Pods-iosApp-acknowledgements.plist */,
82 | 3A2475209BEE7612101900020629C625 /* Pods-iosApp-dummy.m */,
83 | BCAED803D074E2E9C3B1327F049C8C2A /* Pods-iosApp-Info.plist */,
84 | 42DE4C0106600A5B6D599285368F3270 /* Pods-iosApp-umbrella.h */,
85 | A79C2AA5C063914B2D1BD80187FDF6DE /* Pods-iosApp.debug.xcconfig */,
86 | 1A2FB55B5C37861BC78ECD1420D818C3 /* Pods-iosApp.release.xcconfig */,
87 | );
88 | name = "Pods-iosApp";
89 | path = "Target Support Files/Pods-iosApp";
90 | sourceTree = "";
91 | };
92 | 578452D2E740E91742655AC8F1636D1F /* iOS */ = {
93 | isa = PBXGroup;
94 | children = (
95 | 73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */,
96 | );
97 | name = iOS;
98 | sourceTree = "";
99 | };
100 | 5F2A29831F31B876774DC0778F1484B3 /* Support Files */ = {
101 | isa = PBXGroup;
102 | children = (
103 | 66CB301C7AFFA80B04FF8C97876B8394 /* common.debug.xcconfig */,
104 | 5322F4D58F773B8686AB4E3C7D1175E0 /* common.release.xcconfig */,
105 | );
106 | name = "Support Files";
107 | path = "../ios/Pods/Target Support Files/common";
108 | sourceTree = "";
109 | };
110 | 61BB301BCB2971D167BA3AFB6B1288F0 /* Pod */ = {
111 | isa = PBXGroup;
112 | children = (
113 | 97713D97AAEED94F7795B9A7B1CFCFB1 /* common.podspec */,
114 | );
115 | name = Pod;
116 | sourceTree = "";
117 | };
118 | 7E2197AE3DF2F7563F552492F52AECA5 /* Frameworks */ = {
119 | isa = PBXGroup;
120 | children = (
121 | 50F23192AFA70E5F0C72CC4A7C941DDD /* common.framework */,
122 | );
123 | name = Frameworks;
124 | sourceTree = "";
125 | };
126 | A534ECAEA5F0A03EFFABCF1B79475E00 /* Development Pods */ = {
127 | isa = PBXGroup;
128 | children = (
129 | FFFDDE6ED69B83B23091AF23F80AE6DC /* common */,
130 | );
131 | name = "Development Pods";
132 | sourceTree = "";
133 | };
134 | C9F6DDEE5D76F65BB478A349731F54F4 /* Targets Support Files */ = {
135 | isa = PBXGroup;
136 | children = (
137 | 310087C345B86EEF25A054485E0BB5CB /* Pods-iosApp */,
138 | );
139 | name = "Targets Support Files";
140 | sourceTree = "";
141 | };
142 | CF1408CF629C7361332E53B88F7BD30C = {
143 | isa = PBXGroup;
144 | children = (
145 | 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */,
146 | A534ECAEA5F0A03EFFABCF1B79475E00 /* Development Pods */,
147 | D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */,
148 | 1F86AA6785DF34AFD5A71790761717DE /* Products */,
149 | C9F6DDEE5D76F65BB478A349731F54F4 /* Targets Support Files */,
150 | );
151 | sourceTree = "";
152 | };
153 | D210D550F4EA176C3123ED886F8F87F5 /* Frameworks */ = {
154 | isa = PBXGroup;
155 | children = (
156 | 578452D2E740E91742655AC8F1636D1F /* iOS */,
157 | );
158 | name = Frameworks;
159 | sourceTree = "";
160 | };
161 | FFFDDE6ED69B83B23091AF23F80AE6DC /* common */ = {
162 | isa = PBXGroup;
163 | children = (
164 | 7E2197AE3DF2F7563F552492F52AECA5 /* Frameworks */,
165 | 61BB301BCB2971D167BA3AFB6B1288F0 /* Pod */,
166 | 5F2A29831F31B876774DC0778F1484B3 /* Support Files */,
167 | );
168 | name = common;
169 | path = ../../common;
170 | sourceTree = "";
171 | };
172 | /* End PBXGroup section */
173 |
174 | /* Begin PBXHeadersBuildPhase section */
175 | 8AC8360238D0E8A266A710291B088C6F /* Headers */ = {
176 | isa = PBXHeadersBuildPhase;
177 | buildActionMask = 2147483647;
178 | files = (
179 | D35C90276605CE55DFB56E479BC69765 /* Pods-iosApp-umbrella.h in Headers */,
180 | );
181 | runOnlyForDeploymentPostprocessing = 0;
182 | };
183 | /* End PBXHeadersBuildPhase section */
184 |
185 | /* Begin PBXNativeTarget section */
186 | ED39C638569286489CD697A6C8964146 /* Pods-iosApp */ = {
187 | isa = PBXNativeTarget;
188 | buildConfigurationList = 143D3C4CD50478B7864D614025271687 /* Build configuration list for PBXNativeTarget "Pods-iosApp" */;
189 | buildPhases = (
190 | 8AC8360238D0E8A266A710291B088C6F /* Headers */,
191 | E3BD9C97AB5076C7C58508C9C6E0E0AD /* Sources */,
192 | 52E6767D4DE21F51040B43BF5F44B26F /* Frameworks */,
193 | E2EDAA7009EB7D3404F4DB942AFD1B42 /* Resources */,
194 | );
195 | buildRules = (
196 | );
197 | dependencies = (
198 | 5680D0441A26C51172E072B83542344D /* PBXTargetDependency */,
199 | );
200 | name = "Pods-iosApp";
201 | productName = Pods_iosApp;
202 | productReference = B097DD7534E741D5C41838011D755842 /* Pods-iosApp */;
203 | productType = "com.apple.product-type.framework";
204 | };
205 | /* End PBXNativeTarget section */
206 |
207 | /* Begin PBXProject section */
208 | BFDFE7DC352907FC980B868725387E98 /* Project object */ = {
209 | isa = PBXProject;
210 | attributes = {
211 | LastSwiftUpdateCheck = 1300;
212 | LastUpgradeCheck = 1300;
213 | };
214 | buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */;
215 | compatibilityVersion = "Xcode 9.3";
216 | developmentRegion = en;
217 | hasScannedForEncodings = 0;
218 | knownRegions = (
219 | Base,
220 | en,
221 | );
222 | mainGroup = CF1408CF629C7361332E53B88F7BD30C;
223 | productRefGroup = 1F86AA6785DF34AFD5A71790761717DE /* Products */;
224 | projectDirPath = "";
225 | projectRoot = "";
226 | targets = (
227 | 8217FBB9D1218C346C0781D0B8F2BBE8 /* common */,
228 | ED39C638569286489CD697A6C8964146 /* Pods-iosApp */,
229 | );
230 | };
231 | /* End PBXProject section */
232 |
233 | /* Begin PBXResourcesBuildPhase section */
234 | E2EDAA7009EB7D3404F4DB942AFD1B42 /* Resources */ = {
235 | isa = PBXResourcesBuildPhase;
236 | buildActionMask = 2147483647;
237 | files = (
238 | );
239 | runOnlyForDeploymentPostprocessing = 0;
240 | };
241 | /* End PBXResourcesBuildPhase section */
242 |
243 | /* Begin PBXShellScriptBuildPhase section */
244 | 7117138631DE463A2F0FAF7227B3ADA6 /* [CP-User] Build common */ = {
245 | isa = PBXShellScriptBuildPhase;
246 | buildActionMask = 2147483647;
247 | files = (
248 | );
249 | name = "[CP-User] Build common";
250 | runOnlyForDeploymentPostprocessing = 0;
251 | shellPath = /bin/sh;
252 | shellScript = " if [ \"YES\" = \"$OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED\" ]; then\n echo \"Skipping Gradle build task invocation due to OVERRIDE_KOTLIN_BUILD_IDE_SUPPORTED environment variable set to \"YES\"\"\n exit 0\n fi\n set -ev\n REPO_ROOT=\"$PODS_TARGET_SRCROOT\"\n \"$REPO_ROOT/../gradlew\" -p \"$REPO_ROOT\" $KOTLIN_PROJECT_PATH:syncFramework -Pkotlin.native.cocoapods.platform=$PLATFORM_NAME -Pkotlin.native.cocoapods.archs=\"$ARCHS\" -Pkotlin.native.cocoapods.configuration=\"$CONFIGURATION\"\n";
253 | };
254 | /* End PBXShellScriptBuildPhase section */
255 |
256 | /* Begin PBXSourcesBuildPhase section */
257 | E3BD9C97AB5076C7C58508C9C6E0E0AD /* Sources */ = {
258 | isa = PBXSourcesBuildPhase;
259 | buildActionMask = 2147483647;
260 | files = (
261 | F52E2EF48835C7010B62DDCDB0B02E77 /* Pods-iosApp-dummy.m in Sources */,
262 | );
263 | runOnlyForDeploymentPostprocessing = 0;
264 | };
265 | /* End PBXSourcesBuildPhase section */
266 |
267 | /* Begin PBXTargetDependency section */
268 | 5680D0441A26C51172E072B83542344D /* PBXTargetDependency */ = {
269 | isa = PBXTargetDependency;
270 | name = common;
271 | target = 8217FBB9D1218C346C0781D0B8F2BBE8 /* common */;
272 | targetProxy = 0EB96256AF0EF6CCEBCA7EE69221F7A0 /* PBXContainerItemProxy */;
273 | };
274 | /* End PBXTargetDependency section */
275 |
276 | /* Begin XCBuildConfiguration section */
277 | 272FE5BB057A3B394CCD8546DD050E12 /* Debug */ = {
278 | isa = XCBuildConfiguration;
279 | baseConfigurationReference = A79C2AA5C063914B2D1BD80187FDF6DE /* Pods-iosApp.debug.xcconfig */;
280 | buildSettings = {
281 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
282 | CLANG_ENABLE_OBJC_WEAK = NO;
283 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
284 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
285 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
286 | CURRENT_PROJECT_VERSION = 1;
287 | DEFINES_MODULE = YES;
288 | DYLIB_COMPATIBILITY_VERSION = 1;
289 | DYLIB_CURRENT_VERSION = 1;
290 | DYLIB_INSTALL_NAME_BASE = "@rpath";
291 | INFOPLIST_FILE = "Target Support Files/Pods-iosApp/Pods-iosApp-Info.plist";
292 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
293 | IPHONEOS_DEPLOYMENT_TARGET = 14.1;
294 | LD_RUNPATH_SEARCH_PATHS = (
295 | "$(inherited)",
296 | "@executable_path/Frameworks",
297 | "@loader_path/Frameworks",
298 | );
299 | MACH_O_TYPE = staticlib;
300 | MODULEMAP_FILE = "Target Support Files/Pods-iosApp/Pods-iosApp.modulemap";
301 | OTHER_LDFLAGS = "";
302 | OTHER_LIBTOOLFLAGS = "";
303 | PODS_ROOT = "$(SRCROOT)";
304 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
305 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
306 | SDKROOT = iphoneos;
307 | SKIP_INSTALL = YES;
308 | TARGETED_DEVICE_FAMILY = "1,2";
309 | VERSIONING_SYSTEM = "apple-generic";
310 | VERSION_INFO_PREFIX = "";
311 | };
312 | name = Debug;
313 | };
314 | 4FE643CB8AAD3257D8DAF1CCA9A80815 /* Release */ = {
315 | isa = XCBuildConfiguration;
316 | baseConfigurationReference = 5322F4D58F773B8686AB4E3C7D1175E0 /* common.release.xcconfig */;
317 | buildSettings = {
318 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
319 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
320 | CLANG_ENABLE_OBJC_WEAK = NO;
321 | IPHONEOS_DEPLOYMENT_TARGET = 14.1;
322 | LD_RUNPATH_SEARCH_PATHS = (
323 | "$(inherited)",
324 | "@executable_path/Frameworks",
325 | );
326 | SDKROOT = iphoneos;
327 | TARGETED_DEVICE_FAMILY = "1,2";
328 | VALIDATE_PRODUCT = YES;
329 | };
330 | name = Release;
331 | };
332 | 56C7B0BFB50DD213F55C185D272A2F5E /* Debug */ = {
333 | isa = XCBuildConfiguration;
334 | baseConfigurationReference = 66CB301C7AFFA80B04FF8C97876B8394 /* common.debug.xcconfig */;
335 | buildSettings = {
336 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
337 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
338 | CLANG_ENABLE_OBJC_WEAK = NO;
339 | IPHONEOS_DEPLOYMENT_TARGET = 14.1;
340 | LD_RUNPATH_SEARCH_PATHS = (
341 | "$(inherited)",
342 | "@executable_path/Frameworks",
343 | );
344 | SDKROOT = iphoneos;
345 | TARGETED_DEVICE_FAMILY = "1,2";
346 | };
347 | name = Debug;
348 | };
349 | 593F10BFFA94DAC7D6E17FB8A7F32D72 /* Release */ = {
350 | isa = XCBuildConfiguration;
351 | buildSettings = {
352 | ALWAYS_SEARCH_USER_PATHS = NO;
353 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
354 | CLANG_ANALYZER_NONNULL = YES;
355 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
356 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
357 | CLANG_CXX_LIBRARY = "libc++";
358 | CLANG_ENABLE_MODULES = YES;
359 | CLANG_ENABLE_OBJC_ARC = YES;
360 | CLANG_ENABLE_OBJC_WEAK = YES;
361 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
362 | CLANG_WARN_BOOL_CONVERSION = YES;
363 | CLANG_WARN_COMMA = YES;
364 | CLANG_WARN_CONSTANT_CONVERSION = YES;
365 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
366 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
367 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
368 | CLANG_WARN_EMPTY_BODY = YES;
369 | CLANG_WARN_ENUM_CONVERSION = YES;
370 | CLANG_WARN_INFINITE_RECURSION = YES;
371 | CLANG_WARN_INT_CONVERSION = YES;
372 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
373 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
374 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
375 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
376 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
377 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
378 | CLANG_WARN_STRICT_PROTOTYPES = YES;
379 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
380 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
381 | CLANG_WARN_UNREACHABLE_CODE = YES;
382 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
383 | COPY_PHASE_STRIP = NO;
384 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
385 | ENABLE_NS_ASSERTIONS = NO;
386 | ENABLE_STRICT_OBJC_MSGSEND = YES;
387 | GCC_C_LANGUAGE_STANDARD = gnu11;
388 | GCC_NO_COMMON_BLOCKS = YES;
389 | GCC_PREPROCESSOR_DEFINITIONS = (
390 | "POD_CONFIGURATION_RELEASE=1",
391 | "$(inherited)",
392 | );
393 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
394 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
395 | GCC_WARN_UNDECLARED_SELECTOR = YES;
396 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
397 | GCC_WARN_UNUSED_FUNCTION = YES;
398 | GCC_WARN_UNUSED_VARIABLE = YES;
399 | IPHONEOS_DEPLOYMENT_TARGET = 14.1;
400 | MTL_ENABLE_DEBUG_INFO = NO;
401 | MTL_FAST_MATH = YES;
402 | PRODUCT_NAME = "$(TARGET_NAME)";
403 | STRIP_INSTALLED_PRODUCT = NO;
404 | SWIFT_COMPILATION_MODE = wholemodule;
405 | SWIFT_OPTIMIZATION_LEVEL = "-O";
406 | SWIFT_VERSION = 5.0;
407 | SYMROOT = "${SRCROOT}/../build";
408 | };
409 | name = Release;
410 | };
411 | 95E976AEF264CFC047A2B14727966FEE /* Release */ = {
412 | isa = XCBuildConfiguration;
413 | baseConfigurationReference = 1A2FB55B5C37861BC78ECD1420D818C3 /* Pods-iosApp.release.xcconfig */;
414 | buildSettings = {
415 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO;
416 | CLANG_ENABLE_OBJC_WEAK = NO;
417 | "CODE_SIGN_IDENTITY[sdk=appletvos*]" = "";
418 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
419 | "CODE_SIGN_IDENTITY[sdk=watchos*]" = "";
420 | CURRENT_PROJECT_VERSION = 1;
421 | DEFINES_MODULE = YES;
422 | DYLIB_COMPATIBILITY_VERSION = 1;
423 | DYLIB_CURRENT_VERSION = 1;
424 | DYLIB_INSTALL_NAME_BASE = "@rpath";
425 | INFOPLIST_FILE = "Target Support Files/Pods-iosApp/Pods-iosApp-Info.plist";
426 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
427 | IPHONEOS_DEPLOYMENT_TARGET = 14.1;
428 | LD_RUNPATH_SEARCH_PATHS = (
429 | "$(inherited)",
430 | "@executable_path/Frameworks",
431 | "@loader_path/Frameworks",
432 | );
433 | MACH_O_TYPE = staticlib;
434 | MODULEMAP_FILE = "Target Support Files/Pods-iosApp/Pods-iosApp.modulemap";
435 | OTHER_LDFLAGS = "";
436 | OTHER_LIBTOOLFLAGS = "";
437 | PODS_ROOT = "$(SRCROOT)";
438 | PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}";
439 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
440 | SDKROOT = iphoneos;
441 | SKIP_INSTALL = YES;
442 | TARGETED_DEVICE_FAMILY = "1,2";
443 | VALIDATE_PRODUCT = YES;
444 | VERSIONING_SYSTEM = "apple-generic";
445 | VERSION_INFO_PREFIX = "";
446 | };
447 | name = Release;
448 | };
449 | A0374B8CF9A7D6A45F6D116D698D1C19 /* Debug */ = {
450 | isa = XCBuildConfiguration;
451 | buildSettings = {
452 | ALWAYS_SEARCH_USER_PATHS = NO;
453 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
454 | CLANG_ANALYZER_NONNULL = YES;
455 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
456 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
457 | CLANG_CXX_LIBRARY = "libc++";
458 | CLANG_ENABLE_MODULES = YES;
459 | CLANG_ENABLE_OBJC_ARC = YES;
460 | CLANG_ENABLE_OBJC_WEAK = YES;
461 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
462 | CLANG_WARN_BOOL_CONVERSION = YES;
463 | CLANG_WARN_COMMA = YES;
464 | CLANG_WARN_CONSTANT_CONVERSION = YES;
465 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
466 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
467 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
468 | CLANG_WARN_EMPTY_BODY = YES;
469 | CLANG_WARN_ENUM_CONVERSION = YES;
470 | CLANG_WARN_INFINITE_RECURSION = YES;
471 | CLANG_WARN_INT_CONVERSION = YES;
472 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
473 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
474 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
475 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
476 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
477 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
478 | CLANG_WARN_STRICT_PROTOTYPES = YES;
479 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
480 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
481 | CLANG_WARN_UNREACHABLE_CODE = YES;
482 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
483 | COPY_PHASE_STRIP = NO;
484 | DEBUG_INFORMATION_FORMAT = dwarf;
485 | ENABLE_STRICT_OBJC_MSGSEND = YES;
486 | ENABLE_TESTABILITY = YES;
487 | GCC_C_LANGUAGE_STANDARD = gnu11;
488 | GCC_DYNAMIC_NO_PIC = NO;
489 | GCC_NO_COMMON_BLOCKS = YES;
490 | GCC_OPTIMIZATION_LEVEL = 0;
491 | GCC_PREPROCESSOR_DEFINITIONS = (
492 | "POD_CONFIGURATION_DEBUG=1",
493 | "DEBUG=1",
494 | "$(inherited)",
495 | );
496 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
497 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
498 | GCC_WARN_UNDECLARED_SELECTOR = YES;
499 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
500 | GCC_WARN_UNUSED_FUNCTION = YES;
501 | GCC_WARN_UNUSED_VARIABLE = YES;
502 | IPHONEOS_DEPLOYMENT_TARGET = 14.1;
503 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
504 | MTL_FAST_MATH = YES;
505 | ONLY_ACTIVE_ARCH = YES;
506 | PRODUCT_NAME = "$(TARGET_NAME)";
507 | STRIP_INSTALLED_PRODUCT = NO;
508 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
509 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
510 | SWIFT_VERSION = 5.0;
511 | SYMROOT = "${SRCROOT}/../build";
512 | };
513 | name = Debug;
514 | };
515 | /* End XCBuildConfiguration section */
516 |
517 | /* Begin XCConfigurationList section */
518 | 143D3C4CD50478B7864D614025271687 /* Build configuration list for PBXNativeTarget "Pods-iosApp" */ = {
519 | isa = XCConfigurationList;
520 | buildConfigurations = (
521 | 272FE5BB057A3B394CCD8546DD050E12 /* Debug */,
522 | 95E976AEF264CFC047A2B14727966FEE /* Release */,
523 | );
524 | defaultConfigurationIsVisible = 0;
525 | defaultConfigurationName = Release;
526 | };
527 | 1D5F1C893FEB1534A938215715B55EDF /* Build configuration list for PBXAggregateTarget "common" */ = {
528 | isa = XCConfigurationList;
529 | buildConfigurations = (
530 | 56C7B0BFB50DD213F55C185D272A2F5E /* Debug */,
531 | 4FE643CB8AAD3257D8DAF1CCA9A80815 /* Release */,
532 | );
533 | defaultConfigurationIsVisible = 0;
534 | defaultConfigurationName = Release;
535 | };
536 | 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = {
537 | isa = XCConfigurationList;
538 | buildConfigurations = (
539 | A0374B8CF9A7D6A45F6D116D698D1C19 /* Debug */,
540 | 593F10BFFA94DAC7D6E17FB8A7F32D72 /* Release */,
541 | );
542 | defaultConfigurationIsVisible = 0;
543 | defaultConfigurationName = Release;
544 | };
545 | /* End XCConfigurationList section */
546 | };
547 | rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */;
548 | }
549 |
--------------------------------------------------------------------------------
/ios/Pods/Pods.xcodeproj/xcuserdata/kashif.mehmood.xcuserdatad/xcschemes/Pods-iosApp.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
43 |
44 |
50 |
51 |
53 |
54 |
57 |
58 |
59 |
--------------------------------------------------------------------------------
/ios/Pods/Pods.xcodeproj/xcuserdata/kashif.mehmood.xcuserdatad/xcschemes/common.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
43 |
44 |
50 |
51 |
53 |
54 |
57 |
58 |
59 |
--------------------------------------------------------------------------------
/ios/Pods/Pods.xcodeproj/xcuserdata/kashif.mehmood.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | Pods-iosApp.xcscheme
8 |
9 | isShown
10 |
11 |
12 | common.xcscheme
13 |
14 | isShown
15 |
16 |
17 |
18 | SuppressBuildableAutocreation
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/ios/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/Pods-iosApp.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
43 |
44 |
50 |
51 |
53 |
54 |
57 |
58 |
59 |
--------------------------------------------------------------------------------
/ios/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/shared.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
43 |
44 |
50 |
51 |
53 |
54 |
57 |
58 |
59 |
--------------------------------------------------------------------------------
/ios/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | Pods-iosApp.xcscheme
8 |
9 | isShown
10 |
11 |
12 | shared.xcscheme
13 |
14 | isShown
15 |
16 |
17 |
18 | SuppressBuildableAutocreation
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/ios/Pods/Target Support Files/Pods-iosApp/Pods-iosApp-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | ${PODS_DEVELOPMENT_LANGUAGE}
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ios/Pods/Target Support Files/Pods-iosApp/Pods-iosApp-acknowledgements.markdown:
--------------------------------------------------------------------------------
1 | # Acknowledgements
2 | This application makes use of the following third party libraries:
3 | Generated by CocoaPods - https://cocoapods.org
4 |
--------------------------------------------------------------------------------
/ios/Pods/Target Support Files/Pods-iosApp/Pods-iosApp-acknowledgements.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreferenceSpecifiers
6 |
7 |
8 | FooterText
9 | This application makes use of the following third party libraries:
10 | Title
11 | Acknowledgements
12 | Type
13 | PSGroupSpecifier
14 |
15 |
16 | FooterText
17 | Generated by CocoaPods - https://cocoapods.org
18 | Title
19 |
20 | Type
21 | PSGroupSpecifier
22 |
23 |
24 | StringsTable
25 | Acknowledgements
26 | Title
27 | Acknowledgements
28 |
29 |
30 |
--------------------------------------------------------------------------------
/ios/Pods/Target Support Files/Pods-iosApp/Pods-iosApp-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_iosApp : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_iosApp
5 | @end
6 |
--------------------------------------------------------------------------------
/ios/Pods/Target Support Files/Pods-iosApp/Pods-iosApp-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double Pods_iosAppVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char Pods_iosAppVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/ios/Pods/Target Support Files/Pods-iosApp/Pods-iosApp.debug.xcconfig:
--------------------------------------------------------------------------------
1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/../../common/build/cocoapods/framework"
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
5 | OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -framework "common"
6 | PODS_BUILD_DIR = ${BUILD_DIR}
7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
9 | PODS_ROOT = ${SRCROOT}/Pods
10 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
11 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
12 |
--------------------------------------------------------------------------------
/ios/Pods/Target Support Files/Pods-iosApp/Pods-iosApp.modulemap:
--------------------------------------------------------------------------------
1 | framework module Pods_iosApp {
2 | umbrella header "Pods-iosApp-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/ios/Pods/Target Support Files/Pods-iosApp/Pods-iosApp.release.xcconfig:
--------------------------------------------------------------------------------
1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/../../common/build/cocoapods/framework"
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
5 | OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -framework "common"
6 | PODS_BUILD_DIR = ${BUILD_DIR}
7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
9 | PODS_ROOT = ${SRCROOT}/Pods
10 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
11 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
12 |
--------------------------------------------------------------------------------
/ios/Pods/Target Support Files/common/common.debug.xcconfig:
--------------------------------------------------------------------------------
1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/common
3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/../../common/build/cocoapods/framework"
4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
5 | KOTLIN_PROJECT_PATH = :common
6 | OTHER_LDFLAGS = $(inherited) -l"c++"
7 | PODS_BUILD_DIR = ${BUILD_DIR}
8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
9 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE}
10 | PODS_ROOT = ${SRCROOT}
11 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../common
12 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
13 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
14 | PRODUCT_MODULE_NAME = common
15 | SKIP_INSTALL = YES
16 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
17 |
--------------------------------------------------------------------------------
/ios/Pods/Target Support Files/common/common.release.xcconfig:
--------------------------------------------------------------------------------
1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/common
3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/../../common/build/cocoapods/framework"
4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
5 | KOTLIN_PROJECT_PATH = :common
6 | OTHER_LDFLAGS = $(inherited) -l"c++"
7 | PODS_BUILD_DIR = ${BUILD_DIR}
8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
9 | PODS_DEVELOPMENT_LANGUAGE = ${DEVELOPMENT_LANGUAGE}
10 | PODS_ROOT = ${SRCROOT}
11 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../common
12 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
13 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
14 | PRODUCT_MODULE_NAME = common
15 | SKIP_INSTALL = YES
16 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
17 |
--------------------------------------------------------------------------------
/ios/iosApp.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 50;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 058557BB273AAA24004C7B11 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 058557BA273AAA24004C7B11 /* Assets.xcassets */; };
11 | 058557D9273AAEEB004C7B11 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */; };
12 | 2152FB042600AC8F00CF470E /* iOSApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2152FB032600AC8F00CF470E /* iOSApp.swift */; };
13 | BAFAD511946BE1B7F959BE28 /* Pods_iosApp.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 674F7982C8A359F6B1326788 /* Pods_iosApp.framework */; };
14 | /* End PBXBuildFile section */
15 |
16 | /* Begin PBXFileReference section */
17 | 058557BA273AAA24004C7B11 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
18 | 058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; };
19 | 1793589FAA94DA6A4B88E809 /* Pods-iosApp.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iosApp.release.xcconfig"; path = "Target Support Files/Pods-iosApp/Pods-iosApp.release.xcconfig"; sourceTree = ""; };
20 | 2152FB032600AC8F00CF470E /* iOSApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iOSApp.swift; sourceTree = ""; };
21 | 674F7982C8A359F6B1326788 /* Pods_iosApp.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_iosApp.framework; sourceTree = BUILT_PRODUCTS_DIR; };
22 | 7555FF7B242A565900829871 /* iosApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iosApp.app; sourceTree = BUILT_PRODUCTS_DIR; };
23 | 7555FF8C242A565B00829871 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
24 | A7908C2F0D99EDFCF8D7FACA /* Pods-iosApp.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iosApp.debug.xcconfig"; path = "Target Support Files/Pods-iosApp/Pods-iosApp.debug.xcconfig"; sourceTree = ""; };
25 | /* End PBXFileReference section */
26 |
27 | /* Begin PBXFrameworksBuildPhase section */
28 | B01426CB7340A6D2DB48377F /* Frameworks */ = {
29 | isa = PBXFrameworksBuildPhase;
30 | buildActionMask = 2147483647;
31 | files = (
32 | BAFAD511946BE1B7F959BE28 /* Pods_iosApp.framework in Frameworks */,
33 | );
34 | runOnlyForDeploymentPostprocessing = 0;
35 | };
36 | /* End PBXFrameworksBuildPhase section */
37 |
38 | /* Begin PBXGroup section */
39 | 058557D7273AAEEB004C7B11 /* Preview Content */ = {
40 | isa = PBXGroup;
41 | children = (
42 | 058557D8273AAEEB004C7B11 /* Preview Assets.xcassets */,
43 | );
44 | path = "Preview Content";
45 | sourceTree = "";
46 | };
47 | 7555FF72242A565900829871 = {
48 | isa = PBXGroup;
49 | children = (
50 | 7555FF7D242A565900829871 /* iosApp */,
51 | 7555FF7C242A565900829871 /* Products */,
52 | D70514E77F66257625B50DFD /* Pods */,
53 | B129338B6DEF3EA4A0C01137 /* Frameworks */,
54 | );
55 | sourceTree = "";
56 | };
57 | 7555FF7C242A565900829871 /* Products */ = {
58 | isa = PBXGroup;
59 | children = (
60 | 7555FF7B242A565900829871 /* iosApp.app */,
61 | );
62 | name = Products;
63 | sourceTree = "";
64 | };
65 | 7555FF7D242A565900829871 /* iosApp */ = {
66 | isa = PBXGroup;
67 | children = (
68 | 058557BA273AAA24004C7B11 /* Assets.xcassets */,
69 | 7555FF8C242A565B00829871 /* Info.plist */,
70 | 2152FB032600AC8F00CF470E /* iOSApp.swift */,
71 | 058557D7273AAEEB004C7B11 /* Preview Content */,
72 | );
73 | path = iosApp;
74 | sourceTree = "";
75 | };
76 | B129338B6DEF3EA4A0C01137 /* Frameworks */ = {
77 | isa = PBXGroup;
78 | children = (
79 | 674F7982C8A359F6B1326788 /* Pods_iosApp.framework */,
80 | );
81 | name = Frameworks;
82 | sourceTree = "";
83 | };
84 | D70514E77F66257625B50DFD /* Pods */ = {
85 | isa = PBXGroup;
86 | children = (
87 | A7908C2F0D99EDFCF8D7FACA /* Pods-iosApp.debug.xcconfig */,
88 | 1793589FAA94DA6A4B88E809 /* Pods-iosApp.release.xcconfig */,
89 | );
90 | name = Pods;
91 | path = Pods;
92 | sourceTree = "";
93 | };
94 | /* End PBXGroup section */
95 |
96 | /* Begin PBXNativeTarget section */
97 | 7555FF7A242A565900829871 /* iosApp */ = {
98 | isa = PBXNativeTarget;
99 | buildConfigurationList = 7555FFA5242A565B00829871 /* Build configuration list for PBXNativeTarget "iosApp" */;
100 | buildPhases = (
101 | 3097459F715E26F12D3D18CE /* [CP] Check Pods Manifest.lock */,
102 | 7555FF77242A565900829871 /* Sources */,
103 | 7555FF79242A565900829871 /* Resources */,
104 | B01426CB7340A6D2DB48377F /* Frameworks */,
105 | );
106 | buildRules = (
107 | );
108 | dependencies = (
109 | );
110 | name = iosApp;
111 | productName = iosApp;
112 | productReference = 7555FF7B242A565900829871 /* iosApp.app */;
113 | productType = "com.apple.product-type.application";
114 | };
115 | /* End PBXNativeTarget section */
116 |
117 | /* Begin PBXProject section */
118 | 7555FF73242A565900829871 /* Project object */ = {
119 | isa = PBXProject;
120 | attributes = {
121 | LastSwiftUpdateCheck = 1130;
122 | LastUpgradeCheck = 1130;
123 | ORGANIZATIONNAME = orgName;
124 | TargetAttributes = {
125 | 7555FF7A242A565900829871 = {
126 | CreatedOnToolsVersion = 11.3.1;
127 | };
128 | };
129 | };
130 | buildConfigurationList = 7555FF76242A565900829871 /* Build configuration list for PBXProject "iosApp" */;
131 | compatibilityVersion = "Xcode 9.3";
132 | developmentRegion = en;
133 | hasScannedForEncodings = 0;
134 | knownRegions = (
135 | en,
136 | Base,
137 | );
138 | mainGroup = 7555FF72242A565900829871;
139 | productRefGroup = 7555FF7C242A565900829871 /* Products */;
140 | projectDirPath = "";
141 | projectRoot = "";
142 | targets = (
143 | 7555FF7A242A565900829871 /* iosApp */,
144 | );
145 | };
146 | /* End PBXProject section */
147 |
148 | /* Begin PBXResourcesBuildPhase section */
149 | 7555FF79242A565900829871 /* Resources */ = {
150 | isa = PBXResourcesBuildPhase;
151 | buildActionMask = 2147483647;
152 | files = (
153 | 058557D9273AAEEB004C7B11 /* Preview Assets.xcassets in Resources */,
154 | 058557BB273AAA24004C7B11 /* Assets.xcassets in Resources */,
155 | );
156 | runOnlyForDeploymentPostprocessing = 0;
157 | };
158 | /* End PBXResourcesBuildPhase section */
159 |
160 | /* Begin PBXShellScriptBuildPhase section */
161 | 3097459F715E26F12D3D18CE /* [CP] Check Pods Manifest.lock */ = {
162 | isa = PBXShellScriptBuildPhase;
163 | buildActionMask = 2147483647;
164 | files = (
165 | );
166 | inputFileListPaths = (
167 | );
168 | inputPaths = (
169 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
170 | "${PODS_ROOT}/Manifest.lock",
171 | );
172 | name = "[CP] Check Pods Manifest.lock";
173 | outputFileListPaths = (
174 | );
175 | outputPaths = (
176 | "$(DERIVED_FILE_DIR)/Pods-iosApp-checkManifestLockResult.txt",
177 | );
178 | runOnlyForDeploymentPostprocessing = 0;
179 | shellPath = /bin/sh;
180 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
181 | showEnvVarsInLog = 0;
182 | };
183 | /* End PBXShellScriptBuildPhase section */
184 |
185 | /* Begin PBXSourcesBuildPhase section */
186 | 7555FF77242A565900829871 /* Sources */ = {
187 | isa = PBXSourcesBuildPhase;
188 | buildActionMask = 2147483647;
189 | files = (
190 | 2152FB042600AC8F00CF470E /* iOSApp.swift in Sources */,
191 | );
192 | runOnlyForDeploymentPostprocessing = 0;
193 | };
194 | /* End PBXSourcesBuildPhase section */
195 |
196 | /* Begin XCBuildConfiguration section */
197 | 7555FFA3242A565B00829871 /* Debug */ = {
198 | isa = XCBuildConfiguration;
199 | buildSettings = {
200 | ALWAYS_SEARCH_USER_PATHS = NO;
201 | CLANG_ANALYZER_NONNULL = YES;
202 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
203 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
204 | CLANG_CXX_LIBRARY = "libc++";
205 | CLANG_ENABLE_MODULES = YES;
206 | CLANG_ENABLE_OBJC_ARC = YES;
207 | CLANG_ENABLE_OBJC_WEAK = YES;
208 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
209 | CLANG_WARN_BOOL_CONVERSION = YES;
210 | CLANG_WARN_COMMA = YES;
211 | CLANG_WARN_CONSTANT_CONVERSION = YES;
212 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
213 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
214 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
215 | CLANG_WARN_EMPTY_BODY = YES;
216 | CLANG_WARN_ENUM_CONVERSION = YES;
217 | CLANG_WARN_INFINITE_RECURSION = YES;
218 | CLANG_WARN_INT_CONVERSION = YES;
219 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
220 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
221 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
222 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
223 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
224 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
225 | CLANG_WARN_STRICT_PROTOTYPES = YES;
226 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
227 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
228 | CLANG_WARN_UNREACHABLE_CODE = YES;
229 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
230 | COPY_PHASE_STRIP = NO;
231 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
232 | ENABLE_STRICT_OBJC_MSGSEND = YES;
233 | ENABLE_TESTABILITY = YES;
234 | GCC_C_LANGUAGE_STANDARD = gnu11;
235 | GCC_DYNAMIC_NO_PIC = NO;
236 | GCC_NO_COMMON_BLOCKS = YES;
237 | GCC_OPTIMIZATION_LEVEL = 0;
238 | GCC_PREPROCESSOR_DEFINITIONS = (
239 | "DEBUG=1",
240 | "$(inherited)",
241 | );
242 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
243 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
244 | GCC_WARN_UNDECLARED_SELECTOR = YES;
245 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
246 | GCC_WARN_UNUSED_FUNCTION = YES;
247 | GCC_WARN_UNUSED_VARIABLE = YES;
248 | IPHONEOS_DEPLOYMENT_TARGET = 14.1;
249 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
250 | MTL_FAST_MATH = YES;
251 | ONLY_ACTIVE_ARCH = YES;
252 | SDKROOT = iphoneos;
253 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
254 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
255 | };
256 | name = Debug;
257 | };
258 | 7555FFA4242A565B00829871 /* Release */ = {
259 | isa = XCBuildConfiguration;
260 | buildSettings = {
261 | ALWAYS_SEARCH_USER_PATHS = NO;
262 | CLANG_ANALYZER_NONNULL = YES;
263 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
264 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
265 | CLANG_CXX_LIBRARY = "libc++";
266 | CLANG_ENABLE_MODULES = YES;
267 | CLANG_ENABLE_OBJC_ARC = YES;
268 | CLANG_ENABLE_OBJC_WEAK = YES;
269 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
270 | CLANG_WARN_BOOL_CONVERSION = YES;
271 | CLANG_WARN_COMMA = YES;
272 | CLANG_WARN_CONSTANT_CONVERSION = YES;
273 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
274 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
275 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
276 | CLANG_WARN_EMPTY_BODY = YES;
277 | CLANG_WARN_ENUM_CONVERSION = YES;
278 | CLANG_WARN_INFINITE_RECURSION = YES;
279 | CLANG_WARN_INT_CONVERSION = YES;
280 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
281 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
282 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
283 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
284 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
285 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
286 | CLANG_WARN_STRICT_PROTOTYPES = YES;
287 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
288 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
289 | CLANG_WARN_UNREACHABLE_CODE = YES;
290 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
291 | COPY_PHASE_STRIP = NO;
292 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
293 | ENABLE_NS_ASSERTIONS = NO;
294 | ENABLE_STRICT_OBJC_MSGSEND = YES;
295 | GCC_C_LANGUAGE_STANDARD = gnu11;
296 | GCC_NO_COMMON_BLOCKS = YES;
297 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
298 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
299 | GCC_WARN_UNDECLARED_SELECTOR = YES;
300 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
301 | GCC_WARN_UNUSED_FUNCTION = YES;
302 | GCC_WARN_UNUSED_VARIABLE = YES;
303 | IPHONEOS_DEPLOYMENT_TARGET = 14.1;
304 | MTL_ENABLE_DEBUG_INFO = NO;
305 | MTL_FAST_MATH = YES;
306 | SDKROOT = iphoneos;
307 | SWIFT_COMPILATION_MODE = wholemodule;
308 | SWIFT_OPTIMIZATION_LEVEL = "-O";
309 | VALIDATE_PRODUCT = YES;
310 | };
311 | name = Release;
312 | };
313 | 7555FFA6242A565B00829871 /* Debug */ = {
314 | isa = XCBuildConfiguration;
315 | baseConfigurationReference = A7908C2F0D99EDFCF8D7FACA /* Pods-iosApp.debug.xcconfig */;
316 | buildSettings = {
317 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
318 | CODE_SIGN_STYLE = Automatic;
319 | DEVELOPMENT_ASSET_PATHS = "\"iosApp/Preview Content\"";
320 | ENABLE_PREVIEWS = YES;
321 | INFOPLIST_FILE = iosApp/Info.plist;
322 | LD_RUNPATH_SEARCH_PATHS = (
323 | "$(inherited)",
324 | "@executable_path/Frameworks",
325 | );
326 | PRODUCT_BUNDLE_IDENTIFIER = orgIdentifier.iosApp;
327 | PRODUCT_NAME = "$(TARGET_NAME)";
328 | SWIFT_VERSION = 5.0;
329 | TARGETED_DEVICE_FAMILY = "1,2";
330 | };
331 | name = Debug;
332 | };
333 | 7555FFA7242A565B00829871 /* Release */ = {
334 | isa = XCBuildConfiguration;
335 | baseConfigurationReference = 1793589FAA94DA6A4B88E809 /* Pods-iosApp.release.xcconfig */;
336 | buildSettings = {
337 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
338 | CODE_SIGN_STYLE = Automatic;
339 | DEVELOPMENT_ASSET_PATHS = "\"iosApp/Preview Content\"";
340 | ENABLE_PREVIEWS = YES;
341 | INFOPLIST_FILE = iosApp/Info.plist;
342 | LD_RUNPATH_SEARCH_PATHS = (
343 | "$(inherited)",
344 | "@executable_path/Frameworks",
345 | );
346 | PRODUCT_BUNDLE_IDENTIFIER = orgIdentifier.iosApp;
347 | PRODUCT_NAME = "$(TARGET_NAME)";
348 | SWIFT_VERSION = 5.0;
349 | TARGETED_DEVICE_FAMILY = "1,2";
350 | };
351 | name = Release;
352 | };
353 | /* End XCBuildConfiguration section */
354 |
355 | /* Begin XCConfigurationList section */
356 | 7555FF76242A565900829871 /* Build configuration list for PBXProject "iosApp" */ = {
357 | isa = XCConfigurationList;
358 | buildConfigurations = (
359 | 7555FFA3242A565B00829871 /* Debug */,
360 | 7555FFA4242A565B00829871 /* Release */,
361 | );
362 | defaultConfigurationIsVisible = 0;
363 | defaultConfigurationName = Release;
364 | };
365 | 7555FFA5242A565B00829871 /* Build configuration list for PBXNativeTarget "iosApp" */ = {
366 | isa = XCConfigurationList;
367 | buildConfigurations = (
368 | 7555FFA6242A565B00829871 /* Debug */,
369 | 7555FFA7242A565B00829871 /* Release */,
370 | );
371 | defaultConfigurationIsVisible = 0;
372 | defaultConfigurationName = Release;
373 | };
374 | /* End XCConfigurationList section */
375 | };
376 | rootObject = 7555FF73242A565900829871 /* Project object */;
377 | }
378 |
--------------------------------------------------------------------------------
/ios/iosApp.xcodeproj/xcuserdata/kashif.mehmood.xcuserdatad/xcschemes/iosApp.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
8 |
14 |
15 |
16 |
17 |
18 |
22 |
23 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/ios/iosApp.xcodeproj/xcuserdata/kashif.mehmood.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | iosApp.xcscheme
8 |
9 | orderHint
10 | 0
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/ios/iosApp.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/ios/iosApp.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios/iosApp.xcworkspace/xcuserdata/kashif.mehmood.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Kashif-E/Compose-Multiplatform-Video-Player/a9c00c7b6e7f4683eda27d0cc3cd3df3ff79c09d/ios/iosApp.xcworkspace/xcuserdata/kashif.mehmood.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/ios/iosApp.xcworkspace/xcuserdata/kashif.mehmood.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/ios/iosApp/Assets.xcassets/AccentColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "idiom" : "universal"
5 | }
6 | ],
7 | "info" : {
8 | "author" : "xcode",
9 | "version" : 1
10 | }
11 | }
--------------------------------------------------------------------------------
/ios/iosApp/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "scale" : "2x",
6 | "size" : "20x20"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "scale" : "3x",
11 | "size" : "20x20"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "scale" : "2x",
16 | "size" : "29x29"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "scale" : "3x",
21 | "size" : "29x29"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "scale" : "2x",
26 | "size" : "40x40"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "scale" : "3x",
31 | "size" : "40x40"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "scale" : "2x",
36 | "size" : "60x60"
37 | },
38 | {
39 | "idiom" : "iphone",
40 | "scale" : "3x",
41 | "size" : "60x60"
42 | },
43 | {
44 | "idiom" : "ipad",
45 | "scale" : "1x",
46 | "size" : "20x20"
47 | },
48 | {
49 | "idiom" : "ipad",
50 | "scale" : "2x",
51 | "size" : "20x20"
52 | },
53 | {
54 | "idiom" : "ipad",
55 | "scale" : "1x",
56 | "size" : "29x29"
57 | },
58 | {
59 | "idiom" : "ipad",
60 | "scale" : "2x",
61 | "size" : "29x29"
62 | },
63 | {
64 | "idiom" : "ipad",
65 | "scale" : "1x",
66 | "size" : "40x40"
67 | },
68 | {
69 | "idiom" : "ipad",
70 | "scale" : "2x",
71 | "size" : "40x40"
72 | },
73 | {
74 | "idiom" : "ipad",
75 | "scale" : "1x",
76 | "size" : "76x76"
77 | },
78 | {
79 | "idiom" : "ipad",
80 | "scale" : "2x",
81 | "size" : "76x76"
82 | },
83 | {
84 | "idiom" : "ipad",
85 | "scale" : "2x",
86 | "size" : "83.5x83.5"
87 | },
88 | {
89 | "idiom" : "ios-marketing",
90 | "scale" : "1x",
91 | "size" : "1024x1024"
92 | }
93 | ],
94 | "info" : {
95 | "author" : "xcode",
96 | "version" : 1
97 | }
98 | }
--------------------------------------------------------------------------------
/ios/iosApp/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
--------------------------------------------------------------------------------
/ios/iosApp/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE)
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 | LSRequiresIPhoneOS
22 |
23 | UIApplicationSceneManifest
24 |
25 | UIApplicationSupportsMultipleScenes
26 |
27 |
28 | UIRequiredDeviceCapabilities
29 |
30 | armv7
31 |
32 | UISupportedInterfaceOrientations
33 |
34 | UIInterfaceOrientationPortrait
35 | UIInterfaceOrientationLandscapeLeft
36 | UIInterfaceOrientationLandscapeRight
37 |
38 | UISupportedInterfaceOrientations~ipad
39 |
40 | UIInterfaceOrientationPortrait
41 | UIInterfaceOrientationPortraitUpsideDown
42 | UIInterfaceOrientationLandscapeLeft
43 | UIInterfaceOrientationLandscapeRight
44 |
45 | UILaunchScreen
46 |
47 |
48 |
--------------------------------------------------------------------------------
/ios/iosApp/Preview Content/Preview Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
--------------------------------------------------------------------------------
/ios/iosApp/iOSApp.swift:
--------------------------------------------------------------------------------
1 | import SwiftUI
2 | import common
3 |
4 |
5 | @UIApplicationMain
6 | class AppDelegate: UIResponder, UIApplicationDelegate {
7 | var window: UIWindow?
8 |
9 | override init(){
10 | KoinKt.doInitKoin(baseUrl: "base url")
11 | }
12 |
13 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
14 | window = UIWindow(frame: UIScreen.main.bounds)
15 | let mainViewController = Main_iosKt.MainViewController()
16 | window?.rootViewController = mainViewController
17 | window?.makeKeyAndVisible()
18 | return true
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/settings.gradle.kts:
--------------------------------------------------------------------------------
1 | enableFeaturePreview("VERSION_CATALOGS")
2 | enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")
3 |
4 | //TODO: change project root you may also want to refactor the name of the directory
5 | rootProject.name = "ComposeVideoPlayer"
6 |
7 | include(":android", ":desktop", ":common")
8 |
--------------------------------------------------------------------------------