TGViewer
Channel Public Channel
Андроидѣ | Михаил Белый

Андроидѣ | Михаил Белый

@foundout

Авторская песочница о карьере в IT в роли Mobile Dev (Android, Kotlin, Multiplatform, AI) и разных вещах, которые мне интересны.

Автор: @michaelbel

Материалы: android-career.com

Забустить: t.me/boost/foundout

Задонатить: boosty.to/michaelbel
Subscribers
328
Photos
308
Videos
36
Links
143

Showing posts older than #297 · Back to latest

Older Posts 16 shown
Post #296 1K
Как в последнее время работает оплата подписки ChatGPT Plus.

Плачу за нее $20/мес. Каждый раз новой предоплаченной иностранной картой. Аккаунт один.

13 июня в очередной раз оплатил. Через месяц, 14 июля, начала отображаться плашка: «не смогли списать средства, проверьте реквизиты». Закрыл ее, нажав на крестик. Доступ к подписке остался.

Понимаю – лояльность, конкуренция и все такое, но доступ к Plus у меня пропал только 4 августа. Через 3 недели после первого неудачного списания. 5 августа продлился с новой карты. 4 сентября очередной платеж не прошел и опять появилась плашка. Закрыл ее и продолжил пользоваться до 28 сентября.

Если я правильно понял систему, сегодня я оплачиваю ChatGPT Plus и буду пользоваться месяц + еще 21 день бесплатно. До 20 ноября.

Спасибо, дядя Сэм!



upd из будущего:
отменилась 25 ноября
Post #295 869
Сидишь, ничего не подозреваешь. А потом вжух – узнаешь, что задолжал. Вынь да положь 18k кровно заработанных.

Оказывается, есть такой налог на доход, полученный со вкладов в банках. И до 1 декабря надо занести за 2024 год, если накосил больше 210k. С суммы превышения снимут 13%. Средняя ставка по всем вкладам таким образом снизилась на 0.84 п.п.

Все цифры плавающие, что сумма, что процент. В следующем году будут новые. Ни пуша, ни смс, ни емейла, ни бумажки в ящик, к слову, не прилетело. Самому надо в личном кабинете проверять.
Post #294 760
🐗 Обновление эмодзипака

Добавлено 72 новых эмодзи.

🐗 Compose Multiplatform

🐗 Google Calendar

🐗 Google Maps

🐗 Google Password Manager

🐗 Google Translate

🐗 Google Apps Script

🐗 GBoard

🐗 Google Play Books

🐗 Google Nano Banana

🐗 Google Sites

🐗 Google Vids

🐗 Google AppSheet

🐗 Google Tasks

🐗 Google Voice

🐗 Google Contacts

🐗 Google Recorder

🐗 Apple FaceTime

🐗 Apple Messages

🐗 Apple Journal

🐗 Яндекс Go

🐗 Яндекс Еда

🐗 Яндекс Маркет

🐗 Яндекс Карты

🐗 Яндекс Нейро

🐗 Яндекс Плюс

🐗 Яндекс AppMetrica

🐗 Elastic

🐗 Elastic Search

🐗 Elastic Stack

🐗 Elastic Observability

🐗 Elastic Logstash

🐗 Elastic Kibana

🐗 Elastic Cloud

🐗 Elastic APM

🐗 Elastic Beats

🐗 Alpine Linux

🐗 SUSE Linux

🐗 Linux Mint

🐗 Arch Linux

🐗 Gentoo Linux

🐗 Red Hat Enterprise Linux

🐗 Parrot OS

🐗 GrapheneOS

🐗 CentOS

🐗 Leonardo AI

🐗 Based Labs AI

🐗 Rotten Tomatoes

🐗 Metacritic

🐗 OpenCritic

🐗 Booking

🐗 Aviasales

🐗 Rode

🐗 Циан

🐗 ЮMoney

🐗 Юла

🐗 Netlify

🐗 Flask

🐗 Render

🐗 Yappy

🐗 Waze

🐗 Kiloo

🐗 Rovio

🐗 Zulip

🐗 Mattermost

🐗 Bitwarden

🐗 OpenSearch

🐗 Yelp

🐗 Zabbix

🐗 Ред Софт

🐗 TIOBE Index

🐗 Revolut

🐗 Box

Обновлено 9 эмодзи

🐗 ➡️ 🐗 Django

🐗 ➡️ 🐗 Apache

🐗 ➡️ 🐗 CrowdStrike

🐗 ➡️ 🐗 CoffeeScript

🐗 ➡️ 🐗 Cry Engine

🐗 ➡️ 🐗 RevenueCat

🐗 ➡️ 🐗 Logitech

🐗 ➡️ 🐗 Autodesk

🐗 ➡️ 🐗 Zendesk

Все паки: первый • второй • третий • четвертый • пятый • шестой

Сайт и миниапп с названиями, поиском и фильтрами

#emoji@foundout
Post #293 511
Оцифровал все свои записанные собесы. Теперь их в любое время можно посмотреть по подписке Жалкий детский уровень на бусти. С описанием, таймкодами и ссылками на задачи.

Всего 28 записей: 3 техскрининга, 22 техсобеса, 7 вторых этапов и 4 встречи с руководителями/CTO/Product Owner. Теория, лайвкодинги, систем дизайн и софты. Разрешили нейросети + скрытное использование нейросетей. Компании: 🐗 Альфа Банк, 🐗 МТС Линк, 🐗 Uzum Technologies, 🐗 Т-Банк, 🐗 Авито, 🐗 Озон, 🐗 Купибилет, 🐗 МВидео-Эльдорадо, 🐗 Flowwow, 🐗 Банк ДОМ РФ, 🐗 Яндекс, 🐗 Movavi, 🐗 Иннотех, 🐗 Банк-131, 🐗 Сбер, 🐗 VK и 🐗 Rutube.

Осень, руки чешутся пообстукиваться и пощупать рыночек. Много слухов, что найм сдох и не сравнится с 2022-2024 годами. Каждый год труднее предыдущего. Денежная инфляция приводит к джобхоппингу, а инфляция опыта к тому, что залетать надо сразу на синьора. И еще вайбкодить просят в прямом эфире. Буду это изучать.
Post #292 474
🐗 Год без Notion

Год назад ноушен покинул нас и перестал работать в России. Импульсивный алармизм в телеграм каналах начался еще за 2 недели до его ожидаемого ухода: как же быть, куда бежать.

Откуда ни возьмись повылезали десятки альтернатив и потенциальных убийц. Я потыкал штук 20. Почти все утонули у берега. Выделяется только обсидиан. Но у него другая философия. Возможно, что я дед, закрытый ко всему новому, но ноушен продолжаю пользовать, как и раньше. Если водить – то мерседес.

Это не доставляет особых неудобств, потому что я несколько лет назад переехал на ПМЖ в Виртуальные Приватные Нидерланды. А в Россию возвращаюсь, чтобы зайти на госуслуги или оплатить покупку на маркете.

Я использую браузерную версию ноушена, приложения для мака, айфона и андроида. Помимо роадмапа у меня там отслеживание тренировок, рецепты, планы поездок, сценарии, черновики и другая интерактивная информация.

Все прочие недоступные сервисы, когда открываешь их без впн, просто показывают заглушку, что не из той страны постучался. Ноушен делает больше – сразу разлогинивает на всех устройствах. Приходится заново входить. Пару раз наплодил так лишних рабочих пространств. Ну и спелл чекер включается, приходится отключать.

Самое главное и удивительное – веб-страницы работают прекрасно и без впн.
Post #291 445
Как работать с Plurals-ресурсами в Android

