icerockdev / kmm.icerock.dev

https://kmm.icerock.dev
24 stars 27 forks source link

IceRock KMM #3 "Устройство проекта" - замечания #23

Closed Alex009 closed 3 years ago

Alex009 commented 3 years ago

Добавленные статьи в разделе обучения: Library -> Публикация Gradle -> Обвноление версий Gradle -> Build Environment iOS -> CocoaPods iOS -> Навигация Tools -> Генерация строк локализациии

https://kmm.icerock.dev/onboarding/project-inside

Alex009 commented 3 years ago

от @FelixFalkovsky

Построение навигации в iOS приложении Было бы не плохо добавить изображения как примеры.

Создадим в ios-проекте папку src/Coordinators исправить на src -> Common -> Coordinator "и создавать нечего не нужно , ведь там уже описание есть"

Не хватает документирования методов и кода для лучшего восприятия //MARK: и ему подобные.

Отредактировать статью в местах где говориться что то сделать "Уже сделано!" либо удалить из проекта эти файлы.

Заменить часть скриншотов и лучше бы если бы они были полными а не кусками , восприятие другое.

Alex009 commented 3 years ago

вместо codelab будет сделана статья на kmm.icerock.dev - https://kmm.icerock.dev/onboarding/project-inside

DevTchernov commented 3 years ago

нужно добавить в Deps.kt -> Modules еще варианты, например Entities, Shared

kramlex commented 3 years ago

Добаивть про то, как работают 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. Читать

kramlex commented 3 years ago

Добавить про то, что все мультиплатформенные библиотеки публикуются отдельными артефактами - common, android, iosx64, iosarm64 все это отдельные артефакты - тут наглядно видно что каждая библиотека имеет пачку артефактов Написать про это: (В rss-news интерфейс репозитория NewsListRepository лежит в mpp-lib:feature:news:list, а имплементация NewsListRepositoryImpl в mpp-lib:commonMain?) - да, интерфейс получения данных задает сама фича (чтобы уметь получать данные из вне). А реализация находится в mpp-library, в которой доступны классы всех фичей и происходит связывание всех компонентов воедино

kramlex commented 3 years ago

В пункте 5 в главе "Компиляция MultiPlatformLibrary.framework" можно немного пояснить что такое компиляция kotlin модуля. Мол, эта задача запускает компилятор Kotlin Native, который компилирует common и ios код в нативную статическую библиотеку, которая упаковывается в статический фреймворк вместе с ресурсами модуля, который и подключается к проекту xcode.

kramlex commented 3 years ago

Добавить про то, что все мультиплатформенные библиотеки публикуются отдельными артефактами - common, android, iosx64, iosarm64 все это отдельные артефакты - тут наглядно видно что каждая библиотека имеет пачку артефактов

kramlex commented 3 years ago

Описать, как "Gradle съел кастом GradlePlugin класс в plugins { plugin(Deps.Plugins.androidApplication) }" (GradlePlugin класс приходит из mobile-multiplatform-plugin и в том же файле видно что для классов управления зависиомостями гредла добавлена функция plugin которая умеет принимать GradlePlugin)

kramlex commented 3 years ago

Добавить что buildSrc больше не используется, ему на смену пришел Versions Catalog