Интересная статья, но во многом не согласен. Мы сейчас как раз пишем приложение на KMP + CMP, и у нас все выходит без каких-либо проблем. На поддержку iOS мы потратили всего пару дней, так как надо было реализовать работу с кастомной камерой, пермишенами. Все остальное перенеслось без доработок
Мы не поддерживали нативный look and feel, так как от нас этого не требовали, но реализовать его тоже не проблема, есть даже либа.
C Preview в Compose как мне кажется всегда была боль и разрабы их часто не пишут так как привыкли верстать в голове. Cейчас в последних IDEA (Начиная с IntelliJ IDEA 2025.1 EAP) preview в commonMain тоже завели (ждем в android studio), для desktop вообще hot reload появился. В любом случае никто не мешает вам в android target preview завести, не очень удобно конечно, но все таки возможно
Также, изображение, это набор данных, собираешь большой набор изображений, содержащих текст. Создаешь данные примерно такого вида (привел пример), циферки - это расположение текста (например прямоугольник), ну и сам текст, который на изображении. Дальше запускаешь обучение и тестишь.
В приложении Google Recorder сделали выжимку из аудио (только для английского языка), так что это вполне возможно. Я не проверял, насколько хорошо у них это получилось, но сам факт, что выжимка работает, уже есть. Модель Gemini Nano обучают так, чтобы она решала одну конкретную задачу. Важную роль играет тонкая настройка (LoRA) и данные, на которых обучается модель.
Привет, очень полезная статья! Есть вопрос, как вы попадаете в окно с "фиче модули -api и -impl". Если через "New -> Module -> Phone & Tablet -> фиче модули -api и -impl", то создается лишний модуль без -api или -impl в названии. Есть ли какой то обходной путь?
Так в статье и говорится о том, что эту ошибку нужно исправлять на сервере, вот только если все таки допустили ошибку и в приложение пришли не консистентные данные, то благодаря методам, которые описанны в статье, можно будет быстро вычислить ошибку и поправить. Иначе просто в связи плохого описания ошибки, пришлось бы дергать мобильных разработчиков, чтобы они нашли проблему, а их время не дешево стоит. К тому же эту ошибку можно допустить и в мобильном приложении, и эти методы также позволят быстро разобраться в проблеме.
Мы сталкиваемся с этой проблемой в мобильных приложениях, когда синхронизируем данные c сервера и сохраняем их в базу данных SQLite.
Пример вымышленный, однако практика показывает, что такое может случиться. Я представляю себе ситуацию так: в административной панели по какой-то причине был удален студент, однако запись о его участии в курсе осталась (почему это произошло — вопрос к бэкенду). Каскадное удаление решило бы проблему появления "висячих" записей, так как при удалении родительской записи "студент" удалилась бы и "запись на курс" с этим студентом. (Возможно есть и другие ситуации, которые приводят к появлению таких записей, в том числе и из-за неправильно логики на бэкенде или мобилке).
При сохранении в мобильном приложении можно было бы добавить проверку на наличие студента в записи на курс, которую мы пытаемся сохранить, но тогда мы не выявим корень проблемы и могут возникнуть другие ошибки связанные уже с логикой в мобильном приложении (часто лучше быстро получить ошибку и быстро ее поправить, чем вообще не подозревать о ее наличии). Плюс из-за дополнительных проверок на наличие родительских записей, скорость синхронизации в МП просядет, что вызовет гнев пользователей.
Из-за появления ошибок такого рода, мы решили улучшить ее описание при возникновении в мобильном приложениях, чтобы можно было быстро понять в чем проблема и пофиксить ее (все таки мы люди и нам свойственно ошибаться).
Все имеют в виду, что платформа пилит UI нативно, а потом этот нативный UI можно законектить с KMP. Так что все правильно пишут, KMP позволяет делать приложения с нативным UI и это плюс, возможно просто формулировка не точная.
Вообще я вроде видел где-то, что прям в KMP вьюшки делают для ios и android и они нативные, но не могу вспомнить где (оставлю ссылку если найду). Есть небольшой шанс, что когда-нибудь в compose for ios сделают вьюшки нативно по аналогии с Android, но это можно сказать мечты, которые вероятно останутся мечтами :)
В конце статьи написано, когда стоит выбрать Flutter или KMP.
Мне лично KMP очень нравится и я к нему привык, compose multiplatform так вообще один в один с jetpack compose и библиотеки можно практически без изменений копипастить. И надо понимать, что compose multiplatform еще сырой и поддержка ios только недвано появилась, поэтому необходимым либ мало совсем .
На счет разрешений, файлов и другого, можно без особого труда решить проблему через expect/actual и все будет отлично шариться. Да, что-то надо реализовать самому пока, но со временем появятся готовые либы, как это было с flutter. (возможно уже какие то либы есть из перечисленных, для файлов думаю точно должно быть что-то)
Короче через какое то время будет все супер и даже лучше
Вот полезная репа с kmp библиотеками и там есть для файлов и разрешений (но я ими не пользовался, поэтому не могу ничего сказать)
К сожалению это так, предметы по программированию были плохо структурированны и чаще всего их вели люди, которые не дня программистом не работали. Курсы же вели люди, которые имеют огромный опыт работы и после них можно было спокойно устроиться на джуна. Плюс я пошел на курсы после 3-го курса (в начале 4-го). Университет переоценен, знакомы из Бауманки на листочках программировал и это уже говорит о уровне образования в большинстве Российских вузах)
В универе были эти языки, но это не значит, что информацию, которую читали была хороша. Плюс многие предметы тормозились студентами, которые плохо шарят в программировании. Я все изучал сам так как программирование, это мое хобби, универ по сути не дал мне много знаний и опыта, я приобрел бы его и без него. Например я за две недели изучил информацию, которую преподаватель давал на протяжении семестра. Android разработку в универе не преподавали, я сам ее изучал т.к. мне была интересна эта тема.
Интересная статья, но во многом не согласен. Мы сейчас как раз пишем приложение на KMP + CMP, и у нас все выходит без каких-либо проблем. На поддержку iOS мы потратили всего пару дней, так как надо было реализовать работу с кастомной камерой, пермишенами. Все остальное перенеслось без доработок
Мы не поддерживали нативный look and feel, так как от нас этого не требовали, но реализовать его тоже не проблема, есть даже либа.
C Preview в Compose как мне кажется всегда была боль и разрабы их часто не пишут так как привыкли верстать в голове. Cейчас в последних IDEA (Начиная с IntelliJ IDEA 2025.1 EAP) preview в commonMain тоже завели (ждем в android studio), для desktop вообще hot reload появился. В любом случае никто не мешает вам в android target preview завести, не очень удобно конечно, но все таки возможно
Также, изображение, это набор данных, собираешь большой набор изображений, содержащих текст. Создаешь данные примерно такого вида (привел пример), циферки - это расположение текста (например прямоугольник), ну и сам текст, который на изображении. Дальше запускаешь обучение и тестишь.
В приложении Google Recorder сделали выжимку из аудио (только для английского языка), так что это вполне возможно. Я не проверял, насколько хорошо у них это получилось, но сам факт, что выжимка работает, уже есть. Модель Gemini Nano обучают так, чтобы она решала одну конкретную задачу. Важную роль играет тонкая настройка (LoRA) и данные, на которых обучается модель.
.
Kotlin/Native включает в себя серверную часть на основе LLVM для компилятора Kotlin.
Привет, очень полезная статья! Есть вопрос, как вы попадаете в окно с "фиче модули -api и -impl". Если через "New -> Module -> Phone & Tablet -> фиче модули -api и -impl", то создается лишний модуль без -api или -impl в названии. Есть ли какой то обходной путь?
Geminio пока с KMP не шуршит :(
Так в статье и говорится о том, что эту ошибку нужно исправлять на сервере, вот только если все таки допустили ошибку и в приложение пришли не консистентные данные, то благодаря методам, которые описанны в статье, можно будет быстро вычислить ошибку и поправить. Иначе просто в связи плохого описания ошибки, пришлось бы дергать мобильных разработчиков, чтобы они нашли проблему, а их время не дешево стоит. К тому же эту ошибку можно допустить и в мобильном приложении, и эти методы также позволят быстро разобраться в проблеме.
Мы сталкиваемся с этой проблемой в мобильных приложениях, когда синхронизируем данные c сервера и сохраняем их в базу данных SQLite.
Пример вымышленный, однако практика показывает, что такое может случиться. Я представляю себе ситуацию так: в административной панели по какой-то причине был удален студент, однако запись о его участии в курсе осталась (почему это произошло — вопрос к бэкенду). Каскадное удаление решило бы проблему появления "висячих" записей, так как при удалении родительской записи "студент" удалилась бы и "запись на курс" с этим студентом. (Возможно есть и другие ситуации, которые приводят к появлению таких записей, в том числе и из-за неправильно логики на бэкенде или мобилке).
При сохранении в мобильном приложении можно было бы добавить проверку на наличие студента в записи на курс, которую мы пытаемся сохранить, но тогда мы не выявим корень проблемы и могут возникнуть другие ошибки связанные уже с логикой в мобильном приложении (часто лучше быстро получить ошибку и быстро ее поправить, чем вообще не подозревать о ее наличии). Плюс из-за дополнительных проверок на наличие родительских записей, скорость синхронизации в МП просядет, что вызовет гнев пользователей.
Из-за появления ошибок такого рода, мы решили улучшить ее описание при возникновении в мобильном приложениях, чтобы можно было быстро понять в чем проблема и пофиксить ее (все таки мы люди и нам свойственно ошибаться).
.
Все имеют в виду, что платформа пилит UI нативно, а потом этот нативный UI можно законектить с KMP. Так что все правильно пишут, KMP позволяет делать приложения с нативным UI и это плюс, возможно просто формулировка не точная.
Вообще я вроде видел где-то, что прям в KMP вьюшки делают для ios и android и они нативные, но не могу вспомнить где (оставлю ссылку если найду). Есть небольшой шанс, что когда-нибудь в compose for ios сделают вьюшки нативно по аналогии с Android, но это можно сказать мечты, которые вероятно останутся мечтами :)
Если нужен нативный UI, то да, если нет, то можно в KMP с помощью compose multiplatform сделать
В конце статьи написано, когда стоит выбрать Flutter или KMP.
Мне лично KMP очень нравится и я к нему привык, compose multiplatform так вообще один в один с jetpack compose и библиотеки можно практически без изменений копипастить. И надо понимать, что compose multiplatform еще сырой и поддержка ios только недвано появилась, поэтому необходимым либ мало совсем .
На счет разрешений, файлов и другого, можно без особого труда решить проблему через expect/actual и все будет отлично шариться. Да, что-то надо реализовать самому пока, но со временем появятся готовые либы, как это было с flutter. (возможно уже какие то либы есть из перечисленных, для файлов думаю точно должно быть что-то)
Короче через какое то время будет все супер и даже лучше
Вот полезная репа с kmp библиотеками и там есть для файлов и разрешений (но я ими не пользовался, поэтому не могу ничего сказать)
К сожалению это так, предметы по программированию были плохо структурированны и чаще всего их вели люди, которые не дня программистом не работали. Курсы же вели люди, которые имеют огромный опыт работы и после них можно было спокойно устроиться на джуна. Плюс я пошел на курсы после 3-го курса (в начале 4-го). Университет переоценен, знакомы из Бауманки на листочках программировал и это уже говорит о уровне образования в большинстве Российских вузах)
Но они не дают знания по программированию, в статье именно это имелось ввиду
В универе были эти языки, но это не значит, что информацию, которую читали была хороша. Плюс многие предметы тормозились студентами, которые плохо шарят в программировании. Я все изучал сам так как программирование, это мое хобби, универ по сути не дал мне много знаний и опыта, я приобрел бы его и без него. Например я за две недели изучил информацию, которую преподаватель давал на протяжении семестра. Android разработку в универе не преподавали, я сам ее изучал т.к. мне была интересна эта тема.
Кому как, мне старый тоже больше нравился