TGViewer
Мобильная разработка Мобильная разработка @mobi_dev · 13.2K subscribers
Post #4667 2.15K
61% того, что KMP-модуль отдаёт в iOS, никто не вызывает

Если у вас Kotlin Multiplatform, ваш shared-модуль приезжает в Xcode как Objective-C-заголовок, и каждая лишняя строка в нём замедляет сборку и раздувает фреймворк. Разработчик приложения Framed открыл свой Shared.h и увидел 23 622 строки: в Kotlin всё public по умолчанию, поэтому в экспорт попали цвета темы, 38 констант отступов, внутренние колбэки экранов и типы Ktor. Компилятор выкинуть их не может: Objective-C диспетчеризует динамически, вдруг Swift позовёт.

Он написал Gradle-плагин kmprofiler: тот сопоставляет заголовок с Swift-кодом и считает экспорты без вызовов. Из 459 деклараций 282 не используются (61,4%).

Правка заняла пять файлов: internal для Dimens, Color, Type и UI-моделей, а для классов, нужных Android-модулям, есть @HiddenFromObjC. Заголовок ужался до 13 327 строк (−43,6%), фреймворк похудел на 5,7 МБ. Плагин лежит в Gradle Plugin Portal, автор показал, как прогнать через него свой модуль.
  • 🔥 7
More from @mobi_dev
  1. Sep 20, 2026Как ProfilingManager на Android 15+ помогает искать причины тормозов в продакшене Profilin…
  2. Sep 20, 2026Как использовать свайп-действия вне List в SwiftUI В SwiftUI свайп-действия вроде удаления…
  3. Sep 20, 2026Как переносить сложные Android-экраны на Jetpack Compose: опыт TikTok Команда TikTok перен…
  4. Sep 19, 2026Как управлять кнопками панели инструментов в SwiftUI Одна и та же панель в SwiftUI ведёт с…
  5. Sep 19, 2026Как безопасно освобождать временные ресурсы с defer в Swift В Swift блок defer выполняется…
  6. Sep 19, 2026Как Flutter готовит приложения к новым версиям iOS Между WWDC и стабильным релизом iOS у к…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →