KC Blog

Compose Multiplatform in Action: First Battle, Setting Up the CMP Environment

6 min read
CrossPlatform#CMP#Kotlin

Introduction

The Compose Multiplatform (CMP) UI framework takes Kotlin code sharing capabilities to a new level

You can implement user interfaces once

and use them on all target platforms—including iOS, Android, desktop, and web

Today we'll start step by step with setting up the environment

Goal

We want to create a CMP project capable of producing multi-platform applications (Android, iOS, Web, Desktop)

So first we need to understand how to set up a CMP project

You can install based on the items listed below

Some are optional

You can choose what to install based on your own needs

  • Android Studio
  • Java and JDK
  • Xcode
  • Kotlin plugins
  • (Optional) Kotlin Multiplatform plugin
  • (Optional) CocoaPods
  • (Optional) kdoctor
  • (Optional) Browsers

CMP Environment Setup - Installing Essential Tools

Recommended: Install kdoctor first (Optional)
`kdoctor` is an officially recommended plugin

It helps check if all necessary components in your environment are ready

Install kdoctor using the Terminal command

brew install kdoctor

Cover

Then simply run kdoctor to perform the check

For example, in my environment

it detected that I hadn't installed the Kotlin Multiplatform Plugin

kdoctor

Cover

In short

when you see all [v] marks

it means your environment is correctly set up

If kdoctor diagnoses any issues in your environment:

[x]: Any failed checks that need fixing

You can find problem descriptions and potential solutions after the * symbol.

[!]: Warning checks

These might be optional installations

Just reminders of what you could install

Installing Android Studio
To make CMP development more convenient, we need to install `Android Studio`

First, go to the Android Studio official website

to download the IDE

Cover

Then, if you're on MacOS, open the downloaded .dmg file

and drag the IDE to your Applications folder

If you're on Windows, run the .exe file and select the installation directory

Cover
(Image shows Mac installation)

Checking the Kotlin Plugin
`CMP` primarily uses `Kotlin` for development

so the Kotlin Plugin is essential

However, modern Android Studio versions come with it integrated

Once you install Android Studio, the Kotlin Plugin is already installed

(Newer IDE versions take care of this for you)

So you can proceed to open Android Studio

If you do encounter any issues

go to Tools > Kotlin > Configure Kotlin in Project

to let the IDE check if it's installed

Cover

Checking Java JDK Environment
This step is similar to the one above

Newer versions of Android Studio IDE already handle this for you

If you're unsure whether it's installed

the IDE has a built-in download option

You can check for JDK installation at:

Click Android Studio > Settings or use shortcut Command + ,

Cover

Navigate to Build, Execution Deployment > Build Tools > Gradle

Cover

Click the dropdown menu and select from existing options in your environment

or click Download JDK to download it

Cover

Additionally

I recommend using sdkman (Optional)

It allows you to manage SDKs in your environment via command line

Since we're focusing on CMP

I'll just introduce a few commonly used commands

Feel free to look up more online if interested

View currently configured sdk

sdk current

List available and downloadable Java SDKs

sdk ls java

Set JAVA environment (xxx name can be found using sdk ls above)

sdk using java xxx
Kotlin Multiplatform plugin (Optional)
To better support Multiplatform in Android Studio

we need to download the Kotlin Multiplatform plugin

Open Settings > Plugin > Marketplace

Cover

Click install

After completion, click Apply and then Restart the IDE

This enables Android Studio to automatically create basic KMP project content

when using Create New Project

It's like having a built-in template creator

Cover

For reference, see the KMM Plugin official Release

Additionally, for CMP specifically

there's an official online method for creating basic CMP projects

(If you forgot the difference between KMP and CMP, refer to Day 1 article, Compose Multiplatform in Action: Taking It Easy, An Introduction to CMP)

This is through the online webpage

Wizard

which lets you create a project and import it into the IDE

The choice between methods comes down to:

KMP: Using the KMM plugin focuses more on Native UI + common logic development

CMP: Using the online KMM Wizard focuses more on Compose UI + common logic development for multiple platforms

That's all for this introduction

When we start detailed project development later

I'll explain how to use the Wizard

Installing Xcode

If you're on macOS

and want to run iOS apps

you'll need Xcode

The method is simple

Go to the App Store, search for Xcode

and download it

Cover

If you're using another operating system

you can skip this step

though you won't be able to build iOS apps

There might be workarounds?

But those probably won't follow the standard approach XD

Installing CocoaPods (Optional)

If you anticipate using iOS frameworks, you can install this now

If not, you can wait until needed

Install CocoaPods using the command

brew install cocoapods

However, to install via brew

you'll need a newer version of Ruby

According to the official site, you need at least version 3.3.4

Depends on: ruby 3.3.4 Powerful, clean, object-oriented scripting language

You can check your environment's version with

ruby -v 

If your version is too old

first reinstall it

brew reinstall ruby

Then use brew install cocoapods

Checking Browsers (Optional)

If you want to create Web applications

you'll need a browser that supports Wasm garbage collection (GC).

Here's the official information

You need to check your OS's Browser version

The following environments are currently supported

Chrome and Chromium: Supported from version 119.

Firefox: Supported from version 120.

Safari/WebKit: Wasm GC is currently in development

Browsers like Safari might not fully support it yet

so you might not be able to run everything completely

If you need to develop Web apps

try following the information above

Conclusion
I always feel that starting with a new programming language or framework

usually means you'll be unfamiliar with how to configure its environment

but with a little guidance

it becomes much easier to get started

Overall

you don't need prior experience with Compose Multiplatform, Android, or iOS

you can start from zero, gradually familiarize yourself with Kotlin, and then master CMP step by step

If you have any questions or issues, feel free to discuss in the comments section, and we can learn and grow together.

That's all for this article, thank you for reading and for your support!