Gradle plugin for simplify Kotlin Multiplatform mobile configurations

Overview

mobile-multiplatform
GitHub license Download

Mobile Multiplatform gradle plugin

This is a Gradle plugin for simple setup of Kotlin Multiplatform mobile Gradle modules.

Setup

buildSrc/build.gradle.kts

repositories {
    mavenCentral()
    google()
}

dependencies {
    implementation("dev.icerock:mobile-multiplatform:0.12.0")
    implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.20")
    implementation("com.android.tools.build:gradle:4.1.1")
}

Usage

Setup mobile targets without config

build.gradle.kts

plugins {
    id("com.android.library")
    id("org.jetbrains.kotlin.multiplatform")
    id("dev.icerock.mobile.multiplatform.targets")
}

Plugin automatically setup android, ios targets. Android target also automatically configured with dev.icerock.mobile.multiplatform.android-manifest and dev.icerock.mobile.multiplatform.android-sources plugins.

By default used ios() targets creation with intermediate source set iosMain. To disable it add into gradle.properties line:

mobile.multiplatform.useIosShortcut=false

To disable warning about used ios targets add into gradle.properties line:

mobile.multiplatform.iosTargetWarning=false

Setup AndroidManifest.xml in androidMain sourceSet

build.gradle.kts

plugins {
    id("dev.icerock.mobile.multiplatform.android-manifest")
}

After enable this plugin you can move AndroidManifest.xml from src/main/AndroidManifest.xml to src/androidMain/AndroidManifest.xml

Setup android sourceSets in android prefixed source sets

build.gradle.kts

plugins {
    id("dev.icerock.mobile.multiplatform.android-sources")
}

After enable this plugin you can move android's main source set to androidMain, release to androidRelease, test to androidTest etc.

Setup cocoapods integration for iOS

build.gradle.kts

plugins {
    id("dev.icerock.mobile.multiplatform.ios-framework")
}

Plugin will setup sync gradle tasks in group cocoapods for cocoapods integration.

Example of podspec for integration here - https://github.com/icerockdev/moko-template/blob/master/mpp-library/MultiPlatformLibrary.podspec

Add artifacts to export

// optional for export dependencies into framework header
framework {
    export(project = project(":myproject"))
    export(kotlinNativeExportable = MultiPlatfomLibrary(<...>))
    export(kotlinNativeExportable = MultiPlatfomModule(<...>))
    export(arm64Dependency = "my.group:name-iosarm64:0.1.0", x64Dependency = "my.group:name-iosx64:0.1.0")
    export(artifact = "my.group:name:0.1.0") // common artifact
    export(provider = libs.myLib) // gradle 7 version catalog libraries accessors
}

Setup cocoapods integration for all Apple frameworks

build.gradle.kts

plugins {
    id("dev.icerock.mobile.multiplatform.apple-framework")
}

with framework configuration you can add dependencies to export (just like in iOS framework).

Setup CocoaPods interop

build.gradle.kts

plugins {
    id("dev.icerock.mobile.multiplatform.cocoapods")
}

cocoaPods {
    podsProject = file("../ios-app/Pods/Pods.xcodeproj") // here should be path to your Pods project
    buildConfiguration = "dev-debug" // optional, default is "debug"

    pod("MBProgressHUD") // create cInterop and link with CocoaPod where schema and module is same
    pod(schema = "moko-widgets-flat", module = "mokoWidgetsFlat") // create cInterop and link with CocoaPod where schema and module is different
    pod(schema = "moko-widgets-flat", module = "mokoWidgetsFlat", onlyLink = true) // not create cInterop - just link framework with this CocoaPod
}

Also path to Pods project and configuration can be set globally into gradle.properties

mobile.multiplatform.podsProject=ios-app/Pods/Pods.xcodeproj
mobile.multiplatform.podsConfiguration=dev-debug

podsProject should be relative path from root gradle project.

Multiple plugins in one line (deprecated, saved for backward compatibility)

plugins { 
    id("dev.icerock.mobile.multiplatform")
}

This line will enable:

  • dev.icerock.mobile.multiplatform.cocoapods
  • dev.icerock.mobile.multiplatform.targets
  • publish of android build variants - release and debug

