Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions docusaurus.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ const isProd = process.env.NODE_ENV === 'production';

/** @type {import('@docusaurus/types').DocusaurusConfig} */
module.exports = {
title: 'Kotlin Multiplatform Mobile',
title: 'Kotlin Multiplatform',
tagline: 'Материалы для изучения от IceRock Development',
url: process.env.CONFIG_URL || 'https://kmm.icerock.dev',
baseUrl: process.env.CONFIG_BASE_URL || '/',
Expand Down Expand Up @@ -113,7 +113,7 @@ module.exports = {
title: 'More',
items: [
{
label: 'Kotlin Multiplatform Mobile',
label: 'Kotlin Multiplatform',
href: 'https://kotlinlang.org/lp/mobile',
},
{
Expand Down
4 changes: 2 additions & 2 deletions learning/concurrency.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ sidebar_position: 20
- [kotlinlang docs - Coroutines guide](https://kotlinlang.org/docs/coroutines-guide.html)
- [kotlinlang docs - Immutability in Kotlin/Native](https://kotlinlang.org/docs/native-immutability.html)
- [kotlinlang docs - Concurrency in Kotlin/Native](https://kotlinlang.org/docs/native-concurrency.html)
- [kotlinlang docs - Concurrent mutability](https://kotlinlang.org/docs/mobile/concurrent-mutability.html)
- [kotlinlang docs - Concurrent mutability](https://kotlinlang.org/docs/multiplatform-mobile-concurrent-mutability.html)
- [kotlinlang docs - Shared mutable state and concurrency](https://kotlinlang.org/docs/shared-mutable-state-and-concurrency.html)
- [kotlinlang docs - Native memory manager](https://kotlinlang.org/docs/native-memory-manager.html)
- [Многопоточность и Kotlin в Яндекс.Картах: как не допустить падения новых фич на iOS](https://habr.com/ru/company/yandex/blog/575846/)
Expand Down Expand Up @@ -103,7 +103,7 @@ launch {
}
```

Используй для организации pipeline: несколько корутин обрабатывают данные через общий канал. В KMM — один из немногих shareable-примитивов для обмена данными между потоками.
Используй для организации pipeline: несколько корутин обрабатывают данные через общий канал. В KMP — один из немногих shareable-примитивов для обмена данными между потоками.

### Flow / StateFlow / SharedFlow

Expand Down
6 changes: 3 additions & 3 deletions learning/gradle/intro-gradle.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ sidebar_position: 0

# Введение в Gradle

Работая с Kotlin Multiplatform Mobile для iOS разработчика главным испытанием становится не изучение
Работая с Kotlin Multiplatform, для iOS разработчика главным испытанием становится не изучение
Kotlin, а изучение билд системы Gradle, которая собирает мультиплатформенную библиотеку. В данном
разделе разобрано что есть Gradle с перспективы iOS разработчиков.

Expand All @@ -27,7 +27,7 @@ Gradle написан на java и является JVM (Java Virtual Machine)
использования требуется установленная на исполняемой машине JDK (Java Development Kit). Наиболее
стабильная версия JDK - Oracle JDK (рекомендуется к
скачиванию [Oracle JDK 11](https://www.oracle.com/java/technologies/javase-jdk11-downloads.html) для
работы с KMM).
работы с KMP).

Gradle имеет обширную, подробную документацию,
доступную [тут](https://docs.gradle.org/current/userguide/userguide.html).
Expand Down Expand Up @@ -199,7 +199,7 @@ android.useAndroidX=true
# отключение предупреждения о том что используется ios шорткат для настройки таргетов ios
mobile.multiplatform.iosTargetWarning=false

# путь до xcode проекта или воркспейса, используется Kotlin Multiplatform Mobile плагином для Android Studio чтобы запускать ios приложение с отладчиком
# путь до xcode проекта или воркспейса, используется Kotlin Multiplatform плагином для Android Studio, чтобы запускать ios приложение с отладчиком
# Подробнее https://plugins.jetbrains.com/plugin/14936-kotlin-multiplatform-mobile
xcodeproj=./sample/ios-app
```
Expand Down
2 changes: 1 addition & 1 deletion learning/intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ sidebar_position: 1

# О разделе

Данный раздел является базой знаний по мобильной разработке с использованием Kotlin Multiplatform Mobile.
Данный раздел является базой знаний по мобильной разработке с использованием Kotlin Multiplatform.

Здесь можно найти информацию про процесс сборки приложений, детали про Kotlin и Multiplatform разработку, а также платформенно специфичные детали про Android и iOS.
10 changes: 5 additions & 5 deletions learning/kotlin-multiplatform/how-to-start.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ sidebar_position: 1

## Материалы для изучения Kotlin Multiplatform

1. [Портал Kotlin Multiplatform Mobile](https://kotlinlang.org/lp/mobile/) - общее описание технологии, кейсы использования, информация о сообществе;
1. [Документация по Kotlin Multiplatform Mobile](https://kotlinlang.org/docs/mobile/home.html) - гайды по выполнению типовых задач, примеры, туториалы;
1. [Портал Kotlin Multiplatform](https://kotlinlang.org/docs/multiplatform/kmp-overview.html) - Что такое Kotlin Multiplatform? Почему компании выбирают KMP;
1. [Документация по Kotlin Multiplatform](https://kotlinlang.org/case-studies/?type=multiplatform) - примеры из практики;
1. [Видео для начинающих от JetBrains](https://www.youtube.com/playlist?list=PLlFc5cFwUnmy_oVc9YQzjasSNoAk4hk_C);
1. [Книга Kotlin Multiplatform Mobile with Ktor](https://michaelstromer.nyc/books/kotlin-multiplatform-mobile/introduction) - текстовый материал курса обучения по [KMM на Udemy](https://www.udemy.com/course/kotlin-multiplatform-mobile/);
1. Книга [Kotlin Multiplatform for iOS Developers от Touchlab](https://touchlab.co/kotlin-multiplatform-for-ios-developers-touchlab-kit/);
1. [Официальный FAQ](https://kotlinlang.org/docs/mobile/faq.html).
1. Курс [Kotlin Multiplatform на Udemy](https://www.udemy.com/course/kotlin-multiplatform-mobile/) - текстовый материал для обучения;
1. [Официальный FAQ](https://kotlinlang.org/docs/multiplatform/faq.html).
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
sidebar_position: 1
---

# Почему выбирают Kotlin Multiplatform Mobile?
# Почему выбирают Kotlin Multiplatform?

В сообществе [MobileNativeFoundation](https://github.com/MobileNativeFoundation) представитель Touchlab [рассказал их наблюдения о том почему компании выбирают Kotlin Multiplatform](https://github.com/MobileNativeFoundation/discussions/discussions/43#discussioncomment-476363).

Expand Down Expand Up @@ -35,4 +35,4 @@ sidebar_position: 1
> * [Slack moves away from C++](https://slack.engineering/client-consistency-at-slack-beyond-libslack/)
> * [Dropbox moves away from C++](https://dropbox.tech/mobile/the-not-so-hidden-cost-of-sharing-code-between-ios-and-android)

А также на сайте [Kotlin Multiplatform Mobile](https://kotlinlang.org/lp/mobile/) в разделе [Case Studies](https://kotlinlang.org/lp/mobile/case-studies/) можно прочитать детально о опыте использованя технологии в разных компаниях. Уже сейчас там есть компании VMWare, Autodesk, Yandex, Square, Philips, Netflix и другие, включая и нас, IceRock.
А также на сайте [Kotlin Multiplatform](https://kotlinlang.org/multiplatform/) в разделе [Case Studies](https://kotlinlang.org/case-studies/?type=multiplatform) можно прочитать детально о опыте использованя технологии в разных компаниях. Уже сейчас там есть компании VMWare, Autodesk, Yandex, Square, Philips, Netflix и другие, включая и нас, IceRock.
2 changes: 1 addition & 1 deletion learning/kotlin-native/size_impact.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ sidebar_position: 2
> My .framework is around ~15 mb. For a pretty small sdk with a couple of standard dependencies like ktor.
> I am fine with that, but you know...customers complains. So I must check if there are anything to do with binary sizes.
> I tried "internalizing" all I could. And there were a pretty nice effect. I actually saw a reduction of ~500 kb after doing that on a bunch of data classes. Wonder if there are anything else that can help to downsize.
> @kpgalligan I remember you were talking about KMM team working on K\N - Swift interoperability which should reduce the size. Wondering if there are any progress on that. I read somewhere that this work was frozen.
> @kpgalligan I remember you were talking about KMP team working on K\N - Swift interoperability which should reduce the size. Wondering if there are any progress on that. I read somewhere that this work was frozen.
>
> Kevin Galligan
> Well, again, to measure the actual size, you need to either push it to the app store and let apples servers crunch numbers, or run local size estimates with Xcode. The size on your dev disk is not wha the actual app size will be. I don't remember how I presented it in that talk (and I have a talk today that I'm really not prepared for, so I don't have a lot of time to reply here...), but raw numbers on disk don't really tell the story. For KaMP Kit, which has ktor, sqldelight, and a few others, our sizes were ~1.5m as a final size increase on real devices. I assume local disk size was much larger, but it's been a while.
Expand Down
2 changes: 1 addition & 1 deletion learning/kotlin-native/summary.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ sidebar_position: 1
1. <https://www.youtube.com/watch?v=nw6YTfEyfO0> - выступление Иготти о том как устроена многопоточность и иммутабельность в K/N
2. <https://www.youtube.com/watch?v=oxQ6e1VeH4M> - выступление Галлигана с разжевыванием темы многопоточнсоти
3. <https://dev.to/touchlab/practical-kotlin-native-concurrency-ac7> - три статьи от Галлигана с хорошим разобором темы
4. <https://kotlinlang.org/docs/mobile/concurrent-mutability.html> - раздел Working with concurrency в документации KMM тоже с хорошим разобром от Галлигана
4. <https://kotlinlang.org/docs/multiplatform-mobile-concurrent-mutability.html> - раздел Working with concurrency в документации KMP тоже с хорошим разобром от Галлигана
5. Колдовская штука-хак <https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.native.concurrent/-worker-bound-reference/> которая позволяет шарить что-либо без заморозки.
6. Touchlab гайд по многопоточности + видео - <https://touchlab.co/kotlin-native-concurrency/>
5. Отладка K/N - <https://kotlinlang.org/docs/native-debugging.html>
Expand Down
4 changes: 2 additions & 2 deletions learning/movement_workspace_dir.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

При разработке для мультиплатформы мы часто используем вот эти директории:

- проектов для android/kmm:
- проектов для android/kmp:
`~/AndroidStudioProjects`
- проектов для xcode:
`~/Documents/xCode`
Expand All @@ -40,7 +40,7 @@

#### Перенос проектов

Давайте начнем с простого и перенесем для начала директории проектов. Предлагаю создать на внешнем диске папку Projects, а в ней создать: Android, KMM, Xcode. Теперь перенесем наши проекты в них.
Давайте начнем с простого и перенесем для начала директории проектов. Предлагаю создать на внешнем диске папку Projects, а в ней создать: Android, KMP, Xcode. Теперь перенесем наши проекты в них.

#### Перенос .konan

Expand Down
2 changes: 1 addition & 1 deletion learning/problem-solving/gradle-daemon-crash.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Падение Gradle daemon

Бывают ситуации, что при компиляции KMM проекта Gradle daemon неожиданно завершается (крешится). Причины такого поведения могут быть разные и их сложно разбирать, поэтому в данной статье описано как можно анализировать данную проблему на нескольких ситуациях, с которыми мы столкнулись в своей работе.
Бывают ситуации, что при компиляции KMP проекта Gradle daemon неожиданно завершается (крешится). Причины такого поведения могут быть разные и их сложно разбирать, поэтому в данной статье описано как можно анализировать данную проблему на нескольких ситуациях, с которыми мы столкнулись в своей работе.

```
FAILURE: Build failed with an exception.
Expand Down
2 changes: 1 addition & 1 deletion onboarding/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
sidebar_position: 1
---

# Знакомство с KMM
# Знакомство с KMP

Ознакомься с материалами про Kotlin Multiplatform:

Expand Down
2 changes: 1 addition & 1 deletion onboarding/intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ sidebar_position: 0

# О разделе

Данный раздел в первую очередь создавался для погружения новых разработчиков IceRock Development в технологию Kotlin Multiplatform Mobile и в подходы, которые используются в компании. Ориентированность на внутренних сотрудников не означает что внешним разработчикам материал будет бесполезен, так же как и не означает что что-то закрыто только для сотрудников. Любой желающий может ознакомиться со всеми материалами от начала и до конца, приобрести знания и навыки разработки с Kotlin Multiplatform Mobile и MOKO.
Данный раздел в первую очередь создавался для погружения новых разработчиков IceRock Development в технологию Kotlin Multiplatform и в подходы, которые используются в компании. Ориентированность на внутренних сотрудников не означает что внешним разработчикам материал будет бесполезен, так же как и не означает что что-то закрыто только для сотрудников. Любой желающий может ознакомиться со всеми материалами от начала и до конца, приобрести знания и навыки разработки с Kotlin Multiplatform и MOKO.
10 changes: 0 additions & 10 deletions onboarding/kmm-details.md

This file was deleted.

10 changes: 10 additions & 0 deletions onboarding/kmp-details.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
sidebar_position: 6
---

# Особенности KMP

Работа с Kotlin Multiplatform, как и с любым другим инструментом, имеет ряд особенностей. Познакомься с ними по ссылкам ниже:

- [Особенности KMP (в базе знаний)](../learning/kotlin-multiplatform/mobile-highlights)
- [Проблемы с Gradle Daemon](../learning/problem-solving/gradle-daemon-crash)
6 changes: 3 additions & 3 deletions onboarding/project-inside.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ sidebar_position: 3

## Вводная

В данной статье разобран типовой KMM проект на базе [mobile-moko-boilerplate](https://gitlab.icerockdev.com/scl/boilerplate/mobile-moko-boilerplate). Внимание уделено каждому файлу и директории в проекте, дано пояснение ко всему - для чего используется, в каких случаях нужно вносить изменения, как работает.
В данной статье разобран типовой KMP проект на базе [mobile-moko-boilerplate](https://gitlab.icerockdev.com/scl/boilerplate/mobile-moko-boilerplate). Внимание уделено каждому файлу и директории в проекте, дано пояснение ко всему - для чего используется, в каких случаях нужно вносить изменения, как работает.

После ознакомления с материалом вы узнаете:

Expand Down Expand Up @@ -68,7 +68,7 @@ master.sh
- `android/` - директория с Android-приложением и связанными модулями (app, uikit, utils)
- `ios-app/` - директория с исходным кодом iOS приложения
- `build-logic/` - директория с композитной сборкой для логики Gradle
- `mpp-library/` - директория с исходным кодом общей библиотеки на KMM
- `mpp-library/` - директория с исходным кодом общей библиотеки на KMP
- `gradle/` - специальная директория системы сборки Gradle, в которой лежит Gradle Wrapper
- `gradle/libs.versions.toml` - Version Catalog для управления зависимостями
- `build.gradle.kts` - файл конфигурации сборки корневого gradle проекта
Expand Down Expand Up @@ -136,7 +136,7 @@ enableFeaturePreview("VERSION_CATALOGS")

- `android-app-convention` - для Android-приложений
- `android-compose-convention` - для Android с Compose
- `multiplatform-library-convention` - для KMM-библиотек
- `multiplatform-library-convention` - для KMP-библиотек
- `detekt-convention` - для линтинга
- `skie-convention` - для iOS

Expand Down
Loading
Loading