Plurals – это строковый ресурс, который подставляет правильную словоформу в тексте с числом. Набор форм зависит от языка: где-то хватает «one» и «other», а в сложных локалях есть «few», «many», иногда «zero» и «two». Система сама решает, какую форму подставить: «1 день», «2 дня», «5 дней». Благодаря этому интерфейс звучит естественно на любом языке, без ручной склейки строк и поломки грамматики.

Выбор используемой строки осуществляется на основе грамматической необходимости. Правила могут быть сложными для определенного языка и количества. Поэтому Android предоставляет методы для выбора подходящего ресурса.

Ни на одном проекте я не видел правильного применения plurals. Чаще всего разработчики обманываются буквальной трактовкой форм: zero не означает только число 0, а two не подходит только для числа 2. Если не опираться на plurals, получить верную фразу будет невозможно. Поэтому я решил исследовать эту тему в новом видео.

🐗 Смотреть на Ютубе

🐗 Смотреть на Бусти

🐗 Исходники на Гитхабе

🐗 Документация в Роадмапе

#video@foundout
Post #289 505
Post #287 543
🐗 Обновление эмодзипака

Добавлено 64 новых эмодзи:

🐗 Google AI Studio

🐗 Google NotebookLM

🐗 Google web dev

🐗 Google Chat

🐗 Google Photos

🐗 Google TV

🐗 Google Cast

🐗 Яндекс Облако

🐗 Яндекс 360

🐗 Яндекс Интернетометр

🐗 Яндекс Книги

🐗 Кинопоиск

🐗 Amazon Prime Video

🐗 VK Mail

🐗 MAX

🐗 Notion Calendar

🐗 Notion Mail

🐗 Linux KaiOS

🐗 Linux NixOS

🐗 Oracle VirtualBox

🐗 Meta AI

🐗 Samsung Internet

🐗 М.Видео

🐗 Банк 131

🐗 Ренессанс Банк

🐗 ЛитРес

🐗 Банк ДОМ РФ

🐗 МТС Линк

🐗 CDEK

🐗 Иннотех

🐗 Альфа-Банк

🐗 Озон

🐗 Купибилет

🐗 Газмпромбанк

🐗 CloudTips

🐗 Авито

🐗 Flowwow

🐗 ВТБ

🐗 ПСБ

🐗 Роскомнадзор

🐗 Минцифры

🐗 Dodo Brands

🐗 Movavi

🐗 Tea App

🐗 Shadowsocks

🐗 Corning

🐗 Element

🐗 ElevenLabs

🐗 Perplexity Comet

🐗 Suno

🐗 Boston Dynamics

🐗 Uzum Technologies

🐗 Codeberg

🐗 eBay

🐗 Disney+

🐗 CD Projekt

🐗 Similarweb

🐗 Linear

🐗 XDA

🐗 Tauri

🐗 Ramp

🐗 Hulu

🐗 HackerOne

🐗 Keras

Все паки: первый • второй • третий • четвертый • пятый • шестой

Сайт и миниапп с названиями, поиском и фильтрами

#emoji@foundout
Post #286 559
Как менять иконку запуска Android-приложения

Пользователям приложения можно предоставить возможность выбирать иконку лаунчера. Это делается для кастомизации, сезонных акций или платного функционала закрытого пейволом.

Реализовать можно через Activity Alias – единственный универсальный механизм подмены иконки. Они должны быть заранее импортированы в проект. Адаптивные векторы с атрибутом <monochrome> будут перекрашиваться в цвета обоев, независимо от выбранного иконки.

Aliases (псевдонимы, точки входа) прописываются в манифесте и ссылаются на существующую активити. Они могут иметь собственный интент-фильтр MAIN+LAUNCHER, иконки и другие параметры. Операционная система найдет псевдоним при парсинге манифеста и добавит ярлык в лаунчер. Чтобы в лаунчере отображалась только одна иконка – один алиас включаем (android:enabled="true"), остальные отключаем.