Definition of dependencies (deprecated, saved for backward compatibility)

val mokoTime = MultiPlatformLibrary(
    android = "dev.icerock.moko:time-android:0.1.0",
    common = "dev.icerock.moko:time:0.1.0",
    iosX64 = "dev.icerock.moko:time-iosx64:0.1.0",
    iosArm64 = "dev.icerock.moko:time-iosarm64:0.1.0"
)

val appCompat = AndroidLibrary(
    name = "androidx.appcompat:appcompat:1.1.0"
)

val myFeature = MultiPlatformModule(
    name = ":mpp-library:feature:myFeature"
)

Setup dependencies (deprecated, saved for backward compatibility)

build.gradle.kts

dependencies {
    mppLibrary(mokoTime)
    androidLibrary(appCompat)
    mppModule(myFeature)
}

License

Copyright 2019 IceRock MAG Inc.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Comments
  • Update ios target configuration with shortcut

    Update ios target configuration with shortcut

    The ios shortcut creates targets for iosArm64 and iosX64 while also creating an intermediate source set of iosMain. Manually configuring iosArm64 and iosX64 is no longer required as of 1.3.60.

    Signed-off-by: Nicholas J Halase [email protected]

    waiting-kotlin-update 
    opened by nhalase 3
  • Custom framework name

    Custom framework name

    Sometimes it may be needed to use some multiplatform libraries in iOS Application, and, as I understand, Swift doesn't allow us to import some frameworks with the same name. It will be useful to add an optional parameter with the default value to setupFramework method.

    enhancement 
    opened by mksmdvdff 2
  • Add iosSimulatorArm64, macosArm64, watchosSimulatorArm64, and tvosSim…

    Add iosSimulatorArm64, macosArm64, watchosSimulatorArm64, and tvosSim…

    Add iosSimulatorArm64, macosArm64, watchosSimulatorArm64, and tvosSimulatorArm64 targets

    Closes https://github.com/icerockdev/mobile-multiplatform-gradle-plugin/issues/55

    opened by nrobi144 1
  • Add ability link ios framework to kotlin mpp ios target

    Add ability link ios framework to kotlin mpp ios target

    In https://github.com/icerockdev/moko-maps used cinterop to connect with GoogleMaps cocoapod, and https://github.com/icerockdev/moko-widgets require cinterop with some iOS frameworks (wich can be implemented on project-side, not library).

    Need implement simple configurable solution of CInterop configuration.

    enhancement 
    opened by Alex009 1
  • Add plugin for change android sources location

    Add plugin for change android sources location

    for cases when android gradle plugin correctly work with moved resources and other we should give plugin to simple enable android resources in androidMain sourceSet instead of main

    plugin should be named dev.icerock.mobile.multiplatform.android-sources. now it implemented in dev.icerock.mobile.multiplatform.targets plugin

    enhancement 
    opened by Alex009 0
  • Add plugin for change only AndroidManifest location

    Add plugin for change only AndroidManifest location

    if we change all android directories then android gradle plugin can broke own logic of databinding/buildflavours so we should give way to setup MPP libs without big configuration but with correctly located manifest.

    KMM template in android studio now create this config:

    android {
        sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml")
    }
    

    we should do it in plugin dev.icerock.mobile.multiplatform.android-manifest

    enhancement 
    opened by Alex009 0
  • Build failed with gradle v7.0.2

    Build failed with gradle v7.0.2

    Project sample https://gitlab.icerockdev.com/tchernov/mobile-moko-boilerplate/-/tree/gradle-7.0.2

    Execution failed for task ':cocoapodBuildMCRCDynamicProxyIphonesimulatorX86_64'.
    > 'void org.gradle.internal.io.LineBufferingOutputStream.<init>(org.gradle.internal.io.TextStream)'
    
    bug 
    opened by DevTchernov 0
  • Fix warnings from kotlin multiplatform plugin

    Fix warnings from kotlin multiplatform plugin

    we got many warning at gradle configuration:

    Kotlin Multiplatform Projects are an Alpha feature. See: https://kotlinlang.org/docs/reference/evolution/components-stability.html. To hide this message, add 'kotlin.mpp.stability.nowarn=true' to the Gradle properties.
    The Kotlin source set androidAndroidTestRelease was configured but not added to any Kotlin compilation. You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'.
    See https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#connecting-source-sets
    The Kotlin source set androidAndroidTestRelease was configured but not added to any Kotlin compilation. You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'.
    See https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#connecting-source-sets
    The Kotlin source set androidAndroidTestRelease was configured but not added to any Kotlin compilation. You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'.
    See https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#connecting-source-sets
    The Kotlin source set androidAndroidTestRelease was configured but not added to any Kotlin compilation. You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'.
    See https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#connecting-source-sets
    The Kotlin source set androidAndroidTestRelease was configured but not added to any Kotlin compilation. You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'.
    See https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#connecting-source-sets
    The Kotlin source set androidAndroidTestRelease was configured but not added to any Kotlin compilation. You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'.
    See https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#connecting-source-sets
    The Kotlin source set androidAndroidTestRelease was configured but not added to any Kotlin compilation. You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'.
    See https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#connecting-source-sets
    The Kotlin source set androidAndroidTestRelease was configured but not added to any Kotlin compilation. You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'.
    See https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#connecting-source-sets
    The Kotlin source set androidAndroidTestRelease was configured but not added to any Kotlin compilation. You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'.
    See https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#connecting-source-sets
    The Kotlin source set androidAndroidTestRelease was configured but not added to any Kotlin compilation. You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'.
    See https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#connecting-source-sets
    The Kotlin source set androidAndroidTestRelease was configured but not added to any Kotlin compilation. You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'.
    See https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#connecting-source-sets
    The Kotlin source set androidAndroidTestRelease was configured but not added to any Kotlin compilation. You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'.
    See https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#connecting-source-sets
    The Kotlin source set androidAndroidTestRelease was configured but not added to any Kotlin compilation. You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'.
    See https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#connecting-source-sets
    The Kotlin source set androidAndroidTestRelease was configured but not added to any Kotlin compilation. You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'.
    See https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#connecting-source-sets
    The Kotlin source set androidAndroidTestRelease was configured but not added to any Kotlin compilation. You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'.
    See https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#connecting-source-sets
    The Kotlin source set androidAndroidTestRelease was configured but not added to any Kotlin compilation. You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'.
    See https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#connecting-source-sets
    The Kotlin source set androidAndroidTestRelease was configured but not added to any Kotlin compilation. You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'.
    See https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#connecting-source-sets
    The Kotlin source set androidAndroidTestRelease was configured but not added to any Kotlin compilation. You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'.
    See https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#connecting-source-sets
    The Kotlin source set androidAndroidTestRelease was configured but not added to any Kotlin compilation. You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'.
    See https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#connecting-source-sets
    The Kotlin source set androidAndroidTestRelease was configured but not added to any Kotlin compilation. You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'.
    See https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#connecting-source-sets
    The Kotlin source set androidAndroidTestRelease was configured but not added to any Kotlin compilation. You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'.
    See https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#connecting-source-sets
    The Kotlin source set androidAndroidTestRelease was configured but not added to any Kotlin compilation. You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'.
    See https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#connecting-source-sets
    The Kotlin source set androidAndroidTestRelease was configured but not added to any Kotlin compilation. You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'.
    See https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#connecting-source-sets
    The Kotlin source set androidAndroidTestRelease was configured but not added to any Kotlin compilation. You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'.
    See https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#connecting-source-sets
    The Kotlin source set androidAndroidTestRelease was configured but not added to any Kotlin compilation. You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'.
    See https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#connecting-source-sets
    The Kotlin source set androidAndroidTestRelease was configured but not added to any Kotlin compilation. You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'.
    See https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#connecting-source-sets
    The Kotlin source set androidAndroidTestRelease was configured but not added to any Kotlin compilation. You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'.
    See https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#connecting-source-sets
    The Kotlin source set androidAndroidTestRelease was configured but not added to any Kotlin compilation. You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'.
    See https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#connecting-source-sets
    The Kotlin source set androidAndroidTestRelease was configured but not added to any Kotlin compilation. You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'.
    See https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#connecting-source-sets
    The Kotlin source set androidAndroidTestRelease was configured but not added to any Kotlin compilation. You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'.
    See https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#connecting-source-sets
    The Kotlin source set androidAndroidTestRelease was configured but not added to any Kotlin compilation. You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'.
    See https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#connecting-source-sets
    The Kotlin source set androidAndroidTestRelease was configured but not added to any Kotlin compilation. You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'.
    See https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#connecting-source-sets
    The Kotlin source set androidAndroidTestRelease was configured but not added to any Kotlin compilation. You can add a source set to a target's compilation by connecting it with the compilation's default source set using 'dependsOn'.
    See https://kotlinlang.org/docs/reference/building-mpp-with-gradle.html#connecting-source-sets
    

    will be good if we fix all it in our plugin

    see https://discuss.kotlinlang.org/t/disabling-androidandroidtestrelease-source-set-in-gradle-kotlin-dsl-script/21448

    enhancement 
    opened by Alex009 0
  • Transitive onlyLink support

    Transitive onlyLink support

    If we add onlyLink = true cocoapod, but nowhere not add cinterop variant of cocoapod - we will not link with this cocoapod. and because of it in moko-crash-reporting we can't use pod("GoogleUtilities", onlyLink = true)

    but for now we can use:

    cocoaPods {
        pod("GoogleUtilities", onlyLink = true)
    }
    
    kotlin.targets.withType(org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget::class.java).all {
        binaries.withType(org.jetbrains.kotlin.gradle.plugin.mpp.Framework::class.java).all {
            linkerOpts("-framework", "GoogleUtilities")
        }
    }
    

    need to add linker opts in onlyLink case.

    enhancement 
    opened by Alex009 0
  • Add support of build-cache for cocoapods build tasks

    Add support of build-cache for cocoapods build tasks

    https://docs.gradle.org/current/userguide/build_cache.html#sec:task_output_caching_details

    now build cocoapods tasks may take significant build-time and on CI up-to-date mark can't be used. but build-cache can be used on CI and cocoapods artifacts is good for cache

    enhancement 
    opened by Alex009 0
  • add support of CocoaPods without module definition

    add support of CocoaPods without module definition

    some cocoapods doesn’t have module definition and to cinterop with them we can't use module = ***, we should pass header files for example - https://github.com/cloudpayments/SDK-iOS

    enhancement 
    opened by Alex009 0
  • Add generation of dummy framework to simplify pod install with cinterop

    Add generation of dummy framework to simplify pod install with cinterop

    How cocoapods detect static/dynamic framework for correct integration - https://github.com/CocoaPods/CocoaPods/blob/master/lib/cocoapods/xcode/linkage_analyzer.rb How this implemented in kotlin plugin - https://github.com/JetBrains/kotlin/blob/master/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/CocoapodsTasks.kt#L209

    now dummy generation task support dynamic frameworks too, so we can just use kotlin plugin's version

    enhancement 
    opened by Alex009 2
Releases(release/0.14.2)
Owner
IceRock Development
Kotlin Multiplatform developers team
IceRock Development
KMM RSS Reader: an open-source, mobile, cross-platform application built with Kotlin Multiplatform Mobile.

KMM RSS Reader This is an open-source, mobile, cross-platform application built with Kotlin Multiplatform Mobile. It's a simple RSS reader, and you ca

Kotlin 1.4k Jan 4, 2023
A Gradle plugin for Kotlin Multiplatform projects that generate a XCFramework for Apple targets or a FatFramework for iOS targets, and manages the publishing process in a CocoaPod Repository.

KMP Framework Bundler KMP Framework Bundler is a Gradle plugin for Kotlin Multiplatform projects that generate a XCFramework for Apple targets or a Fa

Marco Gomiero 17 Oct 29, 2022
🔓 Kotlin version of the popular google/easypermissions wrapper library to simplify basic system permissions logic on Android M or higher.

EasyPermissions-ktx Kotlin version of the popular googlesample/easypermissions wrapper library to simplify basic system permissions logic on Android M

Madalin Valceleanu 326 Dec 23, 2022
Gits-android-extensions - A collection of Kotlin extensions to simplify Android development

gits-android-extensions A collection of Kotlin extensions to simplify Android de

GITS Indonesia 3 Feb 3, 2022
Oratio Library for Android Studio helps you simplify your Android TTS codes

Oratio Oratio is a library for Android Studio. This library is useful to a number of developers who are currently making apps using android TTS(Text-T

Jacob Lim 1 Oct 28, 2021
General purpose parsing framework. Simplify parsing of text

General purpose parsing framework. Simplify parsing of text. Allows capture complex nested formats with simple and human-readable syntax.

Roman 1 Nov 16, 2021
Simplify mutating "immutable" state models

Mutekt (Pronunciation: /mjuːˈteɪt/, 'k' is silent) "Simplify mutating "immutable" state models" Generates mutable models from immutable model definiti

Shreyas Patil 179 Nov 30, 2022
Opinionated Redux-like implementation backed by Kotlin Coroutines and Kotlin Multiplatform Mobile

CoRed CoRed is Redux-like implementation that maintains the benefits of Redux's core idea without the boilerplate. No more action types, action creato

Kittinun Vantasin 28 Dec 10, 2022
An app architecture for Kotlin/Native on Android/iOS. Use Kotlin Multiplatform Mobile.

An app architecture for Kotlin/Native on Android/iOS. Use Kotlin Multiplatform Mobile. 项目架构主要分为原生系统层、Android/iOS业务SDK层、KMM SDK层、KMM业务逻辑SDK层、iOS sdkfra

libill 4 Nov 20, 2022
Mobile client for official Nextcloud News App written as Kotlin Multiplatform Project

Newsout Android and iOS mobile client for Nextcloud news App. The Android client is already available to download in the Play Store. F-Droid and Apple

Simon Schubert 118 Oct 3, 2022
KaMP Kit by Touchlab is a collection of code and tools designed to get your mobile team started quickly with Kotlin Multiplatform.

KaMP Kit Welcome to the KaMP Kit! About Goal The goal of the KaMP Kit is to facilitate your evaluation of Kotlin Multiplatform (aka KMP). It is a coll

Touchlab 1.7k Jan 3, 2023
Kotlin Multiplatform Mobile App Template

KMMT : Kotlin Multiplatform Mobile Template Kotlin Multiplatform Mobile Development Simplified KMMT is a KMM based project template designed to simpli

Jitty Andiyan 207 Jan 4, 2023
Playground for learning Kotlin Multiplatform Mobile

This is a playground for learning KMP (KMM Plugin for android studio). Requirements Android Studio Canary 8 Architecture Thanks https://twitter.com/jo

Mitch Tabian 111 Dec 27, 2022
Ethereum Web3 implementation for mobile (android & ios) Kotlin Multiplatform development

Mobile Kotlin web3 This is a Kotlin MultiPlatform library that ... Table of Contents Features Requirements Installation Usage Samples Set Up Locally C

IceRock Development 32 Aug 26, 2022
A sample project that helps to start building a Mobile Kotlin Multiplatform application

Mobile Kotlin multiplatform project template A sample project that helps to start building a Mobile Kotlin Multiplatform application. It establishes a

Dizel 0 Oct 16, 2021
Location Service Manager for Kotlin Multiplatform Mobile iOS and android

Location Service Manager for Kotlin Multiplatform Mobile iOS and android Features Provides simple permission settings Dramatically reduce the amount o

LINE 55 Dec 10, 2022
Kotlin Multiplatform Mobile demo for Android and iOS - app for viewing Cat pictures

CatViewerDemo Android demo iOS demo Kotlin Multiplatform Mobile demo for Android and iOS. App for viewing Cat pictures from Cats API. This sample show

Martin Rajniak 111 Dec 18, 2022
A local storage management library for Kotlin Multiplatform Mobile iOS and android

A local storage management library for Kotlin Multiplatform Mobile iOS and android Features iOS and Android local storage in one interface Provides ge

LINE 20 Oct 30, 2022
Kotlin Multiplatform Mobile version of Tisdagsgolfen... yet another version.

TheCube in Kotlin Multiplatform Experimenting with KMM, and Kotlin, Jetpack, SwiftUI, and all the other new stuff... https://kotlinlang.org/docs/kmm-g

Kim Fransman 0 Dec 25, 2022