Если ты, мой маленький любитель писать под Android, периодически натыкаешься на своём ламповом StackOverflow на куски кода с волшебными словами Handler и Looper, тащишь их в проект, и всё начинает работать, а сам ты в душе не представляешь почему, то, извиняй, но ты кретин. Однако, от кретина до человека один шаг (не обязательно из окна), и я тебе в этом помогу (не с окном). Вот прямо сейчас возьми и прочитай эту статью. Тут чувак в деталях описывает, как устроены кишочки Handler в Android. А когда дочитаешь - иди в сорцы и попробуй разобраться сам, будь так любезен. Пис 👇🏻
https://medium.com/@jagsaund/android-handler-internals-b5d49eba6977
https://medium.com/@jagsaund/android-handler-internals-b5d49eba6977
Medium
Android Handler Internals
For an Android application to be responsive, you need to prevent the UI thread from blocking. Responsiveness also increases when blocking…
Помнишь дискретную математику? А помнишь машину Тьюринга? Я помню.
Так вот, эта статья совсем не про Android, но меня чем-то зацепил автор и те вопросы, которые он ставит. Если коротко, то речь пойдёт о том, чего не может МТ и почему. Учите мат. часть короче. Пис 🖕🏻
https://habrahabr.ru/post/317996/
Так вот, эта статья совсем не про Android, но меня чем-то зацепил автор и те вопросы, которые он ставит. Если коротко, то речь пойдёт о том, чего не может МТ и почему. Учите мат. часть короче. Пис 🖕🏻
https://habrahabr.ru/post/317996/
Хабр
Невычислимые функции на примере Busy Beaver Game
Компьютеры проникли в большинство сфер жизни человека и продолжают развиваться. Автопилот, банковская сфера, машинный перевод, медицина, финансовые рынки, полет...
"Дружище! Я не хочу сказать, что твоё приложение работает медленно, но пока висел сплэш-скрин, я успел три раза сделать Clean Build." - примерно такое ощущение у меня остаётся после половины проходящих через мои руки приложений. И вот чтобы такого не было, посмотрите запись выступления Кости Заикина, где он во всех деталях разбирает некоторые инструменты профайлинга, которые нам даёт Android Studio и Android SDK. Коллеги, профайлите, блядь, пожалуйста. И как обычно, пис 🤘🏻
https://youtu.be/DqHa4WUJatc
https://youtu.be/DqHa4WUJatc
YouTube
005. Как работа с тикетом «Тормозит скролл в RecyclerView» растянулась на три недели — Костя Заикин
Я расскажу, как мы искали узкое место скролла голыми руками. Покажу, как пользоваться HierarchyViewer, Tracer for Open GL ES, Systrace, Android Studio CPU Monitor, Memory Monitor и другими классными инструментами. Чем плох overdraw, почему 9-patch это круто…
Вы заметили, что realm стал публиковать очень много статей и выступлений с транскриптами? Так вот, сейчас наткнулся на доклад из разряда тех, что я просто на дух не переношу. Для опытных разработчиков в нём нет ни полезных знаний, ни новых идей - всё до смешного примитивно. А у того, кто только начал прогружаться в наш промысел, выступление оставит больше WTF, чем знаний. Ну например, если говоришь ты, что одна ViewGroup медленнее другой, так объясни почему, мразь. Хоть немного расскажи, как вьюшки отрисовываются. Но нет. Лось там плавал. И вот так вот везде. Ради чего вообще делают такие доклады? Короче, пожелаю автору вытащить голову из задницы. Вам пожелаю не делать так и не тратить своё время на схожий булшит. А запись выступления с транскриптом можно найти по ссылке. Пис 👊🏻
https://realm.io/news/gotocph-daniel-lew-efficient-android-layouts/
https://realm.io/news/gotocph-daniel-lew-efficient-android-layouts/
Довольно старый, но один из лучших докладов по безопасности в Android, как я считаю. Артём Кулаков рассказал о том, как всё на самом деле плохо, и чем можно хотя бы частично защитить своё приложение. Крайне рекомендую. Пис 👏🏻
https://youtu.be/YErE9d4ZHGY
https://youtu.be/YErE9d4ZHGY
Продолжаем тему безопасности. Автор показывает, как можно положить некоторый API-ключик в NDK. Проделано всё довольно просто и достать ключ по-прежнему несложно, но всё-таки это лучше, чем зашивать его в static final. В общем, если вы ещё не разбирались с NDK, будет полезно посмотреть. Ах да, отсылка к докладу из предыдущего поста: всё ещё можно подключиться к аппке дебаггером и вытащить собранный ключ из Java-части. В общем, берегите своего внутреннего параноика. Пис 🤘🏻
https://androidsecurity.info/2016/12/15/storing-your-secure-information-in-the-ndk/
https://androidsecurity.info/2016/12/15/storing-your-secure-information-in-the-ndk/
Мало кто любит Android Plugin DSL. Отсутствие автокомплита и внятных доков иногда заставляют грустить. Однако, какие-никакие доки всё-таки есть, и на том, блядь, спасибо. http://google.github.io/android-gradle-dsl/current/index.html
Но речь не о доках. Вот вам статья про выделение зависимостей всех модулей в отдельный dependencies.gradle. Несмотря на то, что подход попахивает переусложнением и лишает Android Studio возможности проверять обновления библиотек (о чём автор честно пишет), мне понравилось. Интересный подход. Помнится, где-то я видел gradle-плагин, который делал похожие вещи. В общем, не переусложняйте без необходимости, и, как обычно, пис 👌🏻
https://hackernoon.com/android-how-to-add-gradle-dependencies-using-foreach-c4cbcc070458#.xmx5tx2py
Но речь не о доках. Вот вам статья про выделение зависимостей всех модулей в отдельный dependencies.gradle. Несмотря на то, что подход попахивает переусложнением и лишает Android Studio возможности проверять обновления библиотек (о чём автор честно пишет), мне понравилось. Интересный подход. Помнится, где-то я видел gradle-плагин, который делал похожие вещи. В общем, не переусложняйте без необходимости, и, как обычно, пис 👌🏻
https://hackernoon.com/android-how-to-add-gradle-dependencies-using-foreach-c4cbcc070458#.xmx5tx2py
Hackernoon
Android — How to add Gradle dependencies using ‘foreach’ | HackerNoon
A big project in Android with several modules also has several Gradle files that need to be configured, and that´s a tedious task. Something that is usually done is adding dependencies to each module, in this post it will be explained how to control all modules…
А вот вам небольшой подгон. Я иногда ловил себя на том, что гуглю треклятую диаграмму lifecycle очередного компонента Android или ещё какой-нибудь кусок дерьма. Ну, бывает. У всех иногда что-то вылетает из головы. В какой-то момент я стал сохранять полезные диаграммы и шпаргалки, чтобы всегда были под рукой. А позднее мы в компании просто решили выложить эту папочку в Google Drive. Собственно, на здоровье. Пис 👊🏻
https://drive.google.com/drive/folders/0B8043N7nHWABNEJicEJiNmdjclE?usp=sharing
https://drive.google.com/drive/folders/0B8043N7nHWABNEJicEJiNmdjclE?usp=sharing
И последнее на сегодня. Каждый, кто так или иначе погружался в Android, открывал для себе вездесущий Context. С одной стороны, многие компоненты им являются, с другой - все они дают разные возможности. Причём обойтись без него нельзя в самых разных задачах. Так вот, если вы не знаете, откуда уши Context растут - обязательно прочитайте эту статью про Context Object Pattern. Лишние знания не навредят, гарантирую. Учите матчасть. Пис 🖕🏻
Целый цикл статей не про Android. Максим Хижинский - автор крестовой libcds библиотеки - пишет о lock-free структурах данных. Да-да, привет, multithreading. Если упростить, то lock-free структура данных - это такая хреновина, которой можно манипулировать из многих потоков, и самому при этом не думать о lock/unlock и прочей нечисти. В конце каждой статьи можно найти ссылки на все остальные части цикла. Сразу скажу, что чтиво непростое и требует приложения определённых когнитивных усилий, но оно того стоит. В идеальном мире знать о таких вещах должен каждый разработчик. Ну, вперёд! Пис 🤘🏻
https://habrahabr.ru/post/195770/
https://habrahabr.ru/post/195770/
Хабр
Lock-free структуры данных. 1 — Начало
Я надеюсь, что эта статья станет началом цикла заметок о lock-free структурах данных. Я хочу поделиться с хабрасообществом своим опытом, наблюдениям и размышлен...
И ещё два плотных подгона. "What Every Computer Scientist Should Know About Floating-Point Arithmetic" и "What Every Programmer Should Know About Memory". Многие наверняка натыкались на названия этих трудов, но если вы не в их числе, то обязательно прочтите. Не обязательно за один раз, можно читать понемногу каждый день, статьи довольно сложные. Да, это врядли поможет вам написать очередную Activity. Но знание основ безусловно важно для понимания общей картины. Смотрите на это как на долгосрочную инвестицию в себя. Помни корни. Пис 🖕🏻
Внезапно узнал, что Cyanogen OS закрывается. Если я правильно всё понял, то OS - это именно сборки, которые пилили они, ROM - сборки, поддерживаемые сообществом, а MOD - набор приложений от их команды. Я давно их осью не пользовался, но новость какая-то грустная. Мда. Cyanogen-девственности я когда-то лишился с HTC Desire HD. Первый раз разблокировать bootlader. Осторожно войти в fastboot. Ммм. Ностальгия. Пис 🖖🏻
https://techcrunch.com/2016/12/24/cyanogen-failed-to-kill-android-now-it-is-shuttering-its-services-and-os-as-part-of-a-pivot/
https://techcrunch.com/2016/12/24/cyanogen-failed-to-kill-android-now-it-is-shuttering-its-services-and-os-as-part-of-a-pivot/
TechCrunch
Cyanogen failed to kill Android, now it is shuttering its services and OS as part of a pivot
It’s been a rocky few months for Cyanogen, the ambitious startup that aimed to build a better version of Android than Google. It has laid off staff, let go of its CEO and parted ways with another co-founder — now it is shutting down its services and nightly…
Оказывается, Bazel - гугловая система сборки всего на свете - вышла в публичную бету. Более того, они говорят, что система стабильна для многих вещей (Android в том числе), так как давно используют её внутри. Подумываю наложить на неё руки в эти праздники. И вам того же. Пис 👍🏻
https://bazel.build/versions/master/docs/support.html
https://bazel.build/versions/master/docs/support.html
Ловите цикл из трёх статей от хабраюзера Yoto - кюветы Android. Наверняка многие их уже читали, но я просто не могу не поделиться ими здесь. Статьи идеально обрисовывают те самые бочки говна, что мы с вами усердно едим. Сколько же в них боли! И язык, которым пишет автор, мне очень заходит. Надеюсь, вы не вскроетесь. Пис 🤘🏻
https://habrahabr.ru/post/279811/
https://habrahabr.ru/post/280190/
https://habrahabr.ru/post/281312/
https://habrahabr.ru/post/279811/
https://habrahabr.ru/post/280190/
https://habrahabr.ru/post/281312/
Хабр
Кюветы Android, Часть 1: SDK
Довольно долгое время я никак не мог понять, в чём же разница между «библиотекой» и «фреймворком». Нет-нет, я умел и читать, и гуглить, но до меня всё никак не д...
Статья из разряда "а знаете ли вы, что IDEA может ещё и вот так". Автор вкратце рассказывает про Analyze Data Flow фичу в Intellij-платформе. Эта балалайка позволяет отследить откуда пришли/куда пойдут данные из какого-то участка кода. Полезная штука, имейте её в виду. В рамках Android она далеко не всегда применима, но иногда может сэкономить немного времени. Пис 👍🏻
https://tips.seebrock3r.me/analyse-data-flows-without-the-debugger-android-studio-protips-3-ef2885aaffd9#.mubu6bmfb
https://tips.seebrock3r.me/analyse-data-flows-without-the-debugger-android-studio-protips-3-ef2885aaffd9#.mubu6bmfb
{dev} tips
Analyse data flows without the debugger
The usual approach to figure out the way data flows throughout a codebase is… well, extraordinarily manual. Turns out, there’s a better and faster way to do it. While this might not always work…
Случайно наткнулся на забавное исследование уязвимостей Android за 2014-2016 гг. К сожалению, в руки ко мне попала только презентация, так что над каждым слайдом нужно немного подумать, дорисовывая в голове общую картинку. Из интересного - 85% багов обосновались не в ядре Linux, а в коде драйверов от производителей железа, драть их красной кочергой. Но штука интересная, рекомендую. Пис ☝️🏻
Нашёл видео к слайдам из предыдущего поста. Все, братцы, можно не думать. Пис 🖖🏻
https://youtu.be/WxbOq8IGEiE
https://youtu.be/WxbOq8IGEiE
YouTube
Android: Protecting the Kernel by Jeffrey Vander Stoep, Google
Android: Protecting the Kernel - Jeffrey Vander Stoep, Google
Root isn’t what it used to be. SELinux and DAC capabilities have disarmed the typical root process on Android. This has forced rooting exploits to target the source of sandbox enforcement - the…
Root isn’t what it used to be. SELinux and DAC capabilities have disarmed the typical root process on Android. This has forced rooting exploits to target the source of sandbox enforcement - the…