Утечки памяти в Android
#android
Довольно распространённой ошибкой при написании Android-приложений является
Сейчас есть несколько методов, которые помогают в распознавании утечек в Android, тот же LeakCanary. Но для полного понимания необходимо знать, а как возникают утечки и на что стоит обратить внимание, чтобы не допустить их появления?
В этом вам поможет эта замечательная статья. Автор рассказывает про то, как:
👉 работает Garbage Collector, и какие знания нужны нам, чтобы не допускать утечек;
👉 что такое многопоточные утечки памяти, и снова как их не допустить);
👉 про файловые дескрипторы, и какие утечки они могут вызвать.
Ждём вторую часть, где будет больше информации о практических инструментах, которые помогут бороться с утечками.🤓
#android
Довольно распространённой ошибкой при написании Android-приложений является
OutOfMemoryError. Уверен, что любой (ну или почти любой) разработчик сталкивался с этой ошибкой. Одной из причин возникновения этой проблемы являются утечки памяти.Сейчас есть несколько методов, которые помогают в распознавании утечек в Android, тот же LeakCanary. Но для полного понимания необходимо знать, а как возникают утечки и на что стоит обратить внимание, чтобы не допустить их появления?
В этом вам поможет эта замечательная статья. Автор рассказывает про то, как:
👉 работает Garbage Collector, и какие знания нужны нам, чтобы не допускать утечек;
👉 что такое многопоточные утечки памяти, и снова как их не допустить);
👉 про файловые дескрипторы, и какие утечки они могут вызвать.
Ждём вторую часть, где будет больше информации о практических инструментах, которые помогут бороться с утечками.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23
Пишем свой Main Loop в Android
#android
При написании любого приложения необходимо взаимодействовать с главным потоком. К счастью, нам не нужно писать свой Loop для каждого приложения, мы работаем с уже готовым компонентом.
Но вот вам годная статья, где автор, чтобы лучше понять принцип работы главного цикла в Android пишет свой аналог: при этом получается детальная статья, где описывается то, как работает непосредственно главный поток.
Всячески рекомендую, чтобы, наконец, разобраться с этой темой и не оплошать на собеседовании.🤞
#android
При написании любого приложения необходимо взаимодействовать с главным потоком. К счастью, нам не нужно писать свой Loop для каждого приложения, мы работаем с уже готовым компонентом.
Но вот вам годная статья, где автор, чтобы лучше понять принцип работы главного цикла в Android пишет свой аналог: при этом получается детальная статья, где описывается то, как работает непосредственно главный поток.
Всячески рекомендую, чтобы, наконец, разобраться с этой темой и не оплошать на собеседовании.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19❤5🔥2👏1🤩1
Android 14 Beta 5
#android
Вчера вышла 5 beta версия свеженького Android. Beta означает, что API уже стабилизированы и можно смело проверять работу приложения.💪️️️️️️ Есть несколько вещей на которые стоит обратить внимание:
👉 если в приложении есть доступ к фото и видео, то проверьте, обрабатываете ли вы
👉 если вы вдруг использовали
👉 есть изменения в non-dismissable notifications: теперь пользователь может их смахнуть, исключения составляют только кнопки Clear all и заблокированный смартфон.
👉 есть изменения в разрешении
👉 приложения теперь могут убивать только собственные background-процессы.
👉 теперь из системы поддерживается нелинейное скалирование текста до 200%. Думаю, что ничего не должно измениться, если вы использовали sp, но на всякий случай стоит пересмотреть layouts.
Теперь ждём финальной сборочки Android 14, она совсем рядом.🙃
#android
Вчера вышла 5 beta версия свеженького Android. Beta означает, что API уже стабилизированы и можно смело проверять работу приложения.
👉 если в приложении есть доступ к фото и видео, то проверьте, обрабатываете ли вы
READ_MEDIA_VISUAL_USER_SELECTED: теперь пользователь может давать частичное разрешение к своим фото и видео. Ну или используйте PhotoPicker, хорошая штука.👉 если вы вдруг использовали
Notification.Builder.setFullScreenIntent, то теперь не сможете, так как Google уберёт это разрешение для всех приложений, кроме звонков и будильников. Это тип оповещения, который используется для очень важных сообщений, и на практике не встречал приложений, которые этим злоупотребляют.👉 есть изменения в non-dismissable notifications: теперь пользователь может их смахнуть, исключения составляют только кнопки Clear all и заблокированный смартфон.
👉 есть изменения в разрешении
SCHEDULE_EXACT_ALARM, которое теперь не предоставляется по умолчанию. Будет полезно изучить best practices, если вы используете exact alarms.👉 приложения теперь могут убивать только собственные background-процессы.
👉 теперь из системы поддерживается нелинейное скалирование текста до 200%. Думаю, что ничего не должно измениться, если вы использовали sp, но на всякий случай стоит пересмотреть layouts.
Теперь ждём финальной сборочки Android 14, она совсем рядом.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤2
Улучшение времени запуска приложения
#android
Очень важно время от времени "разгребать" технический долг в своём проекте и делать технические улучшения, которые приведут к более качественной работе приложения.
Если у вас кончились идеи для технических спринтов (вдруг такое произошло) или вы не задумывались о времени запуска приложения — то вот вам несколько ссылок о том, как сделать запуск вашего приложения быстрее.
Начать стоит с того, чтобы посмотреть на инструменты, которые позволят проанализировать текущую ситуацию. Одним из них является Macrobenchmark, который даёт весьма полезные данные о том, как работает приложение. Ещё можно использовать Perfetto для визуализации результатов и встроить бенчмарк в процесс CI.
Ну и для мотивации — две статьи с опытом применения целого ряда инструментов, чтобы улучшить время запуска.
Тут ребята из Dodo описывают процесс повышения скорости запуска одного из своих приложений на 20%, а тут похожий опыт компании Mercado Libre (довольно крупный стартап Латинской Америки).
#android
Очень важно время от времени "разгребать" технический долг в своём проекте и делать технические улучшения, которые приведут к более качественной работе приложения.
Если у вас кончились идеи для технических спринтов (вдруг такое произошло) или вы не задумывались о времени запуска приложения — то вот вам несколько ссылок о том, как сделать запуск вашего приложения быстрее.
Начать стоит с того, чтобы посмотреть на инструменты, которые позволят проанализировать текущую ситуацию. Одним из них является Macrobenchmark, который даёт весьма полезные данные о том, как работает приложение. Ещё можно использовать Perfetto для визуализации результатов и встроить бенчмарк в процесс CI.
Ну и для мотивации — две статьи с опытом применения целого ряда инструментов, чтобы улучшить время запуска.
Тут ребята из Dodo описывают процесс повышения скорости запуска одного из своих приложений на 20%, а тут похожий опыт компании Mercado Libre (довольно крупный стартап Латинской Америки).
🔥12😁3❤1
Хендбук с алгоритмами
#algorithms
Тут на глаза попался отличный учебник от Яндекса по основам алгоритмов.
Если вы плаваете в этой теме — рекомендую пройти с самого начала. Беглый обзор показал, что объясняется весьма понятно, даже если вы совсем ничего не понимаете или пропускали этот предмет в вузе.
За основу взят этот ресурс, ну и плюс добавлена масса практических заданий и примеров. Сохраняйте в закладки, а лучше начинайте изучать сразу, чтобы проходить специфические собеседования без запинок.🙃
#algorithms
Тут на глаза попался отличный учебник от Яндекса по основам алгоритмов.
Если вы плаваете в этой теме — рекомендую пройти с самого начала. Беглый обзор показал, что объясняется весьма понятно, даже если вы совсем ничего не понимаете или пропускали этот предмет в вузе.
За основу взят этот ресурс, ну и плюс добавлена масса практических заданий и примеров. Сохраняйте в закладки, а лучше начинайте изучать сразу, чтобы проходить специфические собеседования без запинок.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥27💩9
Android-шрифты
#android
Кажется, что
Если у вас есть дизайнеры, которые работают с Figma, то вы могли заметить, что высота строк там и в Android — отличается. Из-за чего одни и те же строки могут выглядеть совершенно по-разному и pixel-perfect дизайна не получится. 🥲
Один из вариантов решения проблемы — использование параметра
На помощь спешат
Также всем разработчикам рекомендую почитать краткий обзор, о том что вообще есть в Android шрифтах и какими свойствами мы можем управлять.
Для того, чтобы сделать идеальные начертания в Compose вот вам статья, где описываются необходимые для этого настройки, а тут детальнее то, что описал я.
Ну желаю и всем нам идеальных интерфейсов в проект.🥳
#android
Кажется, что
TextView — один из самых простых инструментов, с которым никогда не бывает проблем. Но вот даже после нескольких завершённых проектов — можно откопать для себя пару неожиданных штук.Если у вас есть дизайнеры, которые работают с Figma, то вы могли заметить, что высота строк там и в Android — отличается. Из-за чего одни и те же строки могут выглядеть совершенно по-разному и pixel-perfect дизайна не получится. 🥲
Один из вариантов решения проблемы — использование параметра
lineHeight, который с префиксом app работает на всех версиях Android. И вроде это аналогичное поведение, как и в Figma, но высота строки не меняется, если у вас одна строка текста. На помощь спешат
firstBaselineToTopHeight и lastBaselineToBottomHeight о которых я раньше и не слышал: они добавляю расстояние до базовой линии сверху и снизу. А это как раз то, что поможет нам сделать идеальные начертания шрифтов. Также всем разработчикам рекомендую почитать краткий обзор, о том что вообще есть в Android шрифтах и какими свойствами мы можем управлять.
Для того, чтобы сделать идеальные начертания в Compose вот вам статья, где описываются необходимые для этого настройки, а тут детальнее то, что описал я.
Ну желаю и всем нам идеальных интерфейсов в проект.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤24👍10😱1👌1
Jetpack Glance для виджетов
#compose
Наверняка среди читателей есть разработчики, которые делали виджеты: там присутствует целый ряд ограничений, из-за чего нельзя использовать все варианты
Но с приходом
Либа уже в статусе релиз-кандидата, так что самое время задуматься о том, чтобы создавать новые виджеты на ней. Можно начать с этих двух статей.
#compose
Наверняка среди читателей есть разработчики, которые делали виджеты: там присутствует целый ряд ограничений, из-за чего нельзя использовать все варианты
View. Да и в целом, создавать виджеты было не очень приятно. Но с приходом
Compose ситуация может измениться, ведь появился Jetpack Glance — фреймворк, который позволяет создавать виджеты, используя Compose: а это значит, что стало меньше ограничений, больше возможностей для дебага, да и вообще создавать их приятнее. Либа уже в статусе релиз-кандидата, так что самое время задуматься о том, чтобы создавать новые виджеты на ней. Можно начать с этих двух статей.
👍6🔥2👌1
Личный блог
На этом канале я редко делюсь своими личными соц.сетями, да и не так чтобы много рассказываю о себе. Причина одна — считаю этот канал местом, где есть Android-разработка и просто разработка, а личная жизнь тут будет лишней.
Но если вдруг вам интересно, чем я живу помимо Android Live — меня можно найти в Telegram и Instagram*.
Сейчас в Telegram скидываю красивые виды из Чили и делюсь своими впечатлениями об этой стране😋
Так что, буду рад обратной связи и там 👋
*соцсеть, признанная в России экстремистской 🤦
На этом канале я редко делюсь своими личными соц.сетями, да и не так чтобы много рассказываю о себе. Причина одна — считаю этот канал местом, где есть Android-разработка и просто разработка, а личная жизнь тут будет лишней.
Но если вдруг вам интересно, чем я живу помимо Android Live — меня можно найти в Telegram и Instagram*.
Сейчас в Telegram скидываю красивые виды из Чили и делюсь своими впечатлениями об этой стране
Так что, буду рад обратной связи и там 👋
*соцсеть, признанная в России экстремистской 🤦
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Gorshkov Blog
✈️🚀 Живу и создаю там, где Wi-Fi и красивые виды.
Пишу под Android, изучаю мир, делюсь своими мыслями и вдохновением.
📍 Россия, Брянск
Автор: @al_gorshkov
Пишу под Android, изучаю мир, делюсь своими мыслями и вдохновением.
📍 Россия, Брянск
Автор: @al_gorshkov
❤8🐳3👍1💩1
KSP в Android — изменения скорости
#android #dagger
На той неделе мы получили анонс Hilt + Dagger на KSP, а теперь можем посмотреть, насколько меняется скорость сборки проекта при полном переходе на него.
Автор статьи полностью перевёл небольшой проект на KSP, потом сделал пару замеров: очистку билда и инкрементальную сборку. У него получился незначительный прирост, но мне кажется, что тут важно учитывать следующие факторы:
- KSP пока в alpha для Dagger;
- сам проект для тестов небольшой, и на большем количестве модулей и кода прирост будет ощутимее;
- сама технология ещё свежая, и необходимо время для того, чтобы всё заработало в полную силу.
#android #dagger
На той неделе мы получили анонс Hilt + Dagger на KSP, а теперь можем посмотреть, насколько меняется скорость сборки проекта при полном переходе на него.
Автор статьи полностью перевёл небольшой проект на KSP, потом сделал пару замеров: очистку билда и инкрементальную сборку. У него получился незначительный прирост, но мне кажется, что тут важно учитывать следующие факторы:
- KSP пока в alpha для Dagger;
- сам проект для тестов небольшой, и на большем количестве модулей и кода прирост будет ощутимее;
- сама технология ещё свежая, и необходимо время для того, чтобы всё заработало в полную силу.
👍9🤔2
ResConfigs для языков
#android #optimization
Расскажу вам лишний раз о бесплатном способе, чтобы уменьшить размер вашего apk-файла. Многие о нём знают, но я часто встречал проекты, где этой настройки не было.
Дело в том, что некоторые библиотеки содержат в себе переводы на большое количество языков: то есть одна строка может быть в 50-60 интерпретациях, каждая из которых добавляет вес вашему приложению.
Чтобы посмотреть, а как у вас дела, откройте
Чтобы убрать все эти языки — используйте свойство
Вариант со звёздочкой: можете сделать подобную настройку только для релизных билдов при помощи:
Только не забудьте при добавлении языка прописать их и тут😅
#android #optimization
Расскажу вам лишний раз о бесплатном способе, чтобы уменьшить размер вашего apk-файла. Многие о нём знают, но я часто встречал проекты, где этой настройки не было.
Дело в том, что некоторые библиотеки содержат в себе переводы на большое количество языков: то есть одна строка может быть в 50-60 интерпретациях, каждая из которых добавляет вес вашему приложению.
Чтобы посмотреть, а как у вас дела, откройте
Build -> Analyze APK, откройте release сборку приложения и выберите resources.arsc. В самом низу списка будет файл strings, где наглядно в виде таблички прописаны все строковые ресурсы для каждого языка. Чтобы убрать все эти языки — используйте свойство
resConfigs в defaultConfig, где через запятую перечислите коды языков, используемые вашим приложением. Соберите релизную сборку и вы удивитесь, как много места может сжирать набор строк. Вариант со звёздочкой: можете сделать подобную настройку только для релизных билдов при помощи:
applicationVariants.all { variant -> if (variant.buildType.name == "release") {variant.mergedFlavor.resourceConfigurations.addAll( "en", "de", "es" ) }Только не забудьте при добавлении языка прописать их и тут
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25🔥6
SDK Upgrade Assistant
#android
Оказывается, пару месяцев назад появилась утилита, которая помогает быстро обновить targetSdkVersion в проекте.
Правда, нет свежего 34 SDK (но вручную уже можно обновиться), уверен, что со временем и он там появится.
Для использования надо выбрать Tools > Android SDK Upgrade Assistant, и Google советует обновлять по 1 уровню за раз.
Больше деталей можно почитать тут.
#android
Оказывается, пару месяцев назад появилась утилита, которая помогает быстро обновить targetSdkVersion в проекте.
Правда, нет свежего 34 SDK (но вручную уже можно обновиться), уверен, что со временем и он там появится.
Для использования надо выбрать Tools > Android SDK Upgrade Assistant, и Google советует обновлять по 1 уровню за раз.
Больше деталей можно почитать тут.
🔥5👌2👍1
Android Studio for Platform
#androidstudio
На днях Google анонсировали Android Studio for Platform (ASfP) — версию IDE на основе AOSP при использовании Soong.
Поддерживается C++, Java и Kotlin, работает на Linux. Выглядит как важный шаг в разработке платформ, буду рад, если поделитесь своим опытом в этой теме.
#androidstudio
На днях Google анонсировали Android Studio for Platform (ASfP) — версию IDE на основе AOSP при использовании Soong.
Поддерживается C++, Java и Kotlin, работает на Linux. Выглядит как важный шаг в разработке платформ, буду рад, если поделитесь своим опытом в этой теме.
🔥7✍1
Memory leaks в проде
#android #debug
С утечками памяти при разработке нам помогают бороться некоторые из известных инструментов, таких как Android Studio Memory Profiler, LeakCanary, Perfetto.
Но довольно сложно поймать эти проблемы, когда приложение уже в проде. Но варианты есть, и тут инженер из Lyft делится, как они раскатывают новые фичи и оценивают их с точки зрения памяти.
Не факт, что ваша команда такая же большая, как в Lyft, однако вы сможете узнать, как вообще можно определить утечки памяти, на какие показатели при этом опираются, да и в целом, пару полезных штук точно можно взять на заметку.
#android #debug
С утечками памяти при разработке нам помогают бороться некоторые из известных инструментов, таких как Android Studio Memory Profiler, LeakCanary, Perfetto.
Но довольно сложно поймать эти проблемы, когда приложение уже в проде. Но варианты есть, и тут инженер из Lyft делится, как они раскатывают новые фичи и оценивают их с точки зрения памяти.
Не факт, что ваша команда такая же большая, как в Lyft, однако вы сможете узнать, как вообще можно определить утечки памяти, на какие показатели при этом опираются, да и в целом, пару полезных штук точно можно взять на заметку.
👍4❤1😈1😎1
Paging для Multiplatform
#paging #libraries
Тут androidx.paging обновился до версии 3.3 (пока что в alpha) и корневым изменением стала поддержка Kotlin Multiplatform🥳 . Сейчас есть поддержка jvm, Android и iOS, так что для своего pet-проекта можете тянуть.
Любопытно, что свежая версия paging сделана при содействии автора этой библиотеки.
Больше деталей о свежей версии можно почитать тут.
#paging #libraries
Тут androidx.paging обновился до версии 3.3 (пока что в alpha) и корневым изменением стала поддержка Kotlin Multiplatform
Любопытно, что свежая версия paging сделана при содействии автора этой библиотеки.
Больше деталей о свежей версии можно почитать тут.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👌1
Интересно, что Telegram выкатил поддержку Stories для каналов: не уверен, что буду этим пользоваться (а если и буду, то явно не злоупотреблять этим), но, возможно, эти голоса будут использоваться для каких-то других плюшек от Telegram позже.
Так что если у вас Premium-подписка (а проголосовать за поддержку Stories конкретным каналом могут только бояре 🤴), то буду рад вашему голосу.
Если не открывается — обновите Telegram до последней версии.
Так что если у вас Premium-подписка (а проголосовать за поддержку Stories конкретным каналом могут только бояре 🤴), то буду рад вашему голосу.
Если не открывается — обновите Telegram до последней версии.
Telegram
Android Live 🤖
Проголосуйте за канал, чтобы он получил больше возможностей.
👎7👌5👍2❤1🖕1
Continuous Integration basics
#ci
В выходной заметил, что Google выкатил (или начал выкатывать) официальный гайд по CI.
Пока полезной информации не очень много, но, думаю, что это хороший знак и говорит о том, что вскоре нас ждут какие-то улучшения процесса от Google в этом вопросе.
CI — важная и интересная штука, которая освобождает ваше время и время ваших коллег, так что крайне рекомендую автоматизировать базовые вещи: загрузку apk в Firebase для тестов, загрузку строк для переводов, запуск тестов и т.д.
Расскажите, какой CI у вас в проекте? И вообще интересна эта тема?
#ci
В выходной заметил, что Google выкатил (или начал выкатывать) официальный гайд по CI.
Пока полезной информации не очень много, но, думаю, что это хороший знак и говорит о том, что вскоре нас ждут какие-то улучшения процесса от Google в этом вопросе.
CI — важная и интересная штука, которая освобождает ваше время и время ваших коллег, так что крайне рекомендую автоматизировать базовые вещи: загрузку apk в Firebase для тестов, загрузку строк для переводов, запуск тестов и т.д.
Расскажите, какой CI у вас в проекте? И вообще интересна эта тема?
👍13🔥2❤1
Koin 3.5.0
#koin #updates
Пару недель назад появилось обновление Koin — 3.5.0.
Изменений достаточно много, предлагаю пройтись по самым топовым:
- koin-bom — удобный инструмент, который позволяет обновлять весь список зависимостей Koin за 1 раз и не переживать о том, что обновлённые версии библиотек конфликтуют между собой. Удобно, и bom поддерживается для ряда других библиотек, например Firebase и его зависимостей;
- обновили Kotlin до 1.9.0, а также ряд других зависимостей: JUnit5 и Coroutines;
- K2 compiler experiment;
- добавили Сontext isolation для Ktor, да и ещё сразу несколько изменений, связанных непосредственно с Ktor.
Кроме того, есть прям целый ряд менее значительных изменений и пачка bug-фиксов. Почитать обо всех можно тут.🤓
#koin #updates
Пару недель назад появилось обновление Koin — 3.5.0.
Изменений достаточно много, предлагаю пройтись по самым топовым:
- koin-bom — удобный инструмент, который позволяет обновлять весь список зависимостей Koin за 1 раз и не переживать о том, что обновлённые версии библиотек конфликтуют между собой. Удобно, и bom поддерживается для ряда других библиотек, например Firebase и его зависимостей;
- обновили Kotlin до 1.9.0, а также ряд других зависимостей: JUnit5 и Coroutines;
- K2 compiler experiment;
- добавили Сontext isolation для Ktor, да и ещё сразу несколько изменений, связанных непосредственно с Ktor.
Кроме того, есть прям целый ряд менее значительных изменений и пачка bug-фиксов. Почитать обо всех можно тут.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤3💩1
WorkManger StopReason
#android
В одном из последних обновлений WorkManager была добавлена фича под названием StopReason.
Штука крайне полезная, если есть необходимость в дебаге фоновых задач, да и вообще анализе того, что происходит, если задача завершилась с ошибкой.
В чуть более поздней версии добавилась целая куча «причин»: тут и учёт Doze Mode, и App Buckets, и отмена пользователем… В общем, детальнее можно о каждой из причин почитать тут.
Есть один нюанс: фича работает на Android с SDK 31+😇 . Но это уже довольно большой набор устройств, так что продуктивного вам дебага WorkerManager.
#android
В одном из последних обновлений WorkManager была добавлена фича под названием StopReason.
Штука крайне полезная, если есть необходимость в дебаге фоновых задач, да и вообще анализе того, что происходит, если задача завершилась с ошибкой.
В чуть более поздней версии добавилась целая куча «причин»: тут и учёт Doze Mode, и App Buckets, и отмена пользователем… В общем, детальнее можно о каждой из причин почитать тут.
Есть один нюанс: фича работает на Android с SDK 31+
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🤝4
Бродкасты в Runtime и Android 14
#android
Если вы вдруг решили поставить targetSDK до Android 14 (sdk 34), то обязательно перечитайте список изменений, на которые нужно обратить внимание.
Одним из неявных, но при этом вызывающих краш, изменений являются runtime-registered бродкасты.
Если раньше вы регистрировали их при помощи:
то теперь необходимо регистрировать их так:
Можно передать
Рекомендую поискать в своём проекте строку😇 .
#android
Если вы вдруг решили поставить targetSDK до Android 14 (sdk 34), то обязательно перечитайте список изменений, на которые нужно обратить внимание.
Одним из неявных, но при этом вызывающих краш, изменений являются runtime-registered бродкасты.
Если раньше вы регистрировали их при помощи:
registerReceiver(receiver, IntentFilter())то теперь необходимо регистрировать их так:
ContextCompat.registerReceiver(context, receiver, IntentFilter(), ContextCompat.RECEIVER_NOT_EXPORTED)Можно передать
RECEIVER_EXPORTED при необходимости.Рекомендую поискать в своём проекте строку
registerReceiver, потому что проект корректно собирается, никаких ошибок не появляется, но на свежем Android получите краш Please open Telegram to view this post
VIEW IN TELEGRAM
❤13😨9🤝6👍3🔥1
Android 14 🎉
#android
Итак, новая версия Android уже в production и скоро появится на Pixel, а чуть позже в этом году и на других производителях смартфонов. Жду на своём Galaxy.🤞
Анонс и список изменений можете почитать тут, а ещё если у вас Android Studio Hedgehog и выше, то можете использовать SDK update assistance, который должен сделать всю рутину за вас.
#android
Итак, новая версия Android уже в production и скоро появится на Pixel, а чуть позже в этом году и на других производителях смартфонов. Жду на своём Galaxy.
Анонс и список изменений можете почитать тут, а ещё если у вас Android Studio Hedgehog и выше, то можете использовать SDK update assistance, который должен сделать всю рутину за вас.
Please open Telegram to view this post
VIEW IN TELEGRAM
🥰10🔥4🎉3