expect fun / class
actual fun / class actual fun / class
Common
Slide 17
Slide 17 text
expect fun randomUUID(): String
import java.util.*
actual fun randomUUID() =
UUID.randomUUID().toString()
import platform.Foundation.NSUUID
actual fun randomUUID(): String =
NSUUID().UUIDString()
Common
Slide 18
Slide 18 text
HOW
Part 2
Slide 19
Slide 19 text
Hexagonal Architecture
Slide 20
Slide 20 text
No content
Slide 21
Slide 21 text
Core:
Biz logic, platform agnostic
Slide 22
Slide 22 text
Core:
Biz logic, platform agnostic
Platform:
iOS/Android
Slide 23
Slide 23 text
Platform:
iOS/Android
Core:
Biz logic, platform agnostic
External / cloud:
Sensor, biz intelligence
Slide 24
Slide 24 text
Platform:
iOS/Android
Core:
Biz logic, platform agnostic
Adapters
External / cloud:
Sensor, biz intelligence
Slide 25
Slide 25 text
2021
2023
Slide 26
Slide 26 text
2023
Slide 27
Slide 27 text
2023
Sony | Headphones Connect Sony | Sound Connect
iOS specific Android specific
Business/Domain
Data/Core
iOS Android
KMP(shared)
Compose
Multiplatform
UI
Presentation
Slide 31
Slide 31 text
No content
Slide 32
Slide 32 text
No content
Slide 33
Slide 33 text
iOS Android
Slide 34
Slide 34 text
No content
Slide 35
Slide 35 text
Maps
Slide 36
Slide 36 text
No content
Slide 37
Slide 37 text
Results
Slide 38
Slide 38 text
55
55%
%
iOS
iOS
users
P E R P L AT FO R M
Slide 39
Slide 39 text
Code
L A N G U AG E D I ST.
80 20
Multiplatform Native
Slide 40
Slide 40 text
SHOULD
YOU DO IT?
Part 3
Slide 41
Slide 41 text
it depends...
Slide 42
Slide 42 text
Stick to iOS if...
You want full iOS UX
Target market is iOS
Slide 43
Slide 43 text
Try KMP/CMP if...
iOS Dev → Mobile Dev
Expand to other platforms
A lot of common biz logic (>10%)
Slide 44
Slide 44 text
start
Slide 45
Slide 45 text
No content
Slide 46
Slide 46 text
No content
Slide 47
Slide 47 text
Kotlin/Swift Mapping
Kotlin Swift
Class Class
Interface Protocol
Constructor Initializer
Property Property
Method Method
null nil
Kotlin Swift
Unit Void
String String
List Array
Set Set
Map Dictionary
Function type Function type
Slide 48
Slide 48 text
suspend vs async
Slide 49
Slide 49 text
No content
Slide 50
Slide 50 text
iOS/Android dev
Development
Duplication
Unification
Mobile dev
Users