Forwarded from iOS Broadcast (Андрей Зонов)
Пятница - самое время рассмотреть очередной кросплатформенный движок. По-началу, когда я о нем услышал, мысленно закопал. Но потом понял что идея вполне жизнеспособна:
🔥 Полный натив для iOS, в отличии от большинства движков (Flutter, Compose Multiplatform). Look&Feel из коробки. SwiftUI на iOS и Compose на Andoid
🔥 Нет отдельного языка или новых концепций как с React Native или Xamarin
🔥 Нет проблем с ARC - код изначально пишется на Swift+SwiftUI
🔥 Исходники Kotlin, которые генерятся движком, могут быть не только просмотрены но и отредактированы
Не все так просто, даже если опустить вендорлок:
💩Поддержка языка ограничена, нужно думать какие конструкции можно использовать
💩Нативные компоненты прийдется писать свои или адаптировать сильно транспилированный код
💩В качестве БД прийдется использовать прямые обращения к sqlite
Почему я думаю, что это может взлететь?
💸Стартапы часто начинают с iOS-only приложения, которые пишут на самых актуальных инструментах, а это способ быстрее получить аналог на Android и проверить интерес
💸Проще найти разработчика который умеет писать нативный код для iOS и адаптирует его под Android
Можно поступить мудро, и посмотреть взлетит ли этот подход через пару лет, ведь если долго сидеть на берегу реки, то можно увидеть, как мимо проплывёт труп твоего врага 😀
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🤔2🔥1
Forwarded from Полуночные Зарисовки
Telegraph
Как запустить активность без регистрации (и SMS) в манифесте?
Читал тут интервью Максима Сидорова. Классное интервью крутого специалиста. Особенно полезны были обсуждения по поводу собеседований. Мне как-то довелось даже пару раз провести с ним собес вторым номером. И в этом интервью был пример вопроса по поводу основных…
👍2🔥2😱2
Forwarded from Kotlin Adept Notes (Alex Panov)
VPN, который не заблокируют
🌐 Ни для кого не секрет, что сейчас все больше протоколов VPN подвергается блокировке — это и WireGuard, и OpenVPN, и другие, но решение есть!
Причём собрать свое мобильное приложение с VPN, которое не боится блокировок достаточно легко. Для этого нам потребуется связка WireGuard + xRay.
Принцип работы
😀 xRay — это прокси-сервер, который умеет маскировать трафик под браузерный (TLS). Нам лишь нужно запустить VPN туннель и весь трафик пропускать через него.
Пример на Android
😀 Запускаем xRay с переданной конфигурацией. В
😀 Подготавливаем VpnService, чтобы ваше приложение могло создавать VPN туннель.
😀 Поднимаем VPN туннель. Внутри конфига в Endpoint указываем localhost, чтобы весь трафик шел в xRay.
Как видим реализовать свое приложение для VPN с данными либами довольно не сложно🤔 . И так как эти либы написаны на Go, мы их можем запустить где угодно, будь то Android, iOS или любая другая платформа.
Если у вас остались вопросы и тема заинтересовала, то пишите комменты, попробую помочь, чем смогу👇
Причём собрать свое мобильное приложение с VPN, которое не боится блокировок достаточно легко. Для этого нам потребуется связка WireGuard + xRay.
Принцип работы
Пример на Android
inbounds указываем входящий трафик от WireGuard с localhost и протоколом dokodemo-door, а в outbounds исходящий трафик на ваш сервер, тут можно использовать либо облегченный протокол vless, либо полноценный протокол с шифрованием vmess.
LibXray.runXray("", configFile.absolutePath, 0)
GoBackend.VpnService.prepare(context)
val backend = GoBackend(applicationContext)
val tunnel: Tunnel = WireGuardTunnel() // Ваш класс, реализующий интерфейс Tunnel
val config: Config = ... // Ваш конфиг для WireGuard
backend.setState(tunnel, Tunnel.State.UP, config) // Обязательно вызывать с фонового потока
Как видим реализовать свое приложение для VPN с данными либами довольно не сложно
Если у вас остались вопросы и тема заинтересовала, то пишите комменты, попробую помочь, чем смогу👇
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5🤯4😎2🤨1
We Love Android
Photo
В 2014 году наши приложения содержали десятки, а то и сотни активити. Мы не особо боялись писать весь код в одной активити. Использовать асинк таски не считалось чем-то зазорным, а для навигации между экранами с легкостью раскидывали интенты. Джавой полнились наши сердца.
В 2017 количество активити в проекте стало стремительно падать, фрагменты заполняли пустоты в сердцах андроид-разработчиков. Кругом мвп архитектуры со всякими мосби и мокси наперевес. Обмазались эрыкс джавой. Для навигации подсели на чичероне или делали собственные обёртки над фрагмент менеджером. В тот момент казалось, что ты не можешь называться андроид-разработчиком, если не написал собственную библиотеку для навигации.
2020 - расцвет эпохи сингл активити и клина, наши репозитории успешно проксируют дата сорсы, а юзкейсы проксируют репозитории. Флоу фрагменты ловко жонглируют дочерними фрагментами, а на людей с больше, чем одной активити в проекте, начинаем смотреть с недоверием. Наши мввм архитектуры полны лайвдат, и мы их с гордостью слушаем. Джаву постепенно выпиливаем, подсели на приторно сладкий мир в красивой котлин обёртке. С эрыкс джавой тоже как-то не задалось, до сих пор не мог пройти даже половину паззлеров на ютубе, а уже и не надо. Теперь-то мы обмазываемся саспендами и все больше подхейчиваем эрыксоидов, порой прямо в зеркале. С навигацией как-то тоже не задалось - затащили навигейшион компонент, выкинули, затащили навигейшион компонент, выкинули - благо всегда можно вернуться к истокам.
Идёт 2023 год, сингл активити, терминальная стадия, фрагментов не осталось, у нас теперь декларативка, мы теперь композиторы, утонченно выкрашиваем кнопки. Перебрались на эмвиай, научились в юдф, кто-то начал заваривать чай. С лайвдатой дружба закончилась, теперь мы самые близкие друзья с флоу. Все больше наших и сторонних апи стали корутин френдли. Как-то подружились с компоуз дестинейшионс, кто-то обжегся, используя вояджер.
Здесь мы находимся сейчас. Но что будет дальше? Достаточно легко представить еще одну итерацию, в которой KMM/KMP переползает в наши проекты, а архитектурные решения по типу декомпоуз найдут теплый отклик среди андроид-разработчиков. Но есть стойкое ощущение, что базис из корутин, юдф архитектур и декларативных фреймворков с нами всерьез и надолго.
Неужели наконец-таки смогли пройти андроид-разработку?
В 2017 количество активити в проекте стало стремительно падать, фрагменты заполняли пустоты в сердцах андроид-разработчиков. Кругом мвп архитектуры со всякими мосби и мокси наперевес. Обмазались эрыкс джавой. Для навигации подсели на чичероне или делали собственные обёртки над фрагмент менеджером. В тот момент казалось, что ты не можешь называться андроид-разработчиком, если не написал собственную библиотеку для навигации.
2020 - расцвет эпохи сингл активити и клина, наши репозитории успешно проксируют дата сорсы, а юзкейсы проксируют репозитории. Флоу фрагменты ловко жонглируют дочерними фрагментами, а на людей с больше, чем одной активити в проекте, начинаем смотреть с недоверием. Наши мввм архитектуры полны лайвдат, и мы их с гордостью слушаем. Джаву постепенно выпиливаем, подсели на приторно сладкий мир в красивой котлин обёртке. С эрыкс джавой тоже как-то не задалось, до сих пор не мог пройти даже половину паззлеров на ютубе, а уже и не надо. Теперь-то мы обмазываемся саспендами и все больше подхейчиваем эрыксоидов, порой прямо в зеркале. С навигацией как-то тоже не задалось - затащили навигейшион компонент, выкинули, затащили навигейшион компонент, выкинули - благо всегда можно вернуться к истокам.
Идёт 2023 год, сингл активити, терминальная стадия, фрагментов не осталось, у нас теперь декларативка, мы теперь композиторы, утонченно выкрашиваем кнопки. Перебрались на эмвиай, научились в юдф, кто-то начал заваривать чай. С лайвдатой дружба закончилась, теперь мы самые близкие друзья с флоу. Все больше наших и сторонних апи стали корутин френдли. Как-то подружились с компоуз дестинейшионс, кто-то обжегся, используя вояджер.
Здесь мы находимся сейчас. Но что будет дальше? Достаточно легко представить еще одну итерацию, в которой KMM/KMP переползает в наши проекты, а архитектурные решения по типу декомпоуз найдут теплый отклик среди андроид-разработчиков. Но есть стойкое ощущение, что базис из корутин, юдф архитектур и декларативных фреймворков с нами всерьез и надолго.
Неужели наконец-таки смогли пройти андроид-разработку?
🔥20❤6🤔4
Forwarded from Kotlin Multiplatform (Kostya)
👍2🔥2
Forwarded from Android Live 🤖
Repair IDE feature
#androidstudio
Возможно вы, как и я, не замечали фичу, которая не так давно появилась в Android Studio и IntelliJ IDEA — Repair IDE.
Иногда бывают ситуации, что Android Studio начинает бажить: отказывается собирать проект, хотя с кодом всё в порядке, ругается на кэш и т.д. У меня такое частенько бывает при переключении веток в Git.
Решение в лоб — сделать File -> Invalidate Caches с рестартом. Но вот теперь есть опция Repair IDE, которая призвана помочь по шагам восстановить состояние вашей IDE.
Я попробовал, из 4 кейсов сработало только в 2😅 . В конце всё равно предложила сделать Invalidate Caches.
Теперь у вас есть +1 фича в арсенале, вдруг будет полезна. Детальнее можно почитать тут.
#androidstudio
Возможно вы, как и я, не замечали фичу, которая не так давно появилась в Android Studio и IntelliJ IDEA — Repair IDE.
Иногда бывают ситуации, что Android Studio начинает бажить: отказывается собирать проект, хотя с кодом всё в порядке, ругается на кэш и т.д. У меня такое частенько бывает при переключении веток в Git.
Решение в лоб — сделать File -> Invalidate Caches с рестартом. Но вот теперь есть опция Repair IDE, которая призвана помочь по шагам восстановить состояние вашей IDE.
Я попробовал, из 4 кейсов сработало только в 2
Теперь у вас есть +1 фича в арсенале, вдруг будет полезна. Детальнее можно почитать тут.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2🤔1
Forwarded from Android Broadcast (Кирилл Розов)
В официальной документации появилось сравнение приложений на View и после миграции их на Compose. Критерии: размер APK, скорость сборки, скорость работы приложений.
#compose
#compose
👍4🤔3🔥2
Forwarded from Android Guards
Чтобы не копировать каждый раз базу данных с устройства можно воспользоваться утилитой входящей в Android Studio:
#aht
View -> Tool Windows -> App Inspection -> Database Inspector. Он покажет все базы данных с которыми работает приложение и даст возможность в них поковыряться. Единственный нюанс: приложение должно иметь флаг android:debuggable=true, иначе инспектор просто не увидит такое приложение. Установить этот флаг очень просто: разбираем приложение с помощью apktool, добавляем флаг в application и собираем заново.#aht
👍2🔥1😱1
Forwarded from Mobile Developer (Pavel Kachan)
How to use Render Effects in Jetpack Compose for Stunning Visuals [EN]
https://blog.canopas.com/how-to-use-render-effects-in-jetpack-compose-for-stunning-visuals-01287d7f00db
Статья как рендерить крутые штуки с примесью базы
👉 Какие рендер эффекты бывают
👉 Что такое шейдер
👉 Примеры различных эффектов
👉 многое другое
Приятного чтения
https://blog.canopas.com/how-to-use-render-effects-in-jetpack-compose-for-stunning-visuals-01287d7f00db
Статья как рендерить крутые штуки с примесью базы
👉 Какие рендер эффекты бывают
👉 Что такое шейдер
👉 Примеры различных эффектов
👉 многое другое
Приятного чтения
Canopas blogs
How to Use Render Effects in Jetpack Compose for Stunning Visuals
Discover how to leverage render effects in Jetpack Compose to elevate the visual appeal of your Android applications.
👍2🔥2❤1
Forwarded from Mobile Compose (Jetpack Compose Bot)
#Medium #Article #Text
BasicTextField2: A TextField of Dreams (part 1 & 2)
Вечернего чтива вам.
Свежий материал из двух частей от Alejandra Stamato (бывшей Google DevRel из команды Jetpack Compose), посвященный "TextField-у нового поколения" — BasicTextField2.
Данный компонент появился в альфа-версии 1.6.0 foundation библиотеки и доступен в пакете .text2
Зеркало первой части 👉 тут
Зеркало второй части 👉 тут
——————————————
P.S. Ну а завтра уже выходит второй выпуск Compose Pathway 🚀
BasicTextField2: A TextField of Dreams (part 1 & 2)
Вечернего чтива вам.
Свежий материал из двух частей от Alejandra Stamato (бывшей Google DevRel из команды Jetpack Compose), посвященный "TextField-у нового поколения" — BasicTextField2.
Данный компонент появился в альфа-версии 1.6.0 foundation библиотеки и доступен в пакете .text2
Зеркало первой части 👉 тут
Зеркало второй части 👉 тут
——————————————
P.S. Ну а завтра уже выходит второй выпуск Compose Pathway 🚀
Medium
BasicTextField2: A TextField of Dreams [1/2]
This 2 part blog series covers a dive into the past, present and future of text fields in Jetpack Compose. Discover brand new…
👍3🔥1😱1
Forwarded from Мобильное Чтиво
Асинхронный map
Хочу поделиться таким приемчиком, как асинхронный map.
Когда мы делаем map для списка, то у нас трансформация будет происходить последовательно. Если эта трансформация не супер быстрая, то общий маппинг может стать не оптимальным.
Как это можно исправить? Через асинхронный map. Вот такая функция (asyncMap) запускает map каждого элемента асинхронно.
При этом:
- несмотря на то, что трансформации выполняются асинхронно, очередность элементов сохраняется
- трансформации выполняются в дочернем скоупе. Structured Concurrency работает, беспокоится не надо. Это означает, что отмена скоупа/джобы корректно отменят и все трансформации.
На примере выше, если бы мы сделали обычный map, то он завершился бы за 6 секунд (1000 + 3000 + 2000). Если мы сделаем asyncMap, то за 3 секунды.
#coroutines #map
Хочу поделиться таким приемчиком, как асинхронный map.
Когда мы делаем map для списка, то у нас трансформация будет происходить последовательно. Если эта трансформация не супер быстрая, то общий маппинг может стать не оптимальным.
Как это можно исправить? Через асинхронный map. Вот такая функция (asyncMap) запускает map каждого элемента асинхронно.
При этом:
- несмотря на то, что трансформации выполняются асинхронно, очередность элементов сохраняется
- трансформации выполняются в дочернем скоупе. Structured Concurrency работает, беспокоится не надо. Это означает, что отмена скоупа/джобы корректно отменят и все трансформации.
На примере выше, если бы мы сделали обычный map, то он завершился бы за 6 секунд (1000 + 3000 + 2000). Если мы сделаем asyncMap, то за 3 секунды.
#coroutines #map
🤔9👍5❤2
Forwarded from Android Security & Malware
BLE spam but for adult toys
Using Flipper Zero or nRF Connect app, it is possible to send Bluetooth LE advertisement packets (without being paired) to adult toys in vicinity and make them all vibrate. It is also possible to start Denial of Pleasure by continuously broadcasting the stop packet
https://www.whid.ninja/blog/denial-of-pleasure-attacking-unusual-ble-targets-with-a-flipper-zero
Using Flipper Zero or nRF Connect app, it is possible to send Bluetooth LE advertisement packets (without being paired) to adult toys in vicinity and make them all vibrate. It is also possible to start Denial of Pleasure by continuously broadcasting the stop packet
https://www.whid.ninja/blog/denial-of-pleasure-attacking-unusual-ble-targets-with-a-flipper-zero
WHID - We Hack In Disguise
Denial of Pleasure: Attacking Unusual BLE Targets with a Flipper Zero
Become familiar with developing applications for Flipper Zero, which will be capable of activating adult toys all at once or completely inhibit their use for those within your range (i.e. Denial of Pleasure Attack).
😁5👍2🔥2
Forwarded from Kotlin Multiplatform Broadcast (Кирилл Розов)
Рассказали про ближайшее будущее Kotlin Multipaltform в 2024
Compose Multiplatform
🔥 Главный фокус - вывести Compose for iOS в Beta
👉 Сделать все Compose Core API доступными на всех платформах
👉 Интеграция Accessibility API с iOS и Desktop
🔥 Мультиплатформенная навигационная библиотека
👉 Вывод Compose for Web в Альфа
👉 Команда активно изучает возможность Compose for Web для Wasm (Web Assemble)
Инструментарии
👉 Миграция IDE на K2 компилятор
👉 Fleet - это и будет KMP IDE, так чтобы писать и отлаживать весь код в ней
👉 Расширенная поддержка Compose Multiplatform в Fleet (live preview и отладка UI)
Прочее
👉 Экпорт кода из Kotlin в Swift, минуя Objective-C
👉 Ускорение компиляции Kotlin/Native
👉 Улучшение интеграции CocoaPods
👉 Поддержка SwiftPM
👉 Улучшения опыта разработки библиотеки и удобства их распространения
#kotlin #compose #kmp
Compose Multiplatform
🔥 Главный фокус - вывести Compose for iOS в Beta
👉 Сделать все Compose Core API доступными на всех платформах
👉 Интеграция Accessibility API с iOS и Desktop
🔥 Мультиплатформенная навигационная библиотека
👉 Вывод Compose for Web в Альфа
👉 Команда активно изучает возможность Compose for Web для Wasm (Web Assemble)
Инструментарии
👉 Миграция IDE на K2 компилятор
👉 Fleet - это и будет KMP IDE, так чтобы писать и отлаживать весь код в ней
👉 Расширенная поддержка Compose Multiplatform в Fleet (live preview и отладка UI)
Прочее
👉 Экпорт кода из Kotlin в Swift, минуя Objective-C
👉 Ускорение компиляции Kotlin/Native
👉 Улучшение интеграции CocoaPods
👉 Поддержка SwiftPM
👉 Улучшения опыта разработки библиотеки и удобства их распространения
#kotlin #compose #kmp
👍4🔥2🤔1
Forwarded from Android Broadcast (Кирилл Розов)
В официальной документации появилось руководство по тому как находить и исправлять ANR
Что там есть:
👉 Причины появления
👉 Как дебажить
👉 Мистические ANR
Что там есть:
👉 Причины появления
👉 Как дебажить
👉 Мистические ANR
👍2🔥2😱1
Forwarded from Compose Broadcast (Кирилл Розов)
В Jetpack Compose переписывают текстовые поля и его уже можно попробовать в версии 1.6.0 - BasicTextField2
Серия статей от гуглера про причины появления второй версии и какие улучшения она принесет:
👉 Часть 1 (10 мин, EN, ссылка без VPN)
👉 Часть 2 (8 мин, EN, ссылка без VPN)
#compose
Серия статей от гуглера про причины появления второй версии и какие улучшения она принесет:
👉 Часть 1 (10 мин, EN, ссылка без VPN)
👉 Часть 2 (8 мин, EN, ссылка без VPN)
#compose
👍2🔥2🤔1
Forwarded from Compose Broadcast (Кирилл Broadcast)
Capturable - библиотека для создания картинок из Composable функций
👍6🔥1🤔1
Forwarded from Android Live 🤖
Dynamic App Icon
#android
Новый год уже на носу, и настанет пора новогодних иконок в приложениях😄 .
Вот вам краткая статья, которая расскажет, как поменять иконку в приложении на любую нужную вам и обратно без релиза. Можете ещё парочку добавить в приложение и будет новая фичаконечно же по подписке .
Вся фича завязана на
Дока по алиасам тут, а вот и сама статья про добавление дополнительных иконок.
#android
Новый год уже на носу, и настанет пора новогодних иконок в приложениях
Вот вам краткая статья, которая расскажет, как поменять иконку в приложении на любую нужную вам и обратно без релиза. Можете ещё парочку добавить в приложение и будет новая фича
Вся фича завязана на
activity-alias, которые вы настраиваете в AndroidManifest и включаете и отключаете нужный вам. Дока по алиасам тут, а вот и сама статья про добавление дополнительных иконок.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥1🫡1