Обзор уязвимостей Positive Hack Days
#security
Отдельное место у меня занимают статьи, которые рассказывают о лучших практиках безопасности Android-приложений: ведь даже если приложение будет с идеальным UI-UX, но будет иметь дыры в безопасности, то вся работа может свестись на нет. 🥴
Вот вам отличный список-обзор уязвимостей с недавнего Positive Hack Days: рекомендую сделать овервью своего приложения, вдруг найдёте что-то подобное.
Тут и
#security
Отдельное место у меня занимают статьи, которые рассказывают о лучших практиках безопасности Android-приложений: ведь даже если приложение будет с идеальным UI-UX, но будет иметь дыры в безопасности, то вся работа может свестись на нет. 🥴
Вот вам отличный список-обзор уязвимостей с недавнего Positive Hack Days: рекомендую сделать овервью своего приложения, вдруг найдёте что-то подобное.
Тут и
exported=true
для WebViewActivity
, и проблемы в дебаг-панели, и вход без PIN-кода в приложение через виджет... в общем, есть на что обратить внимание. 👌🔥17❤1👍1
Давайте устроим пятничный холивар в комментах:
Если бы вы сейчас писали приложение с нуля, то какой бы стек выбрали и почему?
- без ограничений по библиотекам и технологиям;
- можно выбрать или нативную, или кроссплатформенную разработку;
- если это нативная разработка, то под iOS будет отдельная команда; 😌
Если бы вы сейчас писали приложение с нуля, то какой бы стек выбрали и почему?
- без ограничений по библиотекам и технологиям;
- можно выбрать или нативную, или кроссплатформенную разработку;
- если это нативная разработка, то под iOS будет отдельная команда; 😌
😁7👍3
values() или entries()
#kotlin
В Kotlin 1.9.0 из стадии Experimental в Stable перешла property entries(), которую можно вызывать для любых Enum и получить список всех элементов, которые в нём объявлены.
Зачем же нужна ещё одна функция, когда есть values()?
На самом деле, причин сразу несколько:
1️⃣ При каждом вызове функции создаётся новый Array: это одна из известных причин "скрытых" performance-багов.
2️⃣ При работе вызывается
3️⃣ Ну и ещё — сложнее писать extension-функции для
Ну а в
Чуть больше информации можно найти тут. Теперь вы знаете, что ответить на собеседовании, и почему стоит перейти на entries().🤓
#kotlin
В Kotlin 1.9.0 из стадии Experimental в Stable перешла property entries(), которую можно вызывать для любых Enum и получить список всех элементов, которые в нём объявлены.
Зачем же нужна ещё одна функция, когда есть values()?
На самом деле, причин сразу несколько:
Array<E>
, который мутабелен, а также меньше подходит для работы с коллекциями, чем список. Array<E>
вместо стандартных List<T>
.Ну а в
entries()
таких недостатков нет, а самое главное, что при вызове всегда используется один и тот же список и нет повторного создания.Чуть больше информации можно найти тут. Теперь вы знаете, что ответить на собеседовании, и почему стоит перейти на entries().
Please open Telegram to view this post
VIEW IN TELEGRAM
❤31👍12🔥5
Gradle 8.x
#gradle
Кстати, забыл поделиться опытом по обновлению Gradle в своём основном проекте. Возможно, он будет для вас полезен.
Главной задержкой для обновления у меня было отсутствие поддержки свежей версии Gradle в Huawei-плагине. Никакой информации о том, что делать я не нашёл, но позже написал в поддержу Huawei и они создали целый раздел, где кратко описали, как обойти ограничение. Был приятно удивлён качеством поддержки.👌
После этого, особых проблем при обновлении не было:
👉 обязательно посмотрите список изменений: довольно много флагов изменяют своё состояние, например
👉 если вы не перешли на
👉 собирая проект, обратите внимание на ворнинги, которые необходимо разрешить: у меня это был целый ряд новых правил в proguard.
В целом, на этом всё. Теперь записал в тех.долг перейти на ksp и на нетранзитивные классы ресурсов, но об этом уже в следующий раз.🤘
#gradle
Кстати, забыл поделиться опытом по обновлению Gradle в своём основном проекте. Возможно, он будет для вас полезен.
Главной задержкой для обновления у меня было отсутствие поддержки свежей версии Gradle в Huawei-плагине. Никакой информации о том, что делать я не нашёл, но позже написал в поддержу Huawei и они создали целый раздел, где кратко описали, как обойти ограничение. Был приятно удивлён качеством поддержки.
После этого, особых проблем при обновлении не было:
👉 обязательно посмотрите список изменений: довольно много флагов изменяют своё состояние, например
nonFinalResIds
, nonTransitiveRClass
. Если вы будете использовать встроенный "мигратор" из Android Studio, то он проставит все флаги за вас (ну или почти все).👉 если вы не перешли на
enableR8.fullMode
, то обязательно выключите его в properties, иначе после сборки проекта можете увидеть целый ряд непонятных крашей.👉 собирая проект, обратите внимание на ворнинги, которые необходимо разрешить: у меня это был целый ряд новых правил в proguard.
В целом, на этом всё. Теперь записал в тех.долг перейти на ksp и на нетранзитивные классы ресурсов, но об этом уже в следующий раз.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥2
Как у вас устроена документация?
#вопрос
А поделитесь своими знаниями о ведении документации:
👉 есть ли она у вас в проекте?
👉 какими сервисами пользуетесь для ведения и почему?
👉 как устроен процесс добавления знаний в документацию, и кто за это отвечает?
👉 полезные доклады или статьи, которые могут сильно помочь в ведении документации.
Сейчас пытаюсь выстроить процесс создания документации: остановился на Obsidian как инструменте для сохранения знаний.
Notion кажется слишком неудобным для большого количества информации, ну и плюс — нет поддержки Markdown, если захочется перейти в другой сервис. Но, возможно, у вас есть больше аргументов в его пользу.
Буду ряд любой информации по топику, в будущем обязательно поделюсь с вами наработками.🤓
#вопрос
А поделитесь своими знаниями о ведении документации:
👉 есть ли она у вас в проекте?
👉 какими сервисами пользуетесь для ведения и почему?
👉 как устроен процесс добавления знаний в документацию, и кто за это отвечает?
👉 полезные доклады или статьи, которые могут сильно помочь в ведении документации.
Сейчас пытаюсь выстроить процесс создания документации: остановился на Obsidian как инструменте для сохранения знаний.
Notion кажется слишком неудобным для большого количества информации, ну и плюс — нет поддержки Markdown, если захочется перейти в другой сервис. Но, возможно, у вас есть больше аргументов в его пользу.
Буду ряд любой информации по топику, в будущем обязательно поделюсь с вами наработками.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14
Оптимизации Compose
#compose
Классная статья, в которой рассказывается о полезных оптимизациях для Compose.
Вполне возможно, что эти рекомендации помогут и вашему UI работать быстрее.
Тут и про оптимизацию пропусков в Composable-функциях, и про то, что делать при долгих вычислениях при рекомпозиции, а также куча ссылок о том, как писать свои Compose-layouts. Ну и для каждого кейса есть свой пример с кодом. 👌
Ссылка на статью тут.
#compose
Классная статья, в которой рассказывается о полезных оптимизациях для Compose.
Вполне возможно, что эти рекомендации помогут и вашему UI работать быстрее.
Тут и про оптимизацию пропусков в Composable-функциях, и про то, что делать при долгих вычислениях при рекомпозиции, а также куча ссылок о том, как писать свои Compose-layouts. Ну и для каждого кейса есть свой пример с кодом. 👌
Ссылка на статью тут.
🔥15👍6
Android Studio Templates
#android
Полезная статья, где описаны базовые шаблоны для работы в Android Studio, а ещё — есть целый набор кастомных, но полезных шаблонов. Сам я редко использую эту фичу, хотя думаю стоит не забывать ей пользоваться, ведь это экономит время на бойлерплейт.
Например:
👉
👉
👉
Авто предлагает создать ещё целый ряд шаблонов: HiltViewModel, MutableStateFlow и StateFlow, Binds в Hilt... в общем, всё это здорово сэкономит наше свами время.
#android
Полезная статья, где описаны базовые шаблоны для работы в Android Studio, а ещё — есть целый набор кастомных, но полезных шаблонов. Сам я редко использую эту фичу, хотя думаю стоит не забывать ей пользоваться, ведь это экономит время на бойлерплейт.
Например:
👉
void
, fun0
, fun1
, fun2
— создаёт функцию с необходимым нам набором параметров;👉
ifn
/ inn
— то же самое, что и if ( … == null) / if ( … != null);👉
comp
— создаёт Compose-функцию;Авто предлагает создать ещё целый ряд шаблонов: HiltViewModel, MutableStateFlow и StateFlow, Binds в Hilt... в общем, всё это здорово сэкономит наше свами время.
👍20❤3
Утечки памяти в 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