Управление алиасами осуществляется через PackageManager. Получить текущее состояние алиаса можно вызвав getComponentEnabledSetting. А установить – через setComponentEnabledSetting. Когда мы выбираем иконку, фактически один псевдоним включается, а остальные отключаются. Если иконка еще не выбиралась – отобразится дефолтная из манифеста. После выбора процесс приложения будет убит. Иконка обновится сразу. Есть лаунчеры, которые ее кэшируют и процесс займет до 500 мс.

Если по каким-либо причинам все алиасы отключаются (сброс настроек приложения, переустановка из стороннего маркета, ошибочное обновление) нужна безопасная инициализация, иначе пользователь потеряет ярлык в списке приложений. Для этого в Application.onCreate() нужно пройтись по всем алиасам и если ни один из них не включен – активировать дефолтный.

Я записал воркшоп, как это делается на практике:

🐗 Смотреть на Ютубе

🐗 Смотреть на Бусти

🐗 Исходники на Гитхабе

🐗 Документация в Роадмапе

#video@foundout
Post #285 462
Подпись для Debug APK

При обновлении APK тестировщики могут столкнуться с ошибкой «конфликтует с другим пакетом». Придется удалять предыдущую версию приложения, чтобы установить новую. Данные в кэше и сохраненные настройки потеряются.

Если не настроить signingConfig, сборка будет автоподписываться локальным ключом из домашней директории пользователя. Он хранится на устройстве, но легко теряется при сносе кэша или смене пользователя. На облачных раннерах домашняя директория и файл также могут не сохраняться между запусками. При каждой сборке будет генерироваться новый ключ. APK не будет обновляться поверх установленного.

Для debug-сборок нужно создавать файл подписи, как для релиза. В Android Studio Build → Generate Signed App Bundle or APK. После заполнения данных выбрать Debug. Операционная система сравнит APK по отпечатку подписи и разрешит обновление.
  • ❤ 1
Post #284 454
Post #283 409
Post #282 352
🐗 Решения 49 задач с CodeRun

В роадмап добавлено еще 49 решений задач с CodeRun. Теперь их там 342.

• График работ
• Кристаллы
• У кого больше королев?
• Шары и корзины
• Интервалы
• Супер мега марафон
• НОД
• Вложенные циклы
• Комбо
• Командная олимпиада
• Среднее в окне
• Создать цикл
• Мега пицца
• Восстановление отчётов
• Жизнь в красках
• Сила искусства
• Хокку на английском
• Фруктовая радуга
• Оставаясь на связи
• Числа в ряд
• Чёрное и белое
• Игра с заменами
• Как курица лапой
• Дерево бонсай
• Классы подобия треугольников
• Шпионы!
• Доска с монетами
• Нужно больше конфет!
• Маленький Саша и круги
• Бутерброды
• Обыкновенная задача про строки
• Число
• Ограничитель частоты
• Клетчатая доска
• Лабораторная работа
• Оптимальный плейлист
• Надежный счетчик
• Бесконечная сумма
• Крош и минимальный путь
• Крош, Ёжик и квадратичная игра
• Новогоднее поздравление
• Ча-ча-ча
• Игра из чулана
• Пицца для вечеринок
• Снежки
• В город на ярмарку
• Открытка с уравнением
• Мандарины и апельсины
• Наряжаем ёлку

#coderun@foundout
Post #277 373
Накатил новейший Android 16 на древний Сяоми

И он даже не окирпичился.

Пиксель и прочие благородные устройства могут получать до 7 лет обновлений Android. Остальные, в том числе мой Xiaomi Redmi Note 8T 2019 года, довольствуются меньшим.

Сяоми поставлялся с Android 9 на борту. Потом обновился до Android 10. Потом до Android 11. На этом все. Больше никаких официальных релизов не прилетало.

Когда вышел Andorid 12 я решил взять ситуацию в свои руки. Взломал загрузчик и накатил Android 12. А через год и Android 13. Потом смартфон слегка припух и я его отложил. Но сегодня решил, что хоть он и помирает, с трудом включается и заряжается, стресс-тест в виде установки Android 16 потянет.

Чтобы накатывать новые образы требуется разблокировать загрузчик. Это делается через Mi Account и специальную программу с сайта Xiaomi. Ожидание разблокировки зависит от политики производителя, конкретной модели и региона. Это делается для сдерживания массовой перепрошивки и борьбы с серым импортом. Я ждал 30 дней. Таймер начинает отсчет после первой попытки разблокировки в Mi Unlock. Xiaomi хранит таймер на своих серверах, поэтому обойти его невозможно. Через месяц, при включении устройства появилась иконка открытого замка. Загрузчик взломан.

С устройства убираем блокировку экрана, коды и отпечатки.

В настройках разработчика включаем отладку по USB.

Подключаем смартфон к ПК по проводу.

Скачиваем platform-tools для работы с adb.

Выключаем устройство. Включаем и на 5 секунд зажимаем Power + Volume Down. Попадаем в меню fastboot. На Xiaomi fastboot-режим выглядит как картинка с кроликом, который чинит андроид. В нём нет меню – это просто режим, в котором телефон ждёт команды с ПК по USB.

На ПК в терминале переходим в папку platform-tools и вызываем ./fastboot devices. Если все ок – видим наше устройство в списке подключенных.

Устанавливаем на устройство кастомный recovery. Подойдут TWRP или OrangeFox. Оба хороши, мне больше нравится последний. Скачиваем recovery.img и перемещаем его в папку platform-tools.

Теперь прошиваем кастомный рекавери, чтобы уже из него ставить Andorid 16. Вызываем ./fastboot flash recovery recovery.img. После установки перезагружаемся и при включении зажимаем уже Power + Volume Up.

В рекавери будет UI-интерфейс. В обязательном порядке нужно сделать очистку данных (Wipe Data). А если переходишь с MIUI или другой сильно отличающейся прошивки – дополнительно Format Data (отдельная вкладка в Wipe, надо ввести yes). Это удалит все из внутренеей памяти и уберет шифрование, из-за которого часто бывает bootloop (бесконечная перезагрузка). После форматирования возвращаемся в главное меню и перезагружаем recovery (Reboot → Recovery), чтобы перемонтировать память.

Теперь скачиваем образ Android 16. Я взял первый попавшийся отсюда. Есть в интернете люди, которым не лень их монтировать. Весит 2GB. Перемещаем его в platform-tools и командой ./adb push android16.zip /sdcard/ отправляем в память устройства. В рекавери переходим в каталог sdcard, выбираем архив и свайпаем для установки.

Образ устанавливается. Смартфон перезагружается. Можно пользоваться.

Все это занимает ~полчаса, просим чатгпт вести по шагам.

Забавно, что ОС думает, что мое устройство это пиксель. Я терпеть не могу прошивки MIUI от сяоми и OneUI от самсунга. Только голый андроид. Только чистый Pixel Experience. Ничего лишнего.

Через год накатим Android 17.
Post #276 321
Мой топ за свои деньги сяоми расперло от андроид разработки.

Долгие сессии отладки по кабелю плохо сказываются на батарее смартфона. Экран не гаснет, заряд почти всё время у верхней границы. Для литий-ионных аккумуляторов это худшая комбинация. Высокий уровень заряда вместе с повышенной температурой ускоряет деградацию. Батарея вздувается и поднимает крышку.

Предотвратить такое можно беспроводной отладкой, прохладным рабочим местом, снятым чехлом и отсутствием мягких поверхностей. Чем меньше времени устройство проводит на 100% и в тепле, тем дольше прослужит батарея.

Помогают и системные ограничения заряда. В настройках включить всякие там лимиты, protect battery и adaptive charging. Чтобы зарядка останавливалась на 80%.

Даже не знаю, что теперь делать с этим толстячком. Пиксель и самсунги так со мной не поступали. Надеюсь, он не спалит мне квартиру.
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →