TGINSIGHT CHAT
Android Broadcast
@android_broadcast
TechnologiesПодборка новостей и статей для Android разработчиков. Реклама и связь с автором @ab_manager РКН https://abdev.by/rkn_tg_ab#MQRZR
Posts récents
Tag : #android · 490 posts
Publié 31 janv.
Все мы уже привыкли выкладывать сборки в Google Play через AAB, которые передаст на устройство только необходимое для устройства нативные библиотеки. Некоторым приходится раздавать сборку в APK формате. Банальный кейс - отдавать сборку на проверку QA. Универсальное APK - содержит ресурсы и библиотеки под все возможные устройства, даже те которые не нужны на устройстве пользователя. Обычно нативные библиотеки делают наибольший вклад в конечный размер приложения на устройстве пользователя. Отказ от ненужных позволит снизить размер и скорость доставки до устройства пользователя. Android Gradle плагин позволяет указать какие ABI нужно добавлять в сборку. Сложность в том, что для финальной сборки обычно надо добавить ABI arm64-v8a и armeabi-v7a, а вот для Intel эмуляторов нужны x86 и x86-64. Чтобы делать это эффективно, я делал механизм передачи значений ABI через переменные при сборке. Это позволяет задавать локально и на CI разные значения, а локальные задавать через файл local.properties или переменную окружения // Код в Gradle KTS скрипте fun resolveAbiFilters(): List<String> { val abisString = project.findProperty("abiFilter") as String? // Параметр командной строки ?: readFromLocalProperties("abi.filter") // Значение из local.properties ?: System.getenv("ABI_FILTER") // Переменная окружения return abisString?.split(",") ?: emptyList() } fun readFromLocalProperties(key: String): String? { val localPropertiesFile = rootProject.file("local.properties") if (!localPropertiesFile.exists()) return null val localProperties = Properties().apply { localPropertiesFile.inputStream().use(::load) } return localProperties.getProperty(key) } // В Android application модуле указываем android { defaultConfig { ndk { abiFilters = resolveAbiFilters() } } } Пример задания через параметр ./gradlew assembleRelease -PabiFilter=arm64-v8a,armeabi-v7a Если вы запускаете приложения из Android Studio на устройстве/эмуляторе, то IDE понимает какую ABI из поддерживаемых стоит включить в APK, чтобы приложение смогло работать. Все остальные исключается. Сборка компактнее - меньше время на передачу и установку тестового билда. #android#gradle#ndk
Publié 31 janv.
Как команда Контура объединила CI/CD для мобильных платформ(5м) Команда мобильной разработки Контура столкнулась с проблемой разного CI/CD для Android и iOS. Разные пайплайны, gitflow, подходы к секретам и использование сабмодулей создавали сложности в сопровождении и развитии инфраструктуры. Как было: 👉 Разные процессы CI для Android и iOS 👉 Submodules, не подтягивающие обновления 👉 Дублирование кода 👉 Сложности с мультиплатформенным подходом Как стало: 👉 Перевели CI на единый шаблон 👉 Отказались от сабмодулей 👉 Унифицировали работу с секретами 👉 Перешли на модульную структуру fastlane Теперь CI/CD работает как сервис: разработчики могут быстро подключать обновления и собирать пайплайны под новые платформы. Даже после ухода ключевых инженеров система продолжает стабильно работать. UPD1: Этот процесс был выполнен давно и в Контур уже отказались от Fastlane. #fastlane#android#ios#ci#автоматизация
Publié 30 janv.
🚀 Вышел Room 2.7.0-alpha13 Библиотека мигрирует на Kotlin 2.0+ и весь проект должен будет тоже использовать её. Хотите KMP - точно надо будет мигрировать на Kotlin 2.0 Это последний альфа релиз и дальше будет Beta и уже совсем скоро релиз. #android#kmp#jetpack#jetpackupdate#sqlite
Publié 28 janv.
На сайте Android Developers появилась документация с рекомендациями по разработке приложений и циферблатов для детей на WearOS #android#wearos
Publié 27 janv.
Руководство(EN,6м) от команды CameraX по созданию эффекта как на видео, когда весь ваш UI на Compose. Используется определение лиц в кадре и наложение масок 🔗Ссылка без VPN #android#jetpack#camerax#камера#compose
Publié 25 janv.
📹Android Developers Backstage 212 - С Днём Рождения, Android Studio! Состав из одних ветеранов команды Android разработки и Чета Хасса обсуждают всю историю Android Studio от идеи её появления до современности! Подключение библиотек через исходники, сборка приложений на машине разработчика и множество других ограничений, которые большинство подписчиков этого канала даже и не знали 😁 а на они все были. Когда разработчики жалуются на современные инструменты, то я вспоминаю хаотичный статус инструментов в 2012, когда я начинал. #android#adb#androidstudio
Hashtags
Publié 25 janv.
🔨Сегодня исполнилось 10 лет с выхода Android Studio 1.0🤯 Я помню как пробовал ранние сборки Android Studio, мучался с переходом на IDEA платформу после Eclipse, знакомился с системой сборки после хаоса ADT плагина. Ставьте ❤️ если пользовались Android Studio с первой версии и делитесь вашими воспоминаниями от первой версии #android#androidstudio
Hashtags
Publié 24 janv.
🤖В Android 16 для всех приложений по умолчанию включат Predictive Back Gesture Все приложения с targetSdk Android 16 и выше должны поддерживать Predictive Back Gesture (PBG) т.к. его включат по умолчанию. Если вы этого не хотите - можно просто отключить для вашего приложения. При включенном PBG в приложение не будет срабатывать callback Activity.onBackPressed() и отправляться события KeyEvent.KEYCODE_BACK. Для отключения надо добавить в AndroidManifest <application android:enableOnBackInvokedCallback="false" > <!-- Отключение на уровне activity--> <activity android:enableOnBackInvokedCallback="false" /> </application> #android#android16
Hashtags
Publié 24 janv.
🤖В Android 16 изменяется поведение ordered broadcast (с заданным приоритетом) Доставка Broadcast Intent на основе приоритетов между процессами больше не гарантируется. Это значит, что приоритеты будут работать только в рамках приложения и его процесса. Приоритеты SYSTEM_LOW_PRIORITY и SYSTEM_HIGH_PRIORITY смогут задавать только системные приложения, а для всех остальных приоритет автоматически будет понижаться/повышаться. #android#android16
Hashtags
Publié 24 janv.
🤖Некоторые приложения не будут запускатьcя на Android 16 без перекомпиляции из-за обновления ART В Android 16 изменится внутренняя реализация виртуальной машины ART, что направлено на увеличение производительности и поддержки дополнительных фичей Java. Это изменения приведет к тому что код библиотек и приложений, который полагается на внутреннюю структуру ART может некорректно работать на Android 12+ и выше. Проверьте ваше приложение на Android 16, чтобы убедиться в корректности его работы. Обновление ART будет доставлено на все устройства с Android 12 и выше, а также установленными Google Play Services. #android#android16#art
Hashtags
Publié 24 janv.
🤖В Android 16 добавили поддержку кодека Advanced Professional Video (APV) для записи видео профессионального уровня и пост-продакшена. Ключевые особенности APV: 👉 Качество видео близко к raw-формату. 👉 Высокая скорость кодирования внутри кадра, удобная для редактирования. 👉 Поддержка битрейтов до нескольких Гбит/с для 2K, 4K, 8K. 👉 Фрейм-тайлинг для иммерсивного контента и параллельного кодирования. 👉 Разные форматы цветовой субдискретизации и битовой глубины. 👉 Многократное перекодирование без значительной потери качества. 👉 HDR10/10+, пользовательские метаданные, многокамерное видео. 👉 Работа с альфа-каналами, глубиной и превью. Кодек APV реализован на основе OpenAPV, поддерживает профиль APV 422-10 с YUV 422, 10-битным кодированием и битрейтом до 2 Гбит/с. Это прорыв для профессиональной видеосъёмки на Android! #android#android16#медиа#видеосъёмка
Publié 24 janv.
🔨В Android Studio добавили генерацию превью Composable функций на основе Gemini Сгенерированные превью будут заполнены данными, не всегда идеально, но как минимум уже будет вам полезно. #android#androidstudio#compose#gemini