Внезапно, начиная с 15.0.0 версии, принцип версионирования Google Play Services и Firebase библиотек меняется на SemVer.
#google #playservices #firebase
https://android-developers.googleblog.com/2018/05/announcing-new-sdk-versioning.html
#google #playservices #firebase
https://android-developers.googleblog.com/2018/05/announcing-new-sdk-versioning.html
Android Developers Blog
Announcing new SDK versioning in Google Play services and Firebase
Posted by Doug Stevenson, Developer Advocate Starting today, the Android SDKs for Google Play services and Firebase will be using a n...
@Scorpikk прислал весёлую находку из кода ContentResolver.
#aosp #humor
android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/java/android/content/ContentResolver.java#757
#aosp #humor
android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/java/android/content/ContentResolver.java#757
Ребята из Uber показали свой доморощенный method tracing tool. И вот знаете, с одной стороны, богатая идея, а с другой, немножко пугает: они решили измерять с уровня системы, т.е. их тул это форк AOSP, который умеет бенчмаркать. Такие дела.
#performance #benchmarks #methodtracing
https://eng.uber.com/nanoscope
#performance #benchmarks #methodtracing
https://eng.uber.com/nanoscope
Ну, вы знаете, на днях закончился Google I/O. Мне не удалось на нём побывать, но иметь материал где-то на подкорке хочется. Я думаю, что не один в таком положении. Поэтому я буду потихоньку смотреть записи всех сессий, что мне показались интересными, и закидывать сюда поинты из каждого видео, которые меня заинтересуют. Не в каждый нюанс я буду погружаться достаточно глубоко, поэтому, если где-то ошибусь, feel free to написать мне, что я мудак и объяснить, в чём именно :) Итак, первый пошёл…
Есть проблема. Я её, например, ощущаю на себе: все приложения соответствуют Material Design и почти все выглядят одинаково скучно. Размывается индивидуальность бренда. На выбор компании остаются только цвет да иконки (не всегда, но часто). И, хотя Google-guys с самого начала говорили, что material - это рекомендация, а не жёсткие рамки, почти все всё равно лепили по material-лекалам одно и то же безобразие. Ну, Google поняли, что имеют дело со стадом хомячков, и решили добавить нам степеней свободы. Посредством Material Theming нам дают свободу (и тулзы, чтобы эту свободу держать в узде - сочетай цвета, мать твою) в выборе цветов, шрифтов и форм для элементов на экране.
Появился Sketch-плагин, который позволит переложить работу дизайнера в стили для Material Components - пачки написанных для нас View.
Ещё мне очень понравился момент с формой контролов (см. картинку выше), который даёт дополнительное понимание z-level’а компонентов.
#talk #material #design
https://youtu.be/3VUMl_l-_fI
Появился Sketch-плагин, который позволит переложить работу дизайнера в стили для Material Components - пачки написанных для нас View.
Ещё мне очень понравился момент с формой контролов (см. картинку выше), который даёт дополнительное понимание z-level’а компонентов.
#talk #material #design
https://youtu.be/3VUMl_l-_fI
YouTube
Customize Material Components for your product (Google I/O '18)
Take advantage of Material’s new expressiveness and adaptability by learning how to customize Material Design Components and quickly build beautiful products for Android, iOS, web, and Flutter.
Rate this session by signing-in on the I/O website here → h…
Rate this session by signing-in on the I/O website here → h…
Выступление Chet Haase и Romain Guy. Тут ты должен был стать заинтригован.
В докладе описывается весь Android Rendering Pipeline, но поскольку вместить это в 40 минут не получится, доклад выглядит как быстрое набрасывание названий разных классов и модулей. Тем не менее, вдумчиво его посмотреть я бы скорее советовал.
Наброшу несколько названий из доклада, чтобы ты понимал, о чём речь: Choreographer, VSync, UI Thread, RenderThread, SurfaceFlinger, BufferQueue, Hardware Composer (HWC).
Теперь несколько интересных фактов из сессии:
1. Начиная с Android Oreo можно использовать
2. Кусочек хинта (почему так - см. видео) - чем меньше
3. Метод
4. “RecyclerView is now able to do prefetching of items ahead of time”
5. Graphika app on Github - пачка примеров с использованием SurfaceFlinger, Surface, SurfaceView, media encoder, virtual displays.
6.
Подробности обо всём этом найдёшь по ссылке.
#rendering #window #surface #gpu
https://youtu.be/zdQRIYOST64
В докладе описывается весь Android Rendering Pipeline, но поскольку вместить это в 40 минут не получится, доклад выглядит как быстрое набрасывание названий разных классов и модулей. Тем не менее, вдумчиво его посмотреть я бы скорее советовал.
Наброшу несколько названий из доклада, чтобы ты понимал, о чём речь: Choreographer, VSync, UI Thread, RenderThread, SurfaceFlinger, BufferQueue, Hardware Composer (HWC).
Теперь несколько интересных фактов из сессии:
1. Начиная с Android Oreo можно использовать
Bitmap.Config.HARDWARE, чтобы аллоцировать Bitmap напрямую на GPU и не тратить время на копирование. Недостаток: если серьёзно разойтись, можно получить пачку совершенно невнятных крашей из глубин фреймворка2. Кусочек хинта (почему так - см. видео) - чем меньше
Window объектов на экране, тем лучше3. Метод
invalidate(left, top, right, bottom) можно больше не дрочить - система уже умеет неплохо оптимизировать этот момент, а багов от его использования уйма4. “RecyclerView is now able to do prefetching of items ahead of time”
5. Graphika app on Github - пачка примеров с использованием SurfaceFlinger, Surface, SurfaceView, media encoder, virtual displays.
6.
adb shell dumpsys SurfaceFlinger лучше выполнять, когда что-то анимируется/меняется на экране, иначе можно получить не совсем точные данные из-за дополнительных оптимизацийПодробности обо всём этом найдёшь по ссылке.
#rendering #window #surface #gpu
https://youtu.be/zdQRIYOST64
YouTube
Drawn out: How Android renders (Google I/O '18)
Come learn how Android turns your app's UI into pixels on the screen. Understanding how things work under the hood can help you figure out how to get the best performance for your applications.
Rate this session by signing-in on the I/O website here → h…
Rate this session by signing-in on the I/O website here → h…
В видео по ссылке рассказывают, что нового в ART в Android P:
1. Оптимизации компилятора для Kotlin (например, inline null-checks для non-null параметров)
2. CompactDex - штука, которая почикает Dex-файлы прямо на девайсе. Умеет: deduplicate and shrink code items, deduplicate multidex data, incorporate profile based Dex layout optimization (сложить методы, которые дёргаются часто или на старте в одно место в памяти)
3. На Nougat появились code profiles - во время выполнения аппа проверяется, какой код и когда выполняется и применяются соответствующие оптимизации. На Android P пошли дальше: появляется cloud profiles - данные о выполнении вашего кода загружаются в облако и оттуда прилетают другим юзерам. То есть если на Nougat чем чаще апп использовался, тем лучше работал, то на Android P ребята из Google хотят добиться оптимальной производительности сразу после установки, как раз благодаря cloud profiles. А теперь гениальная идея из их доклада: берём 1%-2% юзеров из alpha и beta каналов, они используют апп, а потом на всех юзеров уже раскатывается апп, для которого собраны все profiles и апп сразу работает оптимально. Любо!
#kotlin #art #performance #optimize
https://youtu.be/Yi9-BqUxsno
1. Оптимизации компилятора для Kotlin (например, inline null-checks для non-null параметров)
2. CompactDex - штука, которая почикает Dex-файлы прямо на девайсе. Умеет: deduplicate and shrink code items, deduplicate multidex data, incorporate profile based Dex layout optimization (сложить методы, которые дёргаются часто или на старте в одно место в памяти)
3. На Nougat появились code profiles - во время выполнения аппа проверяется, какой код и когда выполняется и применяются соответствующие оптимизации. На Android P пошли дальше: появляется cloud profiles - данные о выполнении вашего кода загружаются в облако и оттуда прилетают другим юзерам. То есть если на Nougat чем чаще апп использовался, тем лучше работал, то на Android P ребята из Google хотят добиться оптимальной производительности сразу после установки, как раз благодаря cloud profiles. А теперь гениальная идея из их доклада: берём 1%-2% юзеров из alpha и beta каналов, они используют апп, а потом на всех юзеров уже раскатывается апп, для которого собраны все profiles и апп сразу работает оптимально. Любо!
#kotlin #art #performance #optimize
https://youtu.be/Yi9-BqUxsno
YouTube
What's new in Android Runtime (Google I/O '18)
If you use the Java or Kotlin programming languages to develop on Android, Android Runtime (ART) is what ensures your code runs quickly and efficiently. Learn more about how ART makes it easier to write a great Android app with improvements in debugging and…
Доклад про то, что нового в Android development tools. Отмечу следующее:
- Android Studio 3.2:
* What’s new window
* App bundle generation
* Dynamic features support
* “Sessions” window in profiler
* Energy profiler
* AndroidX refactoring - перевести всё на новую версию support-библиотек. Ещё появился Jetifier: “converts legacy Maven artefacts to the new AndroidX namespace and caches those for new builds”
* Navigation library и UI для неё - позволяет выстроить всю навигацию одним xml, в том числе умеет добавлять анимации переходам, позволяет удобно прописать deeplinks и даже вроде бы позволяет разрулить передачу аргументов в Activity/Fragment
* Layout Editor - появляются всякие кнопки и меню для быстрого добавления sample data в design-режиме
* Запустили студию на Pixel Chromebook (no ADB yet - “you can upload straight to the Play Store and hope for the best”)
* D8 - new default Dexer & R8 - new default optimizer
* Бонус: показали фичу, которая в разработке (сказали, выйдет наверное даже не в 3.3) и использует следующую версию ConstraintLayout - работа с transition анимациями прямо из UI.
- Emulator:
* Save and replay snapshots
* Better camera to support AR apps
Ну, как-то так.
#studio #emulator #adt
https://youtu.be/WxAZk7A7OkM
- Android Studio 3.2:
* What’s new window
* App bundle generation
* Dynamic features support
* “Sessions” window in profiler
* Energy profiler
* AndroidX refactoring - перевести всё на новую версию support-библиотек. Ещё появился Jetifier: “converts legacy Maven artefacts to the new AndroidX namespace and caches those for new builds”
* Navigation library и UI для неё - позволяет выстроить всю навигацию одним xml, в том числе умеет добавлять анимации переходам, позволяет удобно прописать deeplinks и даже вроде бы позволяет разрулить передачу аргументов в Activity/Fragment
* Layout Editor - появляются всякие кнопки и меню для быстрого добавления sample data в design-режиме
* Запустили студию на Pixel Chromebook (no ADB yet - “you can upload straight to the Play Store and hope for the best”)
* D8 - new default Dexer & R8 - new default optimizer
* Бонус: показали фичу, которая в разработке (сказали, выйдет наверное даже не в 3.3) и использует следующую версию ConstraintLayout - работа с transition анимациями прямо из UI.
- Emulator:
* Save and replay snapshots
* Better camera to support AR apps
Ну, как-то так.
#studio #emulator #adt
https://youtu.be/WxAZk7A7OkM
YouTube
What's new in Android development tools (Google I/O '18)
An overview of all the recent features in Android Studio for Android app developers. The session will include demos and a tour de force presentation of relevant features that will accelerate developers' workflow on the latest Android APIs.
Rate this session…
Rate this session…
Из этого выступления я выпишу не очень много поинтов, но доклад интересный, сходите посмотрите. А поинты там такие:
- Well Aged Advice:
* Prioritise efficiency
* Avoid WakeLocks
* Don’t use undocumented APIs
* Store strings and values as resources
* Avoid transmitting/storing contacts & location
- Android Fundamentals:
* Java language syntax -> Kotlin
* UI logic for background processing -> ViewModels
* Services for background processing -> Work Manager
* Monitor system events with Receivers -> Work Manager
* Content Providers for database access -> Room
Бонус: в Android P не будет вылезать ANR-диалог, апп просто будет падать.
#tips #anr
https://youtu.be/eHjHlujp3Tg
- Well Aged Advice:
* Prioritise efficiency
* Avoid WakeLocks
* Don’t use undocumented APIs
* Store strings and values as resources
* Avoid transmitting/storing contacts & location
- Android Fundamentals:
* Java language syntax -> Kotlin
* UI logic for background processing -> ViewModels
* Services for background processing -> Work Manager
* Monitor system events with Receivers -> Work Manager
* Content Providers for database access -> Room
Бонус: в Android P не будет вылезать ANR-диалог, апп просто будет падать.
#tips #anr
https://youtu.be/eHjHlujp3Tg
YouTube
Protips: A fresh look at advanced topics for Android experts (Google I/O '18)
It's been 10 years since the first Android device launch, and even experienced Android developers are still using tools, APIs, and best-practices from 2008. The return of Android Protips brings you up-to-speed on modern solutions to Android development challenges…
Что-то из нового Android:
- Battery:
* App standby buckets: использование аппа определяет, как и когда он запустить свои jobs
* Background restrictions: если апп ведёт себя непорядочно, можно ему к чёртовой матери всё запретить
- Background input & privacy:
* Микрофон в фоне - нельзя
* Камера в фоне - нельзя
* Разные сенсоры - вроде бы будут возвращать нулевые значения - можно сказать, тоже нельзя
- Background text measurement:
* Измерять текст дорого, а делать это приходится много. Прозвучала цифра: 80%-90% всего measure-layout-draw цикла приходится на измерение текста.
* Поэтому теперь его можно делать в фоне -
- Notifications:
* inline images & stickers
* можно показать картинки участников чата, например
* smart reply UI (а-ля чатбот)
* no more “app is using battery” notification
- Deprecation policy:
* Август 2018 - новые аппы только с targetSdk 26
* Ноябрь 2018 - обновления аппов только с targetSdk 26
* Август 2019 - те, кто используют нативные куски, обязаны давать 64-bit ABI (32-bit опционально)
Это только то, за что зацепился глаз. В докладе ещё больше, но тратить время не советовал бы :)
#androidp #background #notifications
https://youtu.be/eMHsnvhcf78
- Battery:
* App standby buckets: использование аппа определяет, как и когда он запустить свои jobs
* Background restrictions: если апп ведёт себя непорядочно, можно ему к чёртовой матери всё запретить
- Background input & privacy:
* Микрофон в фоне - нельзя
* Камера в фоне - нельзя
* Разные сенсоры - вроде бы будут возвращать нулевые значения - можно сказать, тоже нельзя
- Background text measurement:
* Измерять текст дорого, а делать это приходится много. Прозвучала цифра: 80%-90% всего measure-layout-draw цикла приходится на измерение текста.
* Поэтому теперь его можно делать в фоне -
PrecomputedText.create(…)- Notifications:
* inline images & stickers
* можно показать картинки участников чата, например
* smart reply UI (а-ля чатбот)
* no more “app is using battery” notification
- Deprecation policy:
* Август 2018 - новые аппы только с targetSdk 26
* Ноябрь 2018 - обновления аппов только с targetSdk 26
* Август 2019 - те, кто используют нативные куски, обязаны давать 64-bit ABI (32-bit опционально)
Это только то, за что зацепился глаз. В докладе ещё больше, но тратить время не советовал бы :)
#androidp #background #notifications
https://youtu.be/eMHsnvhcf78
YouTube
What's new in Android (Google I/O '18)
An overview of the latest developer-facing features in the Android platform and other new and exciting developments.
Rate this session by signing-in on the I/O website here → https://goo.gl/oEa9Hr
Watch more videos about Jetpack → https://goo.gl/kw8LPv…
Rate this session by signing-in on the I/O website here → https://goo.gl/oEa9Hr
Watch more videos about Jetpack → https://goo.gl/kw8LPv…
Доклад, в котором по шагам проходится, как работают штуки типа ProGuard и R8, как к ним пишутся keep-правила и что делать, когда после включения
#proguard #r8 #minification
https://youtu.be/x9T5EYE-QWQ
minifyEnabled true всё сломалось. В целом, не советую тратить время, если всё это уже знаешь.#proguard #r8 #minification
https://youtu.be/x9T5EYE-QWQ
YouTube
Effective ProGuard keep rules for smaller applications (Google I/O '18)
ProGuard keep rules are the super power in reducing application size. Correctly specified, they allow tools to remove unneeded code and obfuscate applications. But what exactly do these rules mean? This session provides an answer by deep diving into what…
Нашёл шпаргалку (уверен, не я один постоянно это забываю) про `FontMetrics`. И да, как всегда Android Framework во всей красе - baseline считай сам :)
#cheatsheet #font #text
#cheatsheet #font #text
Статья-инструкция к решению задач на dynamic programming и memoization. Интересно, посмотрите.
#algorithm #dynamicprogramming #memoization
http://blog.refdash.com/dynamic-programming-tutorial-example/
#algorithm #dynamicprogramming #memoization
http://blog.refdash.com/dynamic-programming-tutorial-example/
Пачка хаков при работе с числами на уровне битов (сдвиги, включить-выключить битик и всё такое прочее). Статья классная, жалко только, что расписано всё в отрыве от применения. А ведь запекание состояния компонента (какого-нибудь View, например), которому нужна куча bool-флагов, в одно чиселко в определённых случаях может резко упростить и сократить код.
#hack #bit
http://www.catonmat.net/blog/low-level-bit-hacks-you-absolutely-must-know/
#hack #bit
http://www.catonmat.net/blog/low-level-bit-hacks-you-absolutely-must-know/
catonmat.net
Introduction to Low Level Bit Hacks
I decided to write an article about a thing that is second nature to embedded systems programmers – low level bit hacks. Bit hacks are ingenious little programming tricks that manipulate integers in a smart and efficient manner. Instead of performing operations…
Так, а если кто-то тут по битовым операциям хочет угореть, то @kenrube прислал ссылку на ещё более обширный сборник.
#hack #bit
http://graphics.stanford.edu/~seander/bithacks.html
#hack #bit
http://graphics.stanford.edu/~seander/bithacks.html
Статья про разницу между разными подходами к IO: blocking, non-blocking, multiplexed и async.
#io #multiplexed #async
https://www.rubberducking.com/2018/05/the-various-kinds-of-io-blocking-non.html
#io #multiplexed #async
https://www.rubberducking.com/2018/05/the-various-kinds-of-io-blocking-non.html
Rubberducking
The Various Kinds of IO - Blocking, Non-blocking, Multiplexed and Async.
A blog where I write down my thoughts, ideas and notions, as an exercise to cement them in my memory and improve on their concepts.
Мы тут недавно вспомнили, что Google обещали выложить исходники Architecture Components, но как-то всё это дело прошло мимо нас и мы их не видели. Так вот, они всё-таки есть, может и вам пригодится.
-
-
- Paging: https://android.googlesource.com/platform/frameworks/support/+/master/paging/common/src/main/java/android/arch/paging
- Room: https://android.googlesource.com/platform/frameworks/support/+/master/room/common/src/main/java/android/arch/persistence/room
#source #architecture #components
-
Lifecycle, LifecycleOwner, LifecycleObserver и прочее разное: https://android.googlesource.com/platform/frameworks/support/+/master/lifecycle/common/src/main/java/android/arch/lifecycle-
ViewModel, LiveData и т.п.: https://android.googlesource.com/platform/frameworks/support/+/master/lifecycle/extensions/src/main/java/android/arch/lifecycle- Paging: https://android.googlesource.com/platform/frameworks/support/+/master/paging/common/src/main/java/android/arch/paging
- Room: https://android.googlesource.com/platform/frameworks/support/+/master/room/common/src/main/java/android/arch/persistence/room
#source #architecture #components
Доклад про новое в Android Support Library.
-
-
-
-
-
- Material components:
* Обновили
*
*
#supportlib #view #material #talk
https://youtu.be/jdKUm8tGogw
-
RecyclerView Selection Library - штука, помогающая реализовать selection над списком. Умеет в selection жесты как в Google Photos, что очень даже неплохо. Хотя, это и не очень-то новость, вроде бы про неё я уже давно что-то слышал-
ListAdapter - какая-то странная поделка, упрощающая использование DiffUtil в меняющихся списках, но, судя по коду, который показали, она не то чтобы сильно сокращает код, который придётся написать + ограничивает ваш Adapter на один List, а этого не всегда достаточно-
androidx.webkit - позволяет использовать WebView, обновляемый через Play Store, на старых API-
CustomTab переезжает в androidx.browser + появляется возможность воткнуться в контекстное меню вашей CustomTab и добавить своё действие-
HeifWriter - позволяет эффективно записать YUV byte buffers, Surface и Bitmap в файл, но пока только на API 28+. Обещают добавить backport- Material components:
* Обновили
TextInputLayout - теперь он с рамкой и вроде бы умеет добавлять кнопку “Очистить”*
Button теперь можно по-разному закруглять и добавлять в них иконки*
BottomAppBar - по сути тот же AppBar, только снизу#supportlib #view #material #talk
https://youtu.be/jdKUm8tGogw
YouTube
Android Jetpack: What’s new in Android Support Library (Google I/O 2018)
Get to know AndroidX -- the new name and packaging for the Android Support Library -- the foundation for Android libraries in Jetpack, and learn about features available in the 1.0.0 release.
Rate this session by signing-in on the I/O website here → htt…
Rate this session by signing-in on the I/O website here → htt…