TGTGInsighttelegram intelligenceLIVE / telegram public index
Retour aux chaînes
Android Broadcast avatar

TGINSIGHT CHAT

Android Broadcast

@android_broadcast

Technologies

Подборка новостей и статей для Android разработчиков. Реклама и связь с автором @ab_manager РКН https://abdev.by/rkn_tg_ab#MQRZR

Abonnés1.4万Abonnés actuels de la chaîne
Posts indexés1,000Nombre de posts indexés
Portée récente95,380Somme des vues récentes
Posts récents

Posts récents

Tag : #android · 490 posts

当前筛选 #android清除筛选

🏝Проблемы с порядком Gradle Task при использовании KSP 2.0.2 Продолжаю разработку проекта FrameIO - Kotlin Multiplatform клиента для сервиса frame.io и стоклнулся с падением сборки из-за порядка задач (ниже стек с примером проблемы): Some problems were found with the configuration of task ':module:kspDebugKotlinAndroid' (type 'KspAATask'). - Gradle detected a problem with the following location: './module'. Reason: Task ':module:kspDebugKotlinAndroid' uses this output of task ':module:javaPreCompileDebug' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed. Possible solutions: 1. Declare task ':module:javaPreCompileDebug' as an input of ':module:kspDebugKotlinAndroid'. 2. Declare an explicit dependency on ':module:javaPreCompileDebug' from ':module:kspDebugKotlinAndroid' using Task#dependsOn. 3. Declare an explicit dependency on ':core:user-session:javaPreCompileDebug' from ':module:kspDebugKotlinAndroid' using Task#mustRunAfter. For more information, please refer to https://docs.gradle.org/8.14.2/userguide/validation_problems.html#implicit_dependency in the Gradle documentation. Стек для сборки: Gradle 8.14.2, Kotlin 2.2.0, KSP 2.2.0-2.0.2, AGP 8.11.0 Решения проблемы пока нету в KSP (одно из issue), поэтому я задаю порядок Gradle Task сам: // build.gradle.kts модуля где подключен ksp afterEvaluate { android.libraryVariants.forEach { variant -> val variantCapitalized = variant.name.capitalized() tasks.named("ksp${variantCapitalized}KotlinAndroid") { dependsOn( "${variant.name}AssetsCopyForAGP", "process${variantCapitalized}Manifest", "write${variantCapitalized}AarMetadata", "javaPreCompile${variantCapitalized}", "merge${variantCapitalized}Assets", "merge${variantCapitalized}JniLibFolders", "merge${variantCapitalized}NativeLibs", "copy${variantCapitalized}JniLibsProjectOnly", "generate${variantCapitalized}EmptyResourceFiles", "copy${variantCapitalized}JniLibsProjectAndLocalJars", "prepare${variantCapitalized}ArtProfile", "write${variantCapitalized}LintModelMetadata", "extractProguardFiles", "prepareLintJarForPublish", ) } } } #android#kmp#koltin#ksp

7,310 views

🤖Strict-режим Android Resource Shrinker — аккуратнее, он без компромиссов В Android можно включить resource shrinking, чтобы убрать из финального APK/Bundlа неиспользуемые ресурсы (строки, drawables, layouts и т.д.) android { buildTypes { release { shrinkResources true minifyEnabled true } } } С недавних пор Google экспериментирует со strict режимом работы шринкера, который делает эту очистку более агрессивной, а именно: 👉 Удаляет все ресурсы, которые не удалось найти в коде или XML. 👉 Не делает допущений, что ресурс “вдруг используется где-то через reflection”. Нету явного использования или keep правила - удаление 👉 Режет всё под корень — даже если вы явно используете getIdentifier() или динамически загружаете ресурсы по имени, он может их не заметить и выкинуть. 📉 Эффект - меньший размер сборки, но есть риск крешей в рантайме, если ресурсы удалены, а были нужны Как включается strict режим: # В gradle.properties android.experimental.enableStrictResourceShrinking=true 🛡 Как сохранить нужные ресурсы от удаления? Если вы точно знаете, что ресурс используется, но shrinker может его не заметить: 1️⃣ProGuard правила (R8 учитывает их для ресурсов тоже): # Правила для R8 -keepresources R.string.some_dynamic_string -keepresources R.drawable.icon_loaded_by_name 2️⃣Файлы в папках res/raw/ и assets/ shrinker не трогает вообще. 3️⃣tools:keep и tools:discard в XML (подробнее тут): <resources xmlns:tools="http://schemas.android.com/tools" tools:keep="@layout/landing,@drawable/logo" tools:discard="@drawable/unused_image" /> Рекомендации: 👉 Не включайте strict-режим без хорошего UI-тест-покрытия. 👉 Проверьте, что не используете динамическое получение ресурсов getIdentifier() без крайней необходимости. 👉 Добавляйте -keepresources, если есть малейшие сомнения. Подробнее про оптимизацию ресурсов читайте в официальной документации #android#r8#оптимизация

5,960 views

📹Как мы случайно ускорили релизную сборку в два раза. Роман Заремба, Юрий Анисимов из Т-Банк, Mobius 2025 Весна Спикеры рассказали о том, как боролись за ускорение релизной сборки в мобильном банке и что из этого в итоге получилось. Разобрали особенности релизной сборки, связанные с подрезкой (shrinking) кода и ресурсов. Посмотрели, как профилировать и анализировать работу R8, а также отдельных Gradle-тасок, участвующих в подготовке релизной версии приложения. Доклад для практикующих Андроид-инженеров с элементами хардкора. 🔗Подробнее о конференции Mobius 🔗 Скачать презентацию #android#mobius#gradle

6,760 views

🐱Droidex - Android библиотека для определения уровня производительности устройства на основе характеристик и состояния: процессора, памяти, размера heap, скорости доступа в сеть, свободного хранилища, заряда батаерии и прочих настроек на устройстве. DroidDex.getPerformanceLevelLd(PerformanceClass.CPU, PerformanceClass.MEMORY) .observe(lifecycleOwner) { level: PerformanceLevel -> when(level) { EXCELLENT -> // Флагманский уровень HIGH -> // Довольно сильное устройство, но не самое мощное AVERAGE -> // Средняя производительность/возможности LOW -> // Бюджетный телефон/низкая производительность UNKNOWN -> // Не смогли понять ничего } } Больше подробностей в статье или вот ссылка #android#производительность

7,240 views

🚀Пример Jetpack Media 3 Transformer API для создания приложения с обрезкой видео (EN,3м) Разработчик решил реализовать простую затею - обрезать видео на основе выбранного отрезка текста из расшифровки дорожки. Использовал Jetpack Media3 и EventLabs API. ПО итогу вышло приложение 🐱QuickTrim 🔗 Альтернативная ссылка тут #android#androidjetpack#media3#opensource#пример

8,050 views

🤯AI ломает R8 и восстаналивает код после защиты Разработчик провёл эксперимент по восстановлению обфусцированного когда с помощью GPT 4o и чуда не произошло. AI смог сделать читаемые имена переменных и функций, сделать форматирование кода. С Compose кодом вообще ничего дельного не вышло. Теперь надо думать и про угрозу AI взломов усложнит жизнь IT. Запрос на восстановление кода Using the R8 algorithm, deobfuscate this class and translate it into its real-world context. 🔗Альтернативная ссылка на статью #android#r8#ai

11,000 views

🏗Функциональное программирование в Android. Знакомство с парадигмой (21м) Первая статья из серии про как построить архитектуру Android приложения в функциональном стиле. Стек: Kotln; Jetpack Compose; одна из UDF-архитектур (Redux, TEA, MVI); ArrowKt; Coroutines + Flow. В начале рассматривают функциональную парадигму и отличия ее от других подходов (императивный и декларативный) #android#архитектура

8,880 views

🤖Почему разработчик не контролирует, как выглядят уведомления в системной панели Когда разработчик использует NotificationCompat.Builder для создания уведомлений из Android приложения, может показаться, что прямого контроля на внешний вид нету 🤯 На самом деле формируется не визуальный компонент, а объект данных, который описывает что есть в уведомление. Этот объект — это просто структура, сериализуемая через Parcelable. Он передаётся в системный процесс через Binder — механизм межпроцессного взаимодействия в Android. А вот принимать и интерпретировать этот объект будет специальное системное приложение — SystemUI. Уведомления отображаются не Android сам по себе, а конкретное приложение, которое называется com.android.systemui. И это приложение полностью отвечает за то, как будет выглядеть уведомление. Оно решает, какие поля отобразить, где их разместить, какой стиль применить, как будет выглядеть кнопка, будут ли видны иконки — и многое другое. Часть из данных может игнорироваться. Вот почему одно и то же уведомление может выглядеть совершенно по-разному на разных устройствах и версиях ОС. Один и тот же вызов setContentTitle("Новость") может дать совершенно разный результат на Pixel с чистым Android и на Xiaomi с MIUI. Более того, даже RemoteViews, которые позволяют задавать кастомные layout’ы для уведомлений, могут игнорироваться или ограничиваться прошивками производителей. Именно по этой причине я не люблю когда в уведомления вставляют Custom View, который выбивается из стиля и часто портит визуал системы и поведение. Мечтаю чтобы его поскорее запретили в Android. Пожалуйста, хотя бы в Android 17 🙏 Запомните ‼️ Уведомление в Android — это не UI объект, это контракт между приложением и SystemUI, который интерпретируется, а не исполняется дословно. Поэтому пишите уведомления так, чтобы они были понятны системе, а красоту UI вы можете контролировать только внутри вашего приложения. #android#androiddev

7,560 views

‼️ Новое видео на 🪙 Boosty - Полный разбор Android Context (20 мин) В новом видео погружаюсь в особенности того как работает Context, а именно: 👉 какие типы Context бывают 👉 почему Application класс != Application Context 👉 как Android ОС создает экземпляр Context и передает его в компоненты приложения 👉 советы по работе с Context ‼️Всё это позволит вам лучше понимать работу с Contex, лучше организовать код и ответить на собеседования глубже, чтобы дать ответ уровня Senior! Подписку на видео можно также оформить через Telegram #AndroidBroadcast#android

8,830 views

🚀Новая Jetpack библиотека - Test Uiautomator Shell Показали первую альфа версию Jetpack Test Uiautomator Shell - решения для выполнения команд в терминале. Фактически это backport UiAutomation.executeShellCommandRwe из API 34 (Android 14). #android#androiddev#тестирование#автотесты

7,960 views

🚀Вышло обновление Android Jetpack библиотек В этот раз вас жду багфиксы: Room 2.7.2 и WorkManager 2.10.2, а также первая RC версия Benchmark Version 1.4.0 #android#androiddev#jetpack#jetpackupdate

8,560 views

🤖В Android 16 появится поддержка десктопного режима на внешних дисплеях В Android 16 QRP1 появилась поддержка десктопного режима при подключении внешних дисплеях. Включается режим плавающих окон, а значит приложения смогут иметь произвольный размер, управление перейдет в мышку и клавиатуру (а смысл иначе от внешнего дисплея?) Совсем уже не новинка в мире Android, но какому количеству людей это будет необходимо? Делитесь своим мнением в комментариях #android#android16#desktop

7,270 views
12•••10•••1920212223•••30•••4041