# Stories by IceRock Development on Medium

Stories by IceRock Development on Medium

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Faster Development at a Lower Cost. Migration to Kotlin Multiplatform Mobile

DevFeed: [Faster Development at a Lower Cost. Migration to Kotlin Multiplatform Mobile](<https://devfeed.tech/articles/faster-development-at-a-lower-cost-migration-to-kotlin-multiplatform-mobile-24583.md>)

Original publisher: [Read original article](<https://medium.com/icerock/faster-development-at-a-lower-cost-migration-to-kotlin-multiplatform-mobile-4f27518b99a5?source=rss-2f461fccc401------2>)

Author: IceRock Development

Published: 2023-04-07T12:08:45Z

Content type: article

Language: en

Sources: [Stories by IceRock Development on Medium](<https://devfeed.tech/sources/stories-by-icerock-development-on-medium.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [migration](<https://devfeed.tech/topics/migration.md>), [Development](<https://devfeed.tech/topics/development.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [app-development](<https://devfeed.tech/tags/app-development.md>), [cost](<https://devfeed.tech/tags/cost.md>), [development](<https://devfeed.tech/tags/development.md>), [ios](<https://devfeed.tech/tags/ios.md>), [ios-app-development](<https://devfeed.tech/tags/ios-app-development.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlin-multiplatform-mobile](<https://devfeed.tech/tags/kotlin-multiplatform-mobile.md>), [migration](<https://devfeed.tech/tags/migration.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [mobile-app-development](<https://devfeed.tech/tags/mobile-app-development.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>)

### AI overview

This article explains when and how to migrate existing Android and iOS applications to Kotlin Multiplatform Mobile. It outlines migration scenarios and discusses potential budget savings, faster development, shared business logic, and platform consistency, while citing cost examples and survey findings.

### Source excerpt

Kotlin Multiplatform Mobile is a multiplatform tool that allows you to write universal code for iOS and Android, while saving up to a third of your budget and speeding up the development by 25%. But what if you already have a project, and you want to migrate to KMM? In this article we talk about what type of multiplatform migration costs $1300, $6000 and $40000. When should you integrate KMM? You can migrate to Kotlin Multiplatform Mobile both at the start of your development and at the implementation or launch stage. In order for the migration to make sense, one or more of the following conditions should apply: You already have an app for multiple platforms, Android and iOS, or you have just started developing such an app. Your app with Android and iOS versions has a complex business logic but a simple UI. For instance, it uses offline synchronization. You already have an Android app in Kotlin, but you urgently need an iOS version which utilizes your previous work. 60% of developers use or have tried Kotlin Multiplatform in production according to this recently published survey by JetBrains.What are the benefits of KMM integration? It can potentially save you up to a third of your budget. This is mainly because you develop a common code base for two platforms, Android and iOS, which can be done by a single developer. You can speed up your development by 25% and implement new features on both platforms faster and easier in the future. The projects will behave identically on these platforms without any discrepancies in minute details or complex cases. iOS and Android developers will share the context, which will allow them to understand each other's code in any part of the business logic and to promptly improve and fix it. These might be the reasons why over 75% of those who have played around with Kotlin Multiplatform are considering to use it for their production projects.How does KMM migration occur? The process of migrating to KMM depends on your current situatio

## Why Businesses Choose Kotlin Multiplatform Mobile: Native UI and Improvement Potential

DevFeed: [Why Businesses Choose Kotlin Multiplatform Mobile: Native UI and Improvement Potential](<https://devfeed.tech/articles/why-businesses-choose-kotlin-multiplatform-mobile-native-ui-and-improvement-potential-24590.md>)

Original publisher: [Read original article](<https://medium.com/icerock/why-businesses-choose-kotlin-multiplatform-mobile-native-ui-and-improvement-potential-c9093455552b?source=rss-2f461fccc401------2>)

Author: IceRock Development

Published: 2023-02-16T08:46:23Z

Content type: article

Language: en

Sources: [Stories by IceRock Development on Medium](<https://devfeed.tech/sources/stories-by-icerock-development-on-medium.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Android](<https://devfeed.tech/topics/android.md>), [App](<https://devfeed.tech/topics/app.md>), [Development](<https://devfeed.tech/topics/development.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Back end](<https://devfeed.tech/topics/backend.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [app](<https://devfeed.tech/tags/app.md>), [backend](<https://devfeed.tech/tags/backend.md>), [buisness](<https://devfeed.tech/tags/buisness.md>), [developer](<https://devfeed.tech/tags/developer.md>), [development](<https://devfeed.tech/tags/development.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlin-multiplatform-mobile](<https://devfeed.tech/tags/kotlin-multiplatform-mobile.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [mobile-app-development](<https://devfeed.tech/tags/mobile-app-development.md>)

### AI overview

This case study explains how Kotlin Multiplatform Mobile was used to build Moika-Moika, a car wash search app for Ucar with Android and iOS versions. The app integrates backend data about car washes, supports map-based search, user-specific rates, in-app payment, and multiple vehicles.

### Source excerpt

In most cases, entrepreneurs have an idea for what they would like an app to do, but are uncertain as to what technology would make it efficient, user-friendly and cost-effective. As experts in Kotlin Multiplatform Mobile, we will use this article to explore how this technology helped us create Moika-Moika ("Carwash-Carwash" in Russian) -- a car wash search app for the Ucar company, and how our client benefited from it. What the client wanted The app had been commissioned by Ucar, a car wash marketplace. Since we had had prior relationship with Ucar, the client was already familiar with our approach and came to us specifically looking to take advantage of our expertise in KMM with plans to create two versions of the app -- Android and iOS. The product was supposed to solve the problem of access to car washes -- the idea was to create something like Uber, but for car washes. At the same time, we needed to incorporate the client's backend with up-to-date information on car washes in the area, such as operation hours, prices and promotions, as well as to set up a feature for service selection aтв payment. The app was intended primarily for cab drivers, carsharing service providers, and commercial vehicle drivers. We also included a separate set of features for private car owners. How we made searching for car washes convenient The app helps car owners find the most suitable car wash on the map in terms of location, price and current promotions. For this we developed several features and provided access to up-to-date information. Moika-Moika shows car washes on the map with all the necessary information: working hours, prices, promotions, and free capacity status. The app chooses rates depending on whether the user is a taxi driver or a regular car owner. Users can pay for the services straight away in the app. This way, when they arrive at the car wash, the employees are already aware of which services they are supposed to provide and can identify the client's car by the

## Prototyping as a Quick and Cost-Effective Way to Test Hypotheses

DevFeed: [Prototyping as a Quick and Cost-Effective Way to Test Hypotheses](<https://devfeed.tech/articles/prototyping-as-a-quick-and-cost-effective-way-to-test-hypotheses-24588.md>)

Original publisher: [Read original article](<https://medium.com/icerock/prototyping-as-a-quick-and-cost-effective-way-to-test-hypotheses-7ee185ef9095?source=rss-2f461fccc401------2>)

Author: IceRock Development

Published: 2023-02-09T10:58:46Z

Content type: article

Language: en

Sources: [Stories by IceRock Development on Medium](<https://devfeed.tech/sources/stories-by-icerock-development-on-medium.md>)

Topics: [Development](<https://devfeed.tech/topics/development.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [ui](<https://devfeed.tech/topics/ui.md>), [navigation](<https://devfeed.tech/topics/navigation.md>), [App](<https://devfeed.tech/topics/app.md>)

Tags: [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [apps](<https://devfeed.tech/tags/apps.md>), [cost](<https://devfeed.tech/tags/cost.md>), [design](<https://devfeed.tech/tags/design.md>), [effective](<https://devfeed.tech/tags/effective.md>), [ios-app-development](<https://devfeed.tech/tags/ios-app-development.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [mobile-app-development](<https://devfeed.tech/tags/mobile-app-development.md>), [mobile-apps](<https://devfeed.tech/tags/mobile-apps.md>), [navigation](<https://devfeed.tech/tags/navigation.md>), [prototyping](<https://devfeed.tech/tags/prototyping.md>), [ui](<https://devfeed.tech/tags/ui.md>), [ui-design](<https://devfeed.tech/tags/ui-design.md>), [workflows](<https://devfeed.tech/tags/workflows.md>)

### AI overview

The article explains how IceRock uses wireframe and design prototypes during mobile app development. It argues that clickable prototypes communicate navigation, functionality, usability, and final behavior more effectively than screen maps, with fidelity varying according to client needs.

### Source excerpt

Businesses are always looking for ways to launch apps quickly and with minimal development costs. There are various ways to do this: sketch your app design, launch apps from scratch with frameworks, or use builders. Different situations call for different solutions. In this article, I will tell you about the approaches we use at IceRock. Our company specializes in outsource development of mobile apps, so we constantly look for new ways to speed up the development and enhance tried-and-true workflows. Why a Prototype is Better than a Screen Map Before we start the development, we prepare one or several prototypes of the future app. This is more efficient than going straight to design or starting to develop the app right away. A screen map is a set of images showing all app screens and their relationships. It visualizes the flow of the screens, but it doesn't allow you to get a feel for the result and understand how usable the interface will be. In other words, it is less illustrative. Clickable prototypes are more informative. We divide prototyping into two parts: we use a "wireframe prototype" before the design, and a "design prototype" after. A wireframe prototype is a schematic prototype that helps us understand the navigation and functionality aspects of an app. A design prototype is a product assembled once the UI design is complete. It is used to demonstrate the future app to the customer, for marketing purposes, and sometimes for testing. It also shows the developers how the final app is supposed to work. After the design, we make a clickable prototype. The level of detail in this prototype can vary according to the client's needs: it can be low-fidelity or high-fidelity. Low-fidelity prototypes consist of static images with active links to the next screens on the buttons. This is the type of prototype we used for the Snow4u project. High-fidelity prototypes are very similar to the app and fully interactive: you can type any text in the input fields, there are

## Profiling and Optimizing Jetpack Compose Apps with Recomposition, CPU, and GPU Analysis

DevFeed: [Profiling and Optimizing Jetpack Compose Apps with Recomposition, CPU, and GPU Analysis](<https://devfeed.tech/articles/optimize-or-die-profiling-and-optimization-in-jetpack-compose-24587.md>)

Original publisher: [Read original article](<https://medium.com/icerock/optimize-or-die-profiling-and-optimization-in-jetpack-compose-a165c8897b3f?source=rss-2f461fccc401------2>)

Author: IceRock Development

Published: 2023-01-25T06:55:43Z

Content type: tutorial

Language: en

Sources: [Stories by IceRock Development on Medium](<https://devfeed.tech/sources/stories-by-icerock-development-on-medium.md>)

Topics: [Jetpack Compose](<https://devfeed.tech/topics/jetpack-compose.md>), [Compose](<https://devfeed.tech/topics/compose.md>), [Optimization](<https://devfeed.tech/topics/optimization.md>), [Android Studio](<https://devfeed.tech/topics/android-studio.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>), [cpu](<https://devfeed.tech/topics/cpu.md>), [GPU](<https://devfeed.tech/topics/gpu.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Emulator](<https://devfeed.tech/topics/emulator.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-app-development](<https://devfeed.tech/tags/android-app-development.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [compose](<https://devfeed.tech/tags/compose.md>), [compose-compiler](<https://devfeed.tech/tags/compose-compiler.md>), [cpu](<https://devfeed.tech/tags/cpu.md>), [emulator](<https://devfeed.tech/tags/emulator.md>), [gpu](<https://devfeed.tech/tags/gpu.md>), [jetpack-compose](<https://devfeed.tech/tags/jetpack-compose.md>), [mobile-app-development](<https://devfeed.tech/tags/mobile-app-development.md>), [optimization](<https://devfeed.tech/tags/optimization.md>), [performance](<https://devfeed.tech/tags/performance.md>), [profiling](<https://devfeed.tech/tags/profiling.md>), [recomposition](<https://devfeed.tech/tags/recomposition.md>)

### AI overview

This tutorial demonstrates profiling and optimization techniques for Jetpack Compose using the Campus student-schedule app. It explains how to detect excessive recompositions with Recomposition Counts and Compose Compiler Metrics, then use CPU and GPU profiling to identify performance problems and slow-to-draw components.

### Source excerpt

Your brand-new app gets bombarded with user complaints on Google Play about it hanging or slowing down? Follow the tips in this article to fix it. Hello! My name is Sergey Panov, and I am a mobile developer at IceRock. Today, I will be using our Campus app as an example to demonstrate profiling and optimization techniques for Jetpack Compose. Campus is an app that allows students to view their class schedule. Its main feature is the schedule screen consisting of two pagers for weeks and days. When users tried to swipe them, it caused the app to hang, but we managed to fix it. Here are the topics discussed in the article: Recomposition Counts. Pinpointing Excessive Recompositions. Compose Compiler Metrics. Identifying the Root Causes of Excessive Recompositions. CPU Profiling. Finding "Hot" Methods and Freeing up the CPU. GPU Profiling. Learning Which Components Take a Long Time to Draw. More Tips on Fixing Bugs Identified with Profiling Tools. Recomposition Counts. Pinpointing Excessive Recompositions Issue. The first concept we need to highlight is that of recomposition. Rendering a screen in Compose consists of traversing the graph of composable functions. If a graph node changes its state (i.e. arguments of a composable method, values of MutableState or animations change), the subgraph is updated, that is, the functions are called again. Such an update is called a recomposition. Recompositions are fast and should not present any issues, but frequent recompositions can cause an app to slow down. This is a distinctive feature and a pitfall of Compose. After all, a developer can make some mistakes leading to excessive recompositions, for instance, recreate an object instead of reusing it. This results in unnecessary computations and performance issues. Solution. In large projects, these mistakes might be tricky to detect by the unaided eye, so Android Studio provides our eyes with an aid -- a tool called Recomposition Counts. It can be enabled in Layout Inspector to

## KMP vs Flutter vs React Native

DevFeed: [KMP vs Flutter vs React Native](<https://devfeed.tech/articles/kmp-vs-flutter-vs-react-native-24586.md>)

Original publisher: [Read original article](<https://medium.com/icerock/kmp-vs-flutter-vs-react-native-cb7d1958fab3?source=rss-2f461fccc401------2>)

Author: IceRock Development

Published: 2021-10-25T14:51:05Z

Content type: comparison

Language: en

Sources: [Stories by IceRock Development on Medium](<https://devfeed.tech/sources/stories-by-icerock-development-on-medium.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [cross-platform](<https://devfeed.tech/topics/cross-platform.md>), [Flutter](<https://devfeed.tech/topics/flutter.md>), [React Native](<https://devfeed.tech/topics/react-native.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [bluetooth](<https://devfeed.tech/tags/bluetooth.md>), [business-logic](<https://devfeed.tech/tags/business-logic.md>), [camera](<https://devfeed.tech/tags/camera.md>), [cross-platform](<https://devfeed.tech/tags/cross-platform.md>), [dart](<https://devfeed.tech/tags/dart.md>), [flutter](<https://devfeed.tech/tags/flutter.md>), [ios](<https://devfeed.tech/tags/ios.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [kmp](<https://devfeed.tech/tags/kmp.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [mobile-app-development](<https://devfeed.tech/tags/mobile-app-development.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [nfc](<https://devfeed.tech/tags/nfc.md>), [react-native](<https://devfeed.tech/tags/react-native.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

This comparison examines Kotlin Multiplatform Mobile, Flutter, and React Native for cross-platform mobile development. It explains that Kotlin Multiplatform shares business logic between Android and iOS while retaining native user interfaces, Flutter draws its interface using a canvas and Material Design specifications, and React Native maps native components to JavaScript. The article concludes that the best choice depends on the project's specific requirements.

### Source excerpt

There is a wide range of options in cross-platform nowadays, among them Flutter, React Native, and, of course, Kotlin Multiplatform Mobile. Which technology should you choose, and why this one? Let's try to clear out! All technologies have their advantages and disadvantages, resolve particular problems, but never all of them. Thus, your choice will depend on specific tasks. Guys from Jetbrains have made an incredible attempt to optimize development costs and reuse the code. Moreover, such reuse is possible not only within one platform but also between different platforms (Android and iOS). If your development team wants to keep native UI for each platform, then Kotlin Multiplatform Mobile is your perfect option. It is due to the fact that Kotlin Multiplatform doesn't do UI at all. It, instead, does business logic for Android and iOS apps. Because of the special configuration of the project, it is possible to make a project that will be compiled in the Android library with specific code for Android, and in the iOS framework with the corresponding code for iOS. From a technical perspective, there are no more problems with using the same code on iOS and Android at the same time. When you debug your code, you only need to edit it once, and changes will happen on both platforms. However, on the native side of applications, it would be better not to share the following: the whole interface; binding the interface to the shared Viewmodel from the shared code library; platform-specific features: work with camera, NFC, Touch ID, or Bluetooth. And in any case, sharing UI code across platforms is not necessary. This usually requires several iterations to make the user UI and behave more natively. This, in turn, requires additional development cycles. Flutter uses canvas from native SDK of different platforms and draws its UI component on that canvas using Material design specifications. React Native uses native components mapped to js code. React makes it possible to update the

## How We integrated Kotlin Multiplatform Into Profi

DevFeed: [How We integrated Kotlin Multiplatform Into Profi](<https://devfeed.tech/articles/how-we-integrated-kotlin-multiplatform-into-profi-24585.md>)

Original publisher: [Read original article](<https://medium.com/icerock/how-we-integrated-kotlin-multiplatform-into-profi-c497059f2f48?source=rss-2f461fccc401------2>)

Author: IceRock Development

Published: 2021-06-28T06:23:00Z

Content type: article

Language: en

Sources: [Stories by IceRock Development on Medium](<https://devfeed.tech/sources/stories-by-icerock-development-on-medium.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Android](<https://devfeed.tech/topics/android.md>), [cross-platform](<https://devfeed.tech/topics/cross-platform.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Development](<https://devfeed.tech/topics/development.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [cross-platform](<https://devfeed.tech/tags/cross-platform.md>), [development](<https://devfeed.tech/tags/development.md>), [flutter](<https://devfeed.tech/tags/flutter.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [mobile-apps](<https://devfeed.tech/tags/mobile-apps.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [react-native](<https://devfeed.tech/tags/react-native.md>), [sdk](<https://devfeed.tech/tags/sdk.md>)

### AI overview

Profi.ru's mobile team describes using Kotlin Multiplatform in production since 2019 for Android and iOS apps. The article explains their reasons for choosing it, how shared Kotlin business logic integrates into existing applications, and why native UI is retained.

### Source excerpt

How We Integrated Kotlin Multiplatform Into Profi Hi, guys, it's IceRock team. So great to get feedback from customers. This time guys from Profi.ru wrote an article. Hope their experience will be useful and inspiring for you. Hello! My name is Mikhail Ignatov, and I am a team lead at Profi. My team is responsible for client-side mobile apps for Android and iOS. We have been using Kotlin Multiplatform in production since 2019. Let me tell you about why we chose this particular technology, how we integrated it, the key stages that we went through during the process, and the conclusions we reached in the end. Kotlin Multiplatform Kotlin Multiplatform allows users to run the same Kotlin code on multiple platforms. In August of 2020, JetBrains introduced Kotlin Multiplatform Mobile (KMM), an SDK that facilitates the use of shared code across Android and iOS. The purpose of the technology is to extract business logic while the UI layer remains native, which is good for a better user experience and the look and feel of the apps. Why We Chose Kotlin Multiplatform We studied various cross-platform technologies. For example, React Native and Flutter allow to program and develop a feature for both platforms at the same time, but they narrow the choice of programming language and libraries. We chose Kotlin Multiplatform for three reasons. Ease of integration The common code written in Kotlin can be injected with minimal effort into a finished application. It then compiles into platform-familiar libraries. In the case of Android, it is a jar or aar library, while for iOS, it is a Universal Framework. The connection process and further work does not differ from interacting with any native library. The Kotlin language's syntax is close to Swift The similarity of the language lowers the entry barrier for iOS developers. Both languages share a similar ideology focused on development speed and usability. Anyone on the team can understand what is going on in the common code and adj

## Creating a simple Kotlin Multiplatform project based on moko-template -- part 2

DevFeed: [Creating a simple Kotlin Multiplatform project based on moko-template -- part 2](<https://devfeed.tech/articles/creating-a-simple-kotlin-multiplatform-project-based-on-moko-template-part-2-24582.md>)

Original publisher: [Read original article](<https://medium.com/icerock/creating-a-simple-kotlin-multiplatform-project-based-on-moko-template-part-2-4444ca710709?source=rss-2f461fccc401------2>)

Author: IceRock Development

Published: 2019-11-17T12:05:17Z

Content type: tutorial

Language: en

Sources: [Stories by IceRock Development on Medium](<https://devfeed.tech/sources/stories-by-icerock-development-on-medium.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Template](<https://devfeed.tech/topics/template.md>), [OpenAPI Specification](<https://devfeed.tech/topics/openapi.md>), [API](<https://devfeed.tech/topics/api.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [Library](<https://devfeed.tech/topics/library.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [ktor](<https://devfeed.tech/tags/ktor.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [openapi-specification](<https://devfeed.tech/tags/openapi-specification.md>), [project](<https://devfeed.tech/tags/project.md>), [serialization](<https://devfeed.tech/tags/serialization.md>), [software-development](<https://devfeed.tech/tags/software-development.md>)

### AI overview

A tutorial showing how to build the second part of a GiphyApp series with Kotlin Multiplatform and the moko-template. It explains replacing a News API example with the GIPHY service by updating the OpenAPI specification, generated code, domain models, repository, and dependencies.

### Source excerpt

Creating a simple Kotlin Multiplatform project based on moko-template -- part 21. Intro This manual is the second part in GiphyApp series, before you start we would recommend to do GiphyApp #1. The result of this lession is available on github. 2. Implement common logic of Gif list in shared library App should get list of Gifs from GIPHY service. There is an example with getting list of news from newsapi in the project template (using moko-network with generating network entites and API classes from OpenAPI specification). We can get OpenAPI spec of GIPHY from apis.guru and can replace getting news by getting Gif. Feature List is already in the project template and you have not to implement any additional logic. You can see scheme of module and look into mpp-library:feature:list for detail information about it. Replace OpenAPI spec Replace file mpp-library/domain/src/openapi.yml by the content from OpenAPI spec of GIPHY service. After it please do Gradle Sync and as the result you will see some errors in the newsapi code. Let's update code by new API. You can find generated files here mpp-library/domain/build/generate-resources/main/src/main/kotlin Replace news by gifs in domain module You have to update the following classes after replacing OpenAPI spec in domain module: News should be replaced by Gif; NewsRepository - should be replaced by GifRepository; DomainFactory - add gifRepository and set necessary dependencies. News -> Gif Let's modify News class to the following one: @Parcelize data class Gif( val id: Int, val previewUrl: String, val sourceUrl: String ) : Parcelable This domain entity contains gif's id and two URL (full and preview variant). id is used for correct identifying element in a list and in UI animations. Let's transform network entity dev.icerock.moko.network.generated.models.Gif to domain entity. To do this add one more construct method: @Parcelize data class Gif( ... ) : Parcelable { internal constructor(entity: dev.icerock.moko.network.genera

## Creating a simple Kotlin Multiplatform project based on moko-template

DevFeed: [Creating a simple Kotlin Multiplatform project based on moko-template](<https://devfeed.tech/articles/creating-a-simple-kotlin-multiplatform-project-based-on-moko-template-24581.md>)

Original publisher: [Read original article](<https://medium.com/icerock/creating-a-simple-kotlin-multiplatform-project-based-on-moko-template-2dd87d020bbd?source=rss-2f461fccc401------2>)

Author: IceRock Development

Published: 2019-11-08T19:52:31Z

Content type: tutorial

Language: en

Sources: [Stories by IceRock Development on Medium](<https://devfeed.tech/sources/stories-by-icerock-development-on-medium.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [Template](<https://devfeed.tech/topics/template.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Android](<https://devfeed.tech/topics/android.md>), [iOS](<https://devfeed.tech/topics/ios.md>), [Android Studio](<https://devfeed.tech/topics/android-studio.md>), [cocoapods](<https://devfeed.tech/topics/cocoapods.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>), [Binance](<https://devfeed.tech/topics/binance.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [api](<https://devfeed.tech/tags/api.md>), [build](<https://devfeed.tech/tags/build.md>), [building](<https://devfeed.tech/tags/building.md>), [cocoapods](<https://devfeed.tech/tags/cocoapods.md>), [files](<https://devfeed.tech/tags/files.md>), [github](<https://devfeed.tech/tags/github.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [mobile-development](<https://devfeed.tech/tags/mobile-development.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [project](<https://devfeed.tech/tags/project.md>), [repository](<https://devfeed.tech/tags/repository.md>), [the-result](<https://devfeed.tech/tags/the-result.md>)

### AI overview

A tutorial for creating a simple Kotlin Multiplatform application for Android and iOS from the moko-template. It covers the required tools, the template's shared library and modules, cloning the generated repository, testing builds, and setting application identifiers, names, and icons. The example application uses the GIPHY API to display GIF files with native Android and iOS interfaces.

### Source excerpt

1. Intro In this lesson we will cover developing small application for iOS and Android using Kotlin Multiplatform based on moko-template. Tools We will need: Android Studio 3.4.0+ (do not use 3.5.1 version, cause there is a bug is breaking MPP project); Xcode 10.3+; Xcode Command Line Tools (xcode-select --install); CocoaPods (sudo gem install cocoapods); JDK -- требуется для запуска gradle из Xcode build phase. The Result As the result of GiphyApp lessons you will get an application to view gif files using GIPHY API. UI of this application will be completely native, player of gif files will make using native libraries glide for Android and SwiftyGif for iOS. 2. Create the project based on moko-template For creation we will use project template from moko-template. The project template already has preconfigured builds of iOS and Andoroid application with shared library and you will save the time to integrate shared library to iOS project on iOS platform, to configure Kotlin Multiplatform modules and dependencies (using mobile-multiplatform-gradle-plugin you can make configuraion is simplier). The project template has a sample of several features as well as. Use this template To use this template you have to go on GitHub репозиторий шаблона moko-template and press a green button Use this template. As the result, you create a new repository according to the last commit of master branch of moko-template project. After succefull creation you should clone this rep: git clone <git url of repo>. 3. Test build To be sure that start state is correct, will run the both applications. To do this: on Android: open root repository directory in Android Studio, wait while Gradle Sync will finish, and run android-app as regular application. on iOS: install project's CocoaPods (in directory ios-app run a command pod install, and after this open ios-app/ios-app.xcworkspace in Xcode and press Run for running application. Building of Kotlin/Native can take a time (it will start automatica

## How to start use Kotlin Multiplatform for mobile development

DevFeed: [How to start use Kotlin Multiplatform for mobile development](<https://devfeed.tech/articles/how-to-start-use-kotlin-multiplatform-for-mobile-development-24584.md>)

Original publisher: [Read original article](<https://medium.com/icerock/how-to-start-use-kotlin-multiplatform-for-mobile-development-1d3022742178?source=rss-2f461fccc401------2>)

Author: IceRock Development

Published: 2019-11-01T15:40:22Z

Content type: tutorial

Language: en

Sources: [Stories by IceRock Development on Medium](<https://devfeed.tech/sources/stories-by-icerock-development-on-medium.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [Development](<https://devfeed.tech/topics/development.md>), [Android Studio](<https://devfeed.tech/topics/android-studio.md>), [Xcode](<https://devfeed.tech/topics/xcode.md>), [cocoapods](<https://devfeed.tech/topics/cocoapods.md>), [Gradle](<https://devfeed.tech/topics/gradle.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [android-studio](<https://devfeed.tech/tags/android-studio.md>), [cocoapods](<https://devfeed.tech/tags/cocoapods.md>), [development](<https://devfeed.tech/tags/development.md>), [gradle](<https://devfeed.tech/tags/gradle.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [install](<https://devfeed.tech/tags/install.md>), [ios](<https://devfeed.tech/tags/ios.md>), [java](<https://devfeed.tech/tags/java.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [kotlin-multiplatform](<https://devfeed.tech/tags/kotlin-multiplatform.md>), [kotlin-native](<https://devfeed.tech/tags/kotlin-native.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [mobile-development](<https://devfeed.tech/tags/mobile-development.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>), [swift](<https://devfeed.tech/tags/swift.md>), [xcode](<https://devfeed.tech/tags/xcode.md>)

### AI overview

A tutorial for converting standard Android and iOS projects into a Kotlin Multiplatform project with a shared library. It covers project setup, required development tools, Gradle module creation, mobile target configuration, and writing common Kotlin code.

### Source excerpt

1. Set up Kotlin Multiplatform Project We are going to turn two standard projects (Android and iOS) into a multiplatform project with a shared library on Kotlin Multiplatform. We will need: Android Studio 3.4.0+ (do not use 3.5.1 version, cause there is a bug is breaking MPP project); Xcode 10.3+; Xcode Command Line Tools (xcode-select --install); CocoaPods (sudo gem install cocoapods). To start, we'll need an Android project created from an Android Studio template and an iOS project created from an Xcode template. Put both projects in the same directory: ├── android-app │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ ├── androidTest │ │ └── java │ │ └── com │ │ └── icerockdev │ │ └── android_app │ │ └── ExampleInstrumentedTest.kt │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── com │ │ │ └── icerockdev │ │ │ └── android_app │ │ │ └── MainActivity.kt │ │ └── res │ │ ├── drawable │ │ │ └── ic_launcher_background.xml │ │ ├── drawable-v24 │ │ │ └── ic_launcher_foreground.xml │ │ ├── layout │ │ │ └── activity_main.xml │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── ic_launcher_round.png │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── icerockdev │ └── android_app │ └── ExampleUnitTest.kt ├── build.gradle ├── gradle │ └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── gradlew ├── gradlew.bat ├── ios-app │ ├── ios-app │ │ ├── AppDelegate.swift │ │ ├── Assets.xcassets │ │ │ ├── AppIcon.appiconset │ │ │ │ └── Contents.json │ │ │ └── Contents.json

## Kotlin Multiplatform for Cross-Platform Mobile App Development

DevFeed: [Kotlin Multiplatform for Cross-Platform Mobile App Development](<https://devfeed.tech/articles/the-rise-of-multiplatform-app-development-smaller-budgets-better-apps-24589.md>)

Original publisher: [Read original article](<https://medium.com/icerock/the-rise-of-multiplatform-app-development-smaller-budgets-better-apps-ecb248def722?source=rss-2f461fccc401------2>)

Author: IceRock Development

Published: 2019-07-09T16:31:24Z

Content type: article

Language: en

Sources: [Stories by IceRock Development on Medium](<https://devfeed.tech/sources/stories-by-icerock-development-on-medium.md>)

Topics: [Kotlin Multiplatform](<https://devfeed.tech/topics/kotlin-multiplatform.md>), [multiplatform](<https://devfeed.tech/topics/multiplatform.md>), [Mobile](<https://devfeed.tech/topics/mobile.md>), [mobile-app-development](<https://devfeed.tech/topics/mobile-app-development.md>), [cross-platform](<https://devfeed.tech/topics/cross-platform.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>), [kotlin-native](<https://devfeed.tech/topics/kotlin-native.md>)

Tags: [android](<https://devfeed.tech/tags/android.md>), [app-development](<https://devfeed.tech/tags/app-development.md>), [cross-platform](<https://devfeed.tech/tags/cross-platform.md>), [ios](<https://devfeed.tech/tags/ios.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [mobile](<https://devfeed.tech/tags/mobile.md>), [mobile-app-development](<https://devfeed.tech/tags/mobile-app-development.md>), [mobile-apps](<https://devfeed.tech/tags/mobile-apps.md>), [multiplatform](<https://devfeed.tech/tags/multiplatform.md>)

### AI overview

The article discusses Kotlin Multiplatform as an approach to building iOS and Android apps simultaneously with shared code. It contrasts the technology with tools such as Xamarin, Ionic, React Native, and Flutter, focusing on development effort, platform-specific features, and UI/UX limitations.

### Source excerpt

If your company is considering to build a mobile app in 2019, we have some good news. You no longer need to endlessly brainstorm which platform to target first -- iOS or Android. You should be developing both versions simultaneously while spending less than you used to. And Kotlin Multiplatform is how you do this. [Check out the links at the bottom to supply your tech-speaking colleagues with the juicy details on successfully delivering Kotlin Multiplatform projects, six real-life case studies inclusive.] Read on to learn how your app can become multiplatform without eating into your development budget and at the same time offering your users unique, platform-specific experience. The usual cross-platform suspects When it comes to cross-platform mobile app development, the usual suspects that come to mind are tools like PhoneGap, Xamarin, Ionic, and lately also React Native with Flutter. Their appeal has been hard to resist: a universal tool that can reduce development effort for building iOS and Android apps in parallel has been the holy grail in the app developer community for a while now. Unfortunately, none of these technologies has managed to become the de facto instrument for building mobile apps, let alone oust native development. When working with these cross-platform app development tools, developers most often gripe about: Poor or limited UI/UX capabilities Lack of access to platform-specific advanced features (e.g., camera and NFC) Necessity to support three code bases: iOS, Android, and "cross-platform" But with Kotlin/Native, and more specifically Kotlin Multiplatform, things are about to change as this nascent technology promises uncompromised native-app quality while significantly optimizing the app development process. Multiplatform begs to differ Kotlin is a programming language that got official support from Google a couple of years ago and since then has become the prime tool for building Android apps natively. But its potential is much more far-rea