Closed Alex009 closed 3 years ago
от @FelixFalkovsky
Построение навигации в iOS приложении Было бы не плохо добавить изображения как примеры.
Создадим в ios-проекте папку src/Coordinators исправить на src -> Common -> Coordinator "и создавать нечего не нужно , ведь там уже описание есть"
Не хватает документирования методов и кода для лучшего восприятия //MARK: и ему подобные.
Отредактировать статью в местах где говориться что то сделать "Уже сделано!" либо удалить из проекта эти файлы.
Заменить часть скриншотов и лучше бы если бы они были полными а не кусками , восприятие другое.
вместо codelab будет сделана статья на kmm.icerock.dev - https://kmm.icerock.dev/onboarding/project-inside
нужно добавить в Deps.kt -> Modules еще варианты, например Entities, Shared
Добаивть про то, как работают commonMainImplementation() и androidMainImplementation() "работают как buildFlavors?" - commonMainImplementation и подобные работают не как buildFlavors, но похоже в чемто. buildFlavors'ов нет в Kotlin Multiplatform, это фича Android Gradle Plugin'а и все. А в KMM работает Kotlin Gradle Plugin, в котором есть поддержка Hierarhical Multiplatform с множеством source set'ов. и вот для каждого sourceset'а добавляются свои конфигурации для подключения зависимостей к конкретным сорссетам. Сами же сорссеты имеют иерархию, типа как у билдфлейворов. то есть androidMain видит все то что есть в commonMain. а iosArm64 видит все что в iosMain и все что в commonMain. Читать
Добавить про то, что все мультиплатформенные библиотеки публикуются отдельными артефактами - common, android, iosx64, iosarm64 все это отдельные артефакты - тут наглядно видно что каждая библиотека имеет пачку артефактов Написать про это: (В rss-news интерфейс репозитория NewsListRepository лежит в mpp-lib:feature:news:list, а имплементация NewsListRepositoryImpl в mpp-lib:commonMain?) - да, интерфейс получения данных задает сама фича (чтобы уметь получать данные из вне). А реализация находится в mpp-library, в которой доступны классы всех фичей и происходит связывание всех компонентов воедино
В пункте 5 в главе "Компиляция MultiPlatformLibrary.framework" можно немного пояснить что такое компиляция kotlin модуля. Мол, эта задача запускает компилятор Kotlin Native, который компилирует common и ios код в нативную статическую библиотеку, которая упаковывается в статический фреймворк вместе с ресурсами модуля, который и подключается к проекту xcode.
Добавить про то, что все мультиплатформенные библиотеки публикуются отдельными артефактами - common, android, iosx64, iosarm64 все это отдельные артефакты - тут наглядно видно что каждая библиотека имеет пачку артефактов
Описать, как "Gradle съел кастом GradlePlugin класс в plugins { plugin(Deps.Plugins.androidApplication) }" (GradlePlugin класс приходит из mobile-multiplatform-plugin и в том же файле видно что для классов управления зависиомостями гредла добавлена функция plugin которая умеет принимать GradlePlugin)
Добавить что buildSrc больше не используется, ему на смену пришел Versions Catalog
Добавленные статьи в разделе обучения: Library -> Публикация Gradle -> Обвноление версий Gradle -> Build Environment iOS -> CocoaPods iOS -> Навигация Tools -> Генерация строк локализациии
https://kmm.icerock.dev/onboarding/project-inside