Forwarded from Dev Easy Notes (Nikita)
Первый пост чисто для разогрева, тут ничего супер нового, однако я обозначу пару проблем с пониманием типов тестирования.
Большинство разработчиков черпают идеи о тестировании из книг или статей, которые читают в начале карьеры. Все после прочтения Фаулера с идеей пирамиды тестирования и Кена Бека с TDD обретают непоколебимую уверенность, что все можно решить юнит тестами и пирамида тестирования это универсальная модель которая подходит любому проекту. Реальность разумеется не так проста.
Начну я вот с какой проблемы, у нас нет четкого понимания, в чем отличие разных типов тестов? Не спешите токсить в коментах, сначала дочитайте что бы понять, что я имею в виду)
По пирамиде тестирования есть 4 типа тестов:
👉 end-to-end
👉 системные
👉 интеграционные
👉 юниты
С end-to-end тестами вроде как все понятно. Поднимаем все приложение, библиотеку или что мы там разрабатываем, которая работает в условиях очень близко к продовым. А вот остальные 3 это котел холивара. Юнит тесты мы пишем вроде как на один модуль или класс. Интеграционные тесты затрагивают несколько компонентов, классов, модулей и т.д. Системные это вроде как что-то между интеграционным и end-to-end. Даже из описания системного теста появляется вот какая проблема.
Смотрите, я делаю класс A. Затем пишу тесты только на этот класс. Казалось бы это юнит тест. Затем в этом классе A из-за сложности, я выношу часть функционала в другой класс B. Класс A использует код капотом класс B. И вот юнит тесты которые я написал на первый класс А это все еще юнит тесты или уже интеграционные, ведь вроде как уже несколько компонентов?
Еще можно на юнит тесты посмотреть с другой стороны, они запускают кучу процессов под капотом, это и jvm и загрузка классов и выделение памяти. Если думать про это в таком ключе то даже самый простой юнит тест на самом деле системный.
Эта баллада к тому, что не существует абсолютной шкалы или разделения тестов. То что для одного проекта будет интеграционным тестом, для другого будет просто юнитом и наоборот. Например если мы делаем какую-то библиотеку, то в ней end-to-end тестом может быть просто проверка вызова метода какого-то системного API.
Поэтому когда в каком-то проекте есть четкая направленность или даже правило писать только юнит тесты, это ничего кроме смеха не вызывает. Потому как это вообще ни о чем не говорит. Я сторонник того, чтобы вообще на запариваться об этом разделении и подбирать подходы в тестировании исходя из архитектуры приложения, слоев и т.д.
Другими словами когда мы не думаем о том, юнит это тест или интеграционный, а когда мы сосредотачиваемся на разделении, тестов на условно тесты для ViewModel и на тесты для Interactor. Помимо этого если мы говорим конкретно о тестах на Android, стоит больше уделять внимания разделению на тесты которые гоняются на эмуляторе и тесты которые можем прогнать локально.
Короче, как бы это не звучало банально, все сводится к старому доброму “все относительно“ и не слушайте фанатиков пирамиды.
Большинство разработчиков черпают идеи о тестировании из книг или статей, которые читают в начале карьеры. Все после прочтения Фаулера с идеей пирамиды тестирования и Кена Бека с TDD обретают непоколебимую уверенность, что все можно решить юнит тестами и пирамида тестирования это универсальная модель которая подходит любому проекту. Реальность разумеется не так проста.
Начну я вот с какой проблемы, у нас нет четкого понимания, в чем отличие разных типов тестов? Не спешите токсить в коментах, сначала дочитайте что бы понять, что я имею в виду)
По пирамиде тестирования есть 4 типа тестов:
👉 end-to-end
👉 системные
👉 интеграционные
👉 юниты
С end-to-end тестами вроде как все понятно. Поднимаем все приложение, библиотеку или что мы там разрабатываем, которая работает в условиях очень близко к продовым. А вот остальные 3 это котел холивара. Юнит тесты мы пишем вроде как на один модуль или класс. Интеграционные тесты затрагивают несколько компонентов, классов, модулей и т.д. Системные это вроде как что-то между интеграционным и end-to-end. Даже из описания системного теста появляется вот какая проблема.
Смотрите, я делаю класс A. Затем пишу тесты только на этот класс. Казалось бы это юнит тест. Затем в этом классе A из-за сложности, я выношу часть функционала в другой класс B. Класс A использует код капотом класс B. И вот юнит тесты которые я написал на первый класс А это все еще юнит тесты или уже интеграционные, ведь вроде как уже несколько компонентов?
Еще можно на юнит тесты посмотреть с другой стороны, они запускают кучу процессов под капотом, это и jvm и загрузка классов и выделение памяти. Если думать про это в таком ключе то даже самый простой юнит тест на самом деле системный.
Эта баллада к тому, что не существует абсолютной шкалы или разделения тестов. То что для одного проекта будет интеграционным тестом, для другого будет просто юнитом и наоборот. Например если мы делаем какую-то библиотеку, то в ней end-to-end тестом может быть просто проверка вызова метода какого-то системного API.
Поэтому когда в каком-то проекте есть четкая направленность или даже правило писать только юнит тесты, это ничего кроме смеха не вызывает. Потому как это вообще ни о чем не говорит. Я сторонник того, чтобы вообще на запариваться об этом разделении и подбирать подходы в тестировании исходя из архитектуры приложения, слоев и т.д.
Другими словами когда мы не думаем о том, юнит это тест или интеграционный, а когда мы сосредотачиваемся на разделении, тестов на условно тесты для ViewModel и на тесты для Interactor. Помимо этого если мы говорим конкретно о тестах на Android, стоит больше уделять внимания разделению на тесты которые гоняются на эмуляторе и тесты которые можем прогнать локально.
Короче, как бы это не звучало банально, все сводится к старому доброму “все относительно“ и не слушайте фанатиков пирамиды.
👍2🔥1
Forwarded from Android Live 🤖
Вход в приложение
#security #android
Почти в любом приложении, которое хоть как-то связано с хранением и работой с приватными данными, имеется аутентификация: или вход по паролю, или вход по биометрии + паролю.
И кажется, что задача супер простая: добавь сверху экран, который будет появляться при старте приложения, сохрани пароль на устройстве и сверяй с тем, что ввёл пользователь. Но на практике — большинство приложений в большей или меньшей степени реализуют вход некорректно: неправильно хранят пароль, не используют
Я поискал за вас и даю сразу несколько статей и уроков, которые с огромной вероятностью помогут вам корректно реализовать вход в приложение:
1️⃣ Тут автор рассказывает про пример некорректной авторизации в приложение и про свойства
2️⃣ Отличное видео, где по шагам описывается процесс создания биометрической авторизации в приложение: разницу между различными классами для авторизации, как затащить alpha-версию библиотеки для входа (удивился, что она до сих пор в alpha) и наконец-то сделать корректный вход по отпечатку.
3️⃣ Библиотека PINkman, которая позволяет добавить вход по пину в приложение: можете не тащить всю либу в проект, но внутри — много крутых идей по корректному хранению пароля в системе. А можете и затащить, если не хочется разбираться.
4️⃣ Статья, где автор описывает ещё одно хитрое свойство — setUserAuthenticationValidityDurationSeconds, которое также может быть использовано как уязвимость для входа.
5️⃣ Ну и напоследок — больше информации про составляющие качественной криптографии в Android:
Конечно, идеальной защиты не существует и от "паяльника" в руках злоумышленника врядли поможет какой-то из методов защиты. Но для всех остальных случаев ваша защита способна защитить приложение и приватные данные пользователя.
#security #android
Почти в любом приложении, которое хоть как-то связано с хранением и работой с приватными данными, имеется аутентификация: или вход по паролю, или вход по биометрии + паролю.
И кажется, что задача супер простая: добавь сверху экран, который будет появляться при старте приложения, сохрани пароль на устройстве и сверяй с тем, что ввёл пользователь. Но на практике — большинство приложений в большей или меньшей степени реализуют вход некорректно: неправильно хранят пароль, не используют
CryptoObject , дают возможность обойти экран входа и т.д.Я поискал за вас и даю сразу несколько статей и уроков, которые с огромной вероятностью помогут вам корректно реализовать вход в приложение:
1️⃣ Тут автор рассказывает про пример некорректной авторизации в приложение и про свойства
CryptoObject, setUserAuthenticationRequired и о том, как эксплуатировать эти хаки. 2️⃣ Отличное видео, где по шагам описывается процесс создания биометрической авторизации в приложение: разницу между различными классами для авторизации, как затащить alpha-версию библиотеки для входа (удивился, что она до сих пор в alpha) и наконец-то сделать корректный вход по отпечатку.
3️⃣ Библиотека PINkman, которая позволяет добавить вход по пину в приложение: можете не тащить всю либу в проект, но внутри — много крутых идей по корректному хранению пароля в системе. А можете и затащить, если не хочется разбираться.
4️⃣ Статья, где автор описывает ещё одно хитрое свойство — setUserAuthenticationValidityDurationSeconds, которое также может быть использовано как уязвимость для входа.
5️⃣ Ну и напоследок — больше информации про составляющие качественной криптографии в Android:
KeyStore, MasterKeys, Blocking, Padding и другие страшные слова.Конечно, идеальной защиты не существует и от "паяльника" в руках злоумышленника врядли поможет какой-то из методов защиты. Но для всех остальных случаев ваша защита способна защитить приложение и приватные данные пользователя.
🔥3👍1
Forwarded from Kotlin Multiplatform Broadcast (Кирилл Розов)
У Kotlin уже был маскот, а теперь у его есть и имя - Kodee. Помимо этого он еще есть и с разными эмоциями. Можно для ПРов использовать будет.
Нужен стикерпак для Telegram с ними!
Скачать ассеты маскота можно тут
Нужен стикерпак для Telegram с ними!
Скачать ассеты маскота можно тут
❤5👍2🤔1
Forwarded from Android Broadcast (Кирилл Розов)
Ребята из Klima решили уйти от Dagger и Hlit на Android в пользу чего-то мультиплатформенного. Отказались от Koin и выбрали Kotlin Inject, опытом миграции на который и делятся в статье.
#di
#di
👍2🔥2
Forwarded from Mobile Native ️️
Автоматизация публикации Android приложений в Google Play и Huawei AppGallery — инструкция от А до Я
Детальный гайд по тому, как автоматизировать процесс релизов Android-приложений в Google Play и Huawei AppStore.
👉 Структура Gradle‑проекта
👉 Android App Bundles (AAB) vs Android Packages (APK)
👉 Генерация номеров версий
👉 Получение ключей доступа от Google Play
👉 Загрузка сборок в Google Play
👉 Управление метаданными Google Play
👉 Получение ключей доступа от Huawei AppGallery
👉 Загрузка сборок и release notes в Huawei AppGallery
👉 Добавление CI/CD
👉 Заключение
Читать (Ru)
Детальный гайд по тому, как автоматизировать процесс релизов Android-приложений в Google Play и Huawei AppStore.
👉 Структура Gradle‑проекта
👉 Android App Bundles (AAB) vs Android Packages (APK)
👉 Генерация номеров версий
👉 Получение ключей доступа от Google Play
👉 Загрузка сборок в Google Play
👉 Управление метаданными Google Play
👉 Получение ключей доступа от Huawei AppGallery
👉 Загрузка сборок и release notes в Huawei AppGallery
👉 Добавление CI/CD
👉 Заключение
Читать (Ru)
👍2🔥1
Forwarded from Mobile Developer (Алексей Гладков)
Пс, там на канале у Kotlin вышли все видео с KotlinConf!
https://www.youtube.com/@Kotlin/videos
Срочно бежим смотреть
https://www.youtube.com/@Kotlin/videos
Срочно бежим смотреть
Forwarded from Записки разработчицы (Anna Zharkova)
Только что провели в Отус открытый урок, где я показала, как писать полноценное приложение KMM от начала до конца с бизнес-логикой, сетью и DI
https://www.youtube.com/watch?v=aZhsZbF8CEg
https://www.youtube.com/watch?v=aZhsZbF8CEg
YouTube
Как создавать приложения с помощью обновленного SDK для кросс-платформенной разработки?
Осенью 2022, наконец, вышла стабильная версия популярного сдк для кросс-платформенной разработки Kotlin Multiplatform. А это значит, что самое время осваивать, как просто и эффективно разрабатывать на нем приложения.
На нашем занятии мы вас не только научим…
На нашем занятии мы вас не только научим…
👍2🔥1
Forwarded from addmeto (Grigory Bakunov)
Hugging Face совместно с ServiceNow собрали и выложили свою собственную модель, которая умеет то, что делает GitHub CoPilot — подсказывать код, по сути писать 80% кода без всяких программистов. Только в отличие от CoPilot это не платная услуга, а доступный всем опенсорс код и веса модели.
Я проверил его на любимом моем примере — написании кода игры в морской бой. У меня есть претензии к результату с точки зрения качества кода. Но он получился работоспособным и это самое важное. Внутри у нее кроме неонки всё традиционно — GPT2 модель на примерно триллион токенов. Качество работы на моих примерах чуть хуже CoPilot, но начало положено.
https://huggingface.co/bigcode/starcoder
Я проверил его на любимом моем примере — написании кода игры в морской бой. У меня есть претензии к результату с точки зрения качества кода. Но он получился работоспособным и это самое важное. Внутри у нее кроме неонки всё традиционно — GPT2 модель на примерно триллион токенов. Качество работы на моих примерах чуть хуже CoPilot, но начало положено.
https://huggingface.co/bigcode/starcoder
huggingface.co
bigcode/starcoder · Hugging Face
We’re on a journey to advance and democratize artificial intelligence through open source and open science.
👍4😱1
Forwarded from Mobile AppSec World (Yury Shabalin)
Frida для начинающих
Всем привет!
Что-то последнее время часто встречаю гайды для только вкатывающихся в тему безопасности мобилок.
И вот такой гайд, я бы даже назвал его методичкой по использованию Frida. Весьма неплохой, есть и обычные примеры для начинающих, и объяснение, зачем это все нужно и как примерно работает. Но наиболее интересная часть про практическое применение, про расшифровку паролей, вызов методов напрямую и т.д.
Весьма советую тем, кто использует (начинает) Frida и тем, кому от неё защищаться (ведь всегда полезно знать, как работает то, от чего ты пытаешься написать защиту). Ведь даже если ты зашифровал что-то, для расшифровки вполне можно вызвать функцию напрямую, конечно, если не использовать биометрию в качестве права на получение доступа к криптообъекту ;)
В общем, хорошая штука.
И всех с праздником!!
#Frida #beginnerguide #android
Всем привет!
Что-то последнее время часто встречаю гайды для только вкатывающихся в тему безопасности мобилок.
И вот такой гайд, я бы даже назвал его методичкой по использованию Frida. Весьма неплохой, есть и обычные примеры для начинающих, и объяснение, зачем это все нужно и как примерно работает. Но наиболее интересная часть про практическое применение, про расшифровку паролей, вызов методов напрямую и т.д.
Весьма советую тем, кто использует (начинает) Frida и тем, кому от неё защищаться (ведь всегда полезно знать, как работает то, от чего ты пытаешься написать защиту). Ведь даже если ты зашифровал что-то, для расшифровки вполне можно вызвать функцию напрямую, конечно, если не использовать биометрию в качестве права на получение доступа к криптообъекту ;)
В общем, хорошая штука.
И всех с праздником!!
#Frida #beginnerguide #android
GitHub
Mobile-App-Instrumentation/README.md at main · jaimin-ns/Mobile-App-Instrumentation
Contribute to jaimin-ns/Mobile-App-Instrumentation development by creating an account on GitHub.
👍4🔥1
Forwarded from Ra'Reilly - Заметки про Ktor и не только (Osip Fatkullin)
А вы знали, что в IDEA (ну и в Android Studio) можно поменять иконку проекта?
Я не знал, а это возможно. Надо всего лишь... Нет, сода ни при чём. Надо на welcome-скрине нажать "Change Project Icon..." и выбрать иконку. Другой вариант — положить файл с названием
Интересно, что возможность такая есть уже давно. Я пытался найти когда она появилась, но нашёл только косвенные признаки, что в IDEA 2021 она уже была.
Всё, мне некогда, я пошёл ставить иконки всем проектам.
#idea
Я не знал, а это возможно. Надо всего лишь... Нет, сода ни при чём. Надо на welcome-скрине нажать "Change Project Icon..." и выбрать иконку. Другой вариант — положить файл с названием
icon.noscript или icon.png в папку .idea и ваш проект будет отличаться в списке проектов от всех остальных.Интересно, что возможность такая есть уже давно. Я пытался найти когда она появилась, но нашёл только косвенные признаки, что в IDEA 2021 она уже была.
Всё, мне некогда, я пошёл ставить иконки всем проектам.
#idea
😱6👍2❤1
Forwarded from Стой под стрелой (Nikita Prokopov)
Гитхаб выкатил новый дизайн навигатора кода, который до этого обкатывали в превью. Было только для желающих, а теперь и для нежелающих. Это, кстати, кажется единственная превью-фича, которую я почти сразу же отключил.
Вкратце, помимо собственно файла слева теперь панель с деревом кода, справа — панель символов в текущем файле, сверху sticky заголовок, который показывает начало функции, если ты долистал до ее середины, а кнопка T (перейти к файлу) теперь в малюсеньком попапе.
Вот что я хочу про него сказать: да, функций стало больше, так что формально, на бумаге, стало полезнее. Я уверен, что они даже иногда приходятся кстати.
Но меня не покидает ощущение перегруженности. Что тебе так много показывают, что ты не знаешь даже, куда смотреть. Тем более что визуальной иерархии, главное-второстепенное, тут не сделали. В итоге у тебя три визуально равноправные панели, хотя ты всего-то хотел посмотреть на файл. Хуже того, текст файла даже теряется, потому что обе панели используют гораздо более яркие иконки.
Второй момент — это лайаут. Я уже писал, как не нравятся дебаггеры и devtools чисто визуально, потому что там миллион панелей, расставленных более-менее случайно. Так и тут. Еще я когда-то писал, что первое ощущение от Идеи — что тебя обложили. Потому что панели со всех сторон — слева, справа, снизу и сверху. Хотя вроде особо выраженной клаустрофобией я не страдаю, но все равно, тесновато. Удивительно, что гитхаберы снизу никакой панели не влепили. А чего, место же есть!
В принципе, собрать «как было» в новом дизайне почти можно. Можно скрыть обе панели, и тогда из ухудшений останутся только трехуровневая прилипающая шапка и засунутый в попап go to file, который будет выровнен по правому краю (бе).
Я это пишу, потому что наверняка набегут умники только чтобы сказать «чего ты разнылся, вот же, можно сделать как было». А разнылся я, конечно, не для себя, а для моих дорогих читателей, которым не просто надо как-то приспособиться, а которые будут когда-нибудь дизайнить свой продукт и им это наблюдение пригодится: помнить нужно не только о функциях, но и визуальной простоте, лаконичности, легкости. Этот блог вообще не о том, как мне плохо с текущими инструментами, а как делать хорошие, новые.
А с Гитхабом, я думаю, дальше будет все хуже и хуже. Теперь, когда туда пришли vs-кодовцы и у них появились свободные руки, которые надо чем-то занять, он будет только усложняться. В здоровом стартапе, где рук сильно не хватает, фичи взвешиваются по коэффициенту легкость реализации/важность, и делается в основном только самое главное. В успешном энтерпрайзе же рук сильно больше, чем хороших идей, куда эти руки приложить. Поэтому реализуются даже супер неэффективные/ненужные фичи, просто потому что могут и потому что надо чем-то занимать программистов. Ровно то же самое произошло и с VS Code. Так что держитесь, зима близко.
Вкратце, помимо собственно файла слева теперь панель с деревом кода, справа — панель символов в текущем файле, сверху sticky заголовок, который показывает начало функции, если ты долистал до ее середины, а кнопка T (перейти к файлу) теперь в малюсеньком попапе.
Вот что я хочу про него сказать: да, функций стало больше, так что формально, на бумаге, стало полезнее. Я уверен, что они даже иногда приходятся кстати.
Но меня не покидает ощущение перегруженности. Что тебе так много показывают, что ты не знаешь даже, куда смотреть. Тем более что визуальной иерархии, главное-второстепенное, тут не сделали. В итоге у тебя три визуально равноправные панели, хотя ты всего-то хотел посмотреть на файл. Хуже того, текст файла даже теряется, потому что обе панели используют гораздо более яркие иконки.
Второй момент — это лайаут. Я уже писал, как не нравятся дебаггеры и devtools чисто визуально, потому что там миллион панелей, расставленных более-менее случайно. Так и тут. Еще я когда-то писал, что первое ощущение от Идеи — что тебя обложили. Потому что панели со всех сторон — слева, справа, снизу и сверху. Хотя вроде особо выраженной клаустрофобией я не страдаю, но все равно, тесновато. Удивительно, что гитхаберы снизу никакой панели не влепили. А чего, место же есть!
В принципе, собрать «как было» в новом дизайне почти можно. Можно скрыть обе панели, и тогда из ухудшений останутся только трехуровневая прилипающая шапка и засунутый в попап go to file, который будет выровнен по правому краю (бе).
Я это пишу, потому что наверняка набегут умники только чтобы сказать «чего ты разнылся, вот же, можно сделать как было». А разнылся я, конечно, не для себя, а для моих дорогих читателей, которым не просто надо как-то приспособиться, а которые будут когда-нибудь дизайнить свой продукт и им это наблюдение пригодится: помнить нужно не только о функциях, но и визуальной простоте, лаконичности, легкости. Этот блог вообще не о том, как мне плохо с текущими инструментами, а как делать хорошие, новые.
А с Гитхабом, я думаю, дальше будет все хуже и хуже. Теперь, когда туда пришли vs-кодовцы и у них появились свободные руки, которые надо чем-то занять, он будет только усложняться. В здоровом стартапе, где рук сильно не хватает, фичи взвешиваются по коэффициенту легкость реализации/важность, и делается в основном только самое главное. В успешном энтерпрайзе же рук сильно больше, чем хороших идей, куда эти руки приложить. Поэтому реализуются даже супер неэффективные/ненужные фичи, просто потому что могут и потому что надо чем-то занимать программистов. Ровно то же самое произошло и с VS Code. Так что держитесь, зима близко.
👍4👎1🔥1
Forwarded from Mobile AppSec World (Yury Shabalin)
Легальное клонирование приложений в Android 14
Вот это интересные новости, начиная с Android 14 появляется системная возможность клонирования приложений. То есть, можно поставить рядом, например, две копии мессенджера, который позволяет работать только с одного аккаунта или игр или чего угодно.
Чтобы включить эту возможность, надо зайти в Настройки -> Приложения -> Склонированные приложения (Settings > Apps > Cloned Apps)
Для нас это значит, что может быть сильно проще тестировать разные баги, связанные с некорректной авторизацией, иметь несколько приложений с разными аккаунтами или просто не бояться совсем «убить» один из клонов.
А на самом деле, это сильно напоминает историю с твиками для Jailbreak. Apple долгое время (и по сей день), борется с джейлом, но самые популярные твики со временем были перенесены в сам iOS. Раз люди этим активно пользуется, значит это может быть удобно и полезно.
И этом случае все аналогично, огромное количество приложений, которые помогают клонировать приложения на Android и вот эта фича уже в релизе :) Удобно!
#android #clone #news
Вот это интересные новости, начиная с Android 14 появляется системная возможность клонирования приложений. То есть, можно поставить рядом, например, две копии мессенджера, который позволяет работать только с одного аккаунта или игр или чего угодно.
Чтобы включить эту возможность, надо зайти в Настройки -> Приложения -> Склонированные приложения (Settings > Apps > Cloned Apps)
Для нас это значит, что может быть сильно проще тестировать разные баги, связанные с некорректной авторизацией, иметь несколько приложений с разными аккаунтами или просто не бояться совсем «убить» один из клонов.
А на самом деле, это сильно напоминает историю с твиками для Jailbreak. Apple долгое время (и по сей день), борется с джейлом, но самые популярные твики со временем были перенесены в сам iOS. Раз люди этим активно пользуется, значит это может быть удобно и полезно.
И этом случае все аналогично, огромное количество приложений, которые помогают клонировать приложения на Android и вот эта фича уже в релизе :) Удобно!
#android #clone #news
XDA
Android 14 could let you clone apps so you can use two accounts at the same time
Android 14 is preparing to add an app cloning feature that will let you clone an app so you can use two accounts at the same time.
👍3🔥3
Forwarded from Mobile Developer (Алексей Гладков)
Compose Look And Feel Library
https://github.com/alexzhirkevich/compose-look-and-feel
Костя Цховребов (надеюсь, вы уже посмотрели стрим) скинул вчера в чат compose multiplatform просто фантастическую библиотеку
Там человек полностью восстановил иосный look and feel на чистом компоузе и сделал CupertinoTheme.
Работа еще не доведена до конца, но при этом уже много всякого есть.
Ну и как в любом open source, если что-то хочется, то вы всегда можете что-то докинуть сами
https://github.com/alexzhirkevich/compose-look-and-feel
Костя Цховребов (надеюсь, вы уже посмотрели стрим) скинул вчера в чат compose multiplatform просто фантастическую библиотеку
Там человек полностью восстановил иосный look and feel на чистом компоузе и сделал CupertinoTheme.
Работа еще не доведена до конца, но при этом уже много всякого есть.
Ну и как в любом open source, если что-то хочется, то вы всегда можете что-то докинуть сами
🔥4🎉2👍1
Forwarded from Why Android? 🌚
В LazyColumn добавляют поддержку Lookahead, что позволит делать Shared element transition 🌚
Даже есть небольшой пример как это будет работать
https://android-review.googlesource.com/c/platform/frameworks/support/+/2507256
Даже есть небольшой пример как это будет работать
https://android-review.googlesource.com/c/platform/frameworks/support/+/2507256
🔥5👍2
Forwarded from Мобильное Чтиво
Как мобильный разработчик фудтех приложений я не смог пройти мимо выступления про KMM в приложении McDonald's.
McDonald’s, как и наши приложения, работают во многих странах мира. У них 63 страны, у нас в этом году будет 24 страны (поменьше, но тоже не мало). И парни рассказывали про то, как удобно иметь единый код для доменной логики (в пример приводили разные способы оплаты в разных странах, о как это знакомо!).
Запомнился слайд с пирамидой:
- Дата слой полностью на KMM
- Доменная логика и Презентационная логика почти вся на KMM
- UI часть - нативные
У меня вопрос только к геометрии — размер модулей не выглядит пирамидой. Как может быть Data слой настолько большой, а UI на столько маленький?
На 200% уверен, что ребята сделали это просто для красоты, но это вводит в заблуждения. Здесь это важно. Потому что доклад про внедрение KMM, и из этой картинки можно сделать вывод, что почти всё на KMM у них. Хотя это не так. В общем не вводите в заблуждение в угоду красоты!
#kmm #kotlin
McDonald’s, как и наши приложения, работают во многих странах мира. У них 63 страны, у нас в этом году будет 24 страны (поменьше, но тоже не мало). И парни рассказывали про то, как удобно иметь единый код для доменной логики (в пример приводили разные способы оплаты в разных странах, о как это знакомо!).
Запомнился слайд с пирамидой:
- Дата слой полностью на KMM
- Доменная логика и Презентационная логика почти вся на KMM
- UI часть - нативные
У меня вопрос только к геометрии — размер модулей не выглядит пирамидой. Как может быть Data слой настолько большой, а UI на столько маленький?
На 200% уверен, что ребята сделали это просто для красоты, но это вводит в заблуждения. Здесь это важно. Потому что доклад про внедрение KMM, и из этой картинки можно сделать вывод, что почти всё на KMM у них. Хотя это не так. В общем не вводите в заблуждение в угоду красоты!
#kmm #kotlin
👍5🔥2😁1
Forwarded from red_mad_dev
Какую анимацию выбрать: Composable или Suspend? Возможна ли анимация за ноль рекомпозиций? А что будет, если «обмануть» Compose и поставить @ Immutable на мутабельное значение? Об этом и многом другом рассказал Android-разработчик red_mad_robot Серёжа Чумиков в своём докладе.
Запись выступления можно посмотреть на нашем ютуб-канале, а презентацию скачать с гугл-драйва. Если пропустил первую часть доклада, читай этот пост.
#android #compose
Запись выступления можно посмотреть на нашем ютуб-канале, а презентацию скачать с гугл-драйва. Если пропустил первую часть доклада, читай этот пост.
#android #compose
👍2🔥1
Forwarded from Mobile Developer (Алексей Гладков)
Почему KMM не кроссплатформа?
https://youtu.be/3nyBxrAtF-M
В преддверии Мобиуса предлагаю посмотреть офигенное видео по полочкам объясняющее
👉 Чем KMM отличается от остальных подходов
👉 Что можно считать кроссплатформой
👉 Как работает Котлин мультиплатформа
Приятного просмотра
https://youtu.be/3nyBxrAtF-M
В преддверии Мобиуса предлагаю посмотреть офигенное видео по полочкам объясняющее
👉 Чем KMM отличается от остальных подходов
👉 Что можно считать кроссплатформой
👉 Как работает Котлин мультиплатформа
Приятного просмотра
YouTube
Александр Соколинский — Почему KMM — не кроссплатформа?
Подробнее о конференции Mobius: https://jrg.su/ojGU3B
— —
Александр уже полтора года делает приложения с использованием технологии KMM в продакшене. В докладе он рассмотрит концепцию KMM и ее принципиальные отличия от остальных кроссплатформенных решений.…
— —
Александр уже полтора года делает приложения с использованием технологии KMM в продакшене. В докладе он рассмотрит концепцию KMM и ее принципиальные отличия от остальных кроссплатформенных решений.…
👍2🔥2🤔2
Forwarded from Kotlin Multiplatform (Kostya)
Media is too big
VIEW IN TELEGRAM
Заодно рекомендую полезную библиотеку с поддержкой инсетов на андроид+иОС+десктоп
https://github.com/mori-atsushi/insetsx
https://github.com/mori-atsushi/insetsx
❤2👍1🔥1
Forwarded from Mobile Native ️️
Kotlin Sealed Interfaces: A Deep Dive into a Powerful New Feature
Неплохая статья с примерами по основам и использованию sealed интерфейсов.
👉 Subtypes of Sealed Interfaces
👉 Advanced Techniques and Best Practices
👉 Avoiding Subclassing
👉 Extending Sealed Interfaces
👉 Sealed Classes vs Sealed Interfaces
Читать (En)
Неплохая статья с примерами по основам и использованию sealed интерфейсов.
👉 Subtypes of Sealed Interfaces
👉 Advanced Techniques and Best Practices
👉 Avoiding Subclassing
👉 Extending Sealed Interfaces
👉 Sealed Classes vs Sealed Interfaces
Читать (En)
👍2🔥1