Android support library 28. что нового?

Библиотеки поддержки google play – что это такое?

Как gradle получает библиотеку из репозитория

Прежде чем мы рассмотрим, как публиковать библиотеки в JCenter, разберемся с тем, как gradle получает библиотеки из репозитория. К примеру, когда мы пишем такую строчку в build.grade, как именно файлы библиотеки попадают в проект?

1 compile ‘com.inthecheesefactory.thecheeselibrary:fb-like:0.9.3’

Сначала нам нужно знать формат строки библиотеки. Она состоит из 3 частей:

1 GROUP_IDARTIFACT_IDVERSION

В нашем случае GROUP_ID это com.inthecheesefactory.thecheeselibrary, ARTIFACT_ID имеет значение fb-like, а VERSION равен 0.9.3.

Для большей ясности, GROUP_ID задаёт название группы библиотек. Бывает такое, что имеет смысл сгруппировать в одном контексте несколько библиотек, выполняющих различные задачи. Если библиотеки входят в одну группу, то их GROUP_ID будет совпадать. Обычно GROUP_ID – это название разработчика пакета, после которого идёт название группы библиотек, например, com.squareup.picasso. Затем задаётся настоящее название библиотеки в ARTIFACT_ID. Что касается VERSION, то здесь хранится только номер версии. Несмотря на то, что в это поле можно ввести произвольный текст, лучше задавать его в формате x.y.z с -beta на конце, если нужно.

Ниже приведён реальный пример библиотеки, взятый из Square. В каждой строке легко обнаружить и название библиотеки, и название разработчика.

123456 dependencies {
compile ‘com.squareup:otto:1.3.8’
compile ‘com.squareup.picasso:picasso:2.5.2’
compile ‘com.squareup.okhttp:okhttp:3.9.1’
compile ‘com.squareup.retrofit:retrofit:2.3.0’}

Что произойдет, когда мы добавим зависимость как в примере выше? Всё просто. Gradle спросит сервер Maven-репозитория, существует ли такая библиотека, и если да, то получит путь к запрашиваемой библиотеке. Чаще всего он будет в формате GROUP_ID/ARTIFACT_ID/VERSION_ID. Например, файлы библиотеки com.squareup:otto:1.3.8 можно найти по ссылкам https://jcenter.bintray.com/com/squareup/otto/1.3.8/ и https://oss.sonatype.org/content/repositories/releases/com/squareup/otto/1.3.8/.

Затем Android Studio загрузит эти файлы на ваш компьютер и добавит их в проект. И всё. Ничего сложного!

Надеюсь, сейчас вы чётко понимаете, что скачиваемые библиотеки – это всего лишь файлы формата jar или aar, размещённые на сервере репозитория. По сути, если вы скачаете файлы сами, скопируете и добавите их в проект, получится то же самое. Но огромный плюс системы зависимостей в gradle — это отсутствие необходимости делать что-либо дополнительно, кроме как набрать несколько строчек текста. Библиотека сразу же становится доступной в вашем проекте, причём с системой управления версиями.

Зачем мы это используем

При разработке приложений, мы часто хотим видеть одинаковую работу нашего кода на разных версиях устройств. Вместо того, чтобы писать код поддержки для ранних версий Андроид, нам достаточно взять готовую реализацию из Support Library и заняться более важными задачами (таски же должен кто-то закрывать).

Однако т а к было ранее, ведь сейчас, библиотека поддержки это куда больше, чем куча if else с проверкой версионности. Она содержит в себе такие полезные view как:

  • RecyclerView — отличная альтернатива устаревшему ListView
  • ViewPager — для реализации таб-ориентированной навигации или простого слайдинга
  • DrawerLayout — позволяющий быстро и просто добавить боковое меню
  • CardView — для разнородного контента

И даже помимо этого, в ней содержатся такие замечательные штуки как линтеры, любезно подсказывающие нам вероятные ошибки, различные утилитные классы типа ContextCompat , аннотации и кучу другого. Их использование значительно упрощает жизнь рядовому разработчику.

Внедрение зависимостей

Паттерны в ООП

Паттерны в ООП — это рекомендации, как писать код, чтобы получился гибкий и масштабируемый проект: уменьшать зависимость объектов друг от друга, создавать универсальные классы и так далее. Рекомендую ближе познакомиться с паттернами, прочитав книгу Эрика и Элизабет Фримен «Паттерны проектирования».

Построение многих популярных библиотек основано на использовании ООП-паттерна «Внедрение зависимостей» (Dependecy Injection). Довольно часто требуется создать объект A, для функционирования которого нужен какой-то другой объект B. Возникшая ситуация называется зависимостью, она приводит к дублированию кода и усложняет разработку: как поменять объект B так, чтобы объект A работал?

Решить проблему можно, используя DI-паттерн. В этом случае объекты связываются с помощью графа зависимостей уже в процессе компиляции программы. От нас же требуется создать абстракции таких классов и указать с помощью аннотаций, куда именно объекты этих классов должны быть добавлены. Рассмотрим все это на практике.

Рис. 1. Подключение библиотек в Android Studio
Другие статьи в выпуске:

Виды библиотек Google Play и их свойства

Этих библиотек множество, перечислим некоторые из них:

  • Support Library – одна из главных и известных библиотек. Она на старых версиях Андроид делает доступными возможности новых версий. Эта библиотека использует классы, которые являются аналогами нововведений и которые будут корректно работать на старых версиях;
  • Play Billing Library. Библиотека для осуществления функции биллинга в приложении. Незаменима для тех, кто хочет монетизировать свои приложения, используя в них покупки и подписки. Удобна эта библиотека тем, что в нем уменьшено количество шаблонного кода;
  • Glide. Библиотека загрузки изображений с качественным API, который дает возможность изменять изображения любым способом и проделывать с ним другие действия: масштабировать, кешировать, загружать и т.д.;
  • ThreeTen. Библиотека для работы с датой и временем. Выгодно отличается от стандартной Android Calendar API;
  • Timber. Мощная библиотека логирования, позволяющая задействовать в программах логин. Имеет поддержку логирования форматированных строк и исключений;
  • ActivityRecognitionClient. Позволяет распознавать действия пользователя – с ним программа может определить действия пользователя – ходьбу, езду на автомобиле или чтение. Все эти функции работают при наличии соответствующих сенсоров.

Тут перечислены лишь некоторые библиотеки поддержки Google Play, на самом деле их гораздо больше, что позволяет создавать мощные приложения для сложных задач.

Moshi

Moshi — это библиотека для конвертации JSON в Java и Kotlin-объекты. Многие воспринимают Moshi как GSON 3.0. Однако эта библиотека превосходит GSON в нескольких аспектах: она быстрее, она поддерживает Kotlin, она обновляется, генерирует предсказуемые исключения и не использует испорченный адаптер DateTime по умолчанию. Кроме того, используя Moshi, процесс конвертации JSON в Java-объекты (и наоборот) становится максимально простым и понятым.

Мы также любим Moshi за поддержку JSON API. JSON API — это спецификация построения API, и многие API, с которыми мы работаем, написаны с использованием этой спецификации. Moshi JSON API облегчает нашу жизнь, поскольку JSON API ответ преобразуется в значимые Java-объекты. Retrofit ещё поддерживает Moshi, и вместе они просто отлично работают.

Миграция с 28.0.0-alpha1

Переход приложения от зависимостей android.support к зависимостям androidx проходит в два основных этапа: рефакторинг исходного кода и перевод зависимостей.

Рефакторинг исходного кода обновляет Java-код, XML-ресурсы и конфигурацию Gradle таким образом, чтобы ссылаться на отрефакторенные классы и артефакты Maven. Эта функция доступна в Android Studio Canary 14 для приложений, ориентированных на Android P.

27–28 ноября, Онлайн, Беcплатно

Если вы зависите от библиотеки, которая ссылается на более старую версию Support Library, Android Studio обновит эту библиотеку с помощью перевода зависимостей так, чтобы она ссылалась на androidx . Перевод зависимостей автоматически применяется Android Gradle Plugin 3.2.0-alpha14, который переписывает байт-код и ресурсы зависимостей JAR и AAR (а также транзитивных зависимостей) таким образом, чтобы они ссылались на новые androidx классы и артефакты. Также будет доступен отдельный инструмент для перевода в формате JAR.

Существуют такие вещи, о которых обычно не говорят: почему небо голубое, когда мне поднимут зарплату и наша любимая android.support.library. У всех них есть нечто общее: мы встречаемся с ними каждый день, но никогда не интересуемся как они устроены внутри и почему все именно так, как есть — примитивное великолепие.

Glide

Вы скорее всего знаете, что загрузка изображений в Android вызывает большие трудности. Даже изменение размера изображения может обернуться катастрофой с . Glide — это библиотека загрузки изображений, которая предоставляет качественный API, позволяющий изменять изображение как вам угодно.

Библиотека позволит вам легко загрузить удалённое изображение в ImageView, определить стабовые изображения, кэшировать и масштабировать изображения и т.д. Просто попробуйте проделать всё это без помощи Glide, и вы сразу поймёте, почему он находится в нашем списке ключевых библиотек. Glide даже поддерживает некоторые распространённые изменения по умолчанию, например, создание изображения круглой формы.

ButterKnife

Возможно, поначалу тебе может показаться, что DI-паттерны — не для тебя :). Но это не так! Ты увидишь, что он может пригодиться и в более обыденных ситуациях. На очереди библиотека ButterKnife, которая поможет в работе с объектами класса View. Теперь нет нужды каждый раз вызывать метод findViewById, достаточно короткого объявления:

Для последующего использования достаточно вызвать метод . Так же легко теперь обработать события onClick, onLongClick и подобные:

Здесь разрешение зависимостей тоже устроено с помощью рассмотренного паттерна, однако большую часть за нас уже сделала библиотека ButterKnife.

Что такое библиотеки поддержки Android и почему они важны?

Как только вы поймете простую истину о том, что фрагментация не исчезнет, ​​у вас останется попытка найти способы смягчить ее, чтобы производители устройств могли сохранить свободу, которой они обладают в настоящее время, в то время как разработчики приложений могут создавать новейшие, самые крутые вещи для установки на них , Вот почему Android так же популярен, как и он, и если вы возитесь с этой формулой, вы можете принести больше вреда, чем пользы. Получение «под ключ» сервисов повышения производительности и гигантского рынка приложений для демонстрационного аппаратного обеспечения, которое он разрабатывает собственными силами, — это то, что заставляет Samsung делать телефоны на Android и не шлепать Tizen по всем вопросам.

Google усердно работает над тем, чтобы вся проблема фрагментации не стала проблемой. Некоторые способы успешны — Play Services позволяет некоторым функциям практически не зависеть от версии и предлагает несколько дополнительных средств защиты для устройств без последних настроек безопасности. Некоторые не так успешны; Material Design должен был сделать все приложения великолепно выглядящими на всех устройствах. Некоторые из них будут успешными в будущем, например Project Treble . Но одна из вещей, которые делает Google, превосходит успех и превращается в удивительные, особенно если вы разработчик приложений: библиотеки поддержки Android.

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

It’s all about apps

Как легко заметить, использование Android принципиально отличается от использования «обычного Linux» —  вам не нужно открывать и закрывать приложения, вы просто переключаетесь между ними, как будто все приложения запущены всегда. Действительно, одна из уникальных особенностей Android — в том, что приложения не контролируют напрямую процесс, в котором они запущены. Давайте поговорим об этом подробнее.

Основная единица в Unix-подобных системах  —  процесс. И низкоуровневые системные сервисы, и отдельные команды в shell’е, и графические приложения  —  это процессы. В большинстве случаев процесс представляет собой чёрный ящик для остальной системы  —  другие компоненты системы не знают и не заботятся о его состоянии. Процесс начинает выполняться с вызова функции (на самом деле ), и дальше реализует какую-то свою логику, взаимодействуя с остальной системой через системные вызовы и простейшее межпроцессное общение (IPC).

Поскольку Android тоже Unix-подобен, всё это верно и для него, но в то время как низкоуровневые части  —  на уровне Unix  —  оперируют понятием процесса, на более высоком уровне  —  уровне Android Framework  —  основной единицей является приложение. Приложение  —  не чёрный ящик: оно состоит из отдельных компонентов, хорошо известных остальной системе.

У приложений Android нет функции , нет одной точки входа. Вообще, Android максимально абстрагирует понятие приложение запущено как от пользователя, так и от разработчика. Конечно, процесс приложения нужно запускать и останавливать, но Android делает это автоматически (подробнее я расскажу об этом в следующих статьях). Разработчику предлагается реализовать несколько отдельных компонентов, каждый из которых обладает своим собственным жизненным циклом.

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

Этот механизм  —  Binder.

Строгое версионирование для каждой библиотеки

Начиная с рефакторинга AndroidX, версии библиотек были сброшены с 28.0.0 до 1.0.0. Будущие обновления будут версионироваться отдельно для каждой библиотеки, следуя строгим правилам, согласно которым основная версия будет указывать на бинарную совместимость. Это значит, например, что вы можете добавить и использовать новую функцию в RecyclerView без обновления всех остальных библиотек, используемых вашим приложением. Также это значит, что библиотеки, зависящие от androidx , могут предоставить гарантии приемлемой совместимости с будущими релизами AndroidX — так, зависимость от версии 1.5.0 может работать с версией 1.7.0, но, скорее всего, не будет работать с версией 2.0.0.

Карьерный рост и перспективы профессии

В Android-разработке, как и везде в IT, новичок начинает с позиции Junior, затем прокачивает скиллы и становится Middle. Через несколько лет может претендовать на позицию Senior, а наиболее успешные дорастают до тимлидов.

С 2016 года в СМИ ходили слухи, что Google скоро заменит Android новой операционной системой Fuchsia — и Android-разработчики останутся не у дел. Всё прояснилось в 2019 году на конференции Google I/O: руководитель направления Android Хироши Локхаймер заверил, что компания не собирается отказываться от Android для смартфонов. Fuchsia будут применять в умных домах, носимой электронике и устройствах дополненной реальности.

Службы Google Play: что это такое?

Службы Google Play — это не простое приложение, каким вы обычно себе его представляете. Когда вы попытаетесь открыть его, ничего не произойдет. Однако эти службы устанавливаются по умолчанию на всех устройствах Android. Они также получают регулярные обновления, и количество необходимых им разрешений впечатляет. Все включено: доступ и контроль над SMS, доступ к конфиденциальным данным, доступ ко всей информации из приложений Google; этот список можно продолжать бесконечно. Кроме того, сервисы Google Play невозможно переместить на карту памяти, в отличии от других приложений. О том, как перемещать приложения на SD карту вы можете прочитать в этой статье.

Иными словами, Google Play Services — это приложение, которое очень тесно связано с самой системой Android.

Это пакет API (что помогает программистам и позволяет приложениям легко обмениваться информацией с другими приложениями), который гарантирует, что меньшее количество приложений зависит от обновлений ОС Android для запуска.

Retrofit

Retrofit — это типобезопасный HTTP-клиент, позволяющий представить ваш REST API в виде интерфейса. Вы сможете управлять телами, заголовками, параметрами API-запросов и многим другим с помощью аннотаций, что сделает этот процесс простым и понятным. Retrofit также позволяет выполнять синхронные и асинхронные вызовы API.

Ко всему прочему, Retrofit предоставляет отдельный Rx-модуль. Если вы используете Rx, этот модуль вернёт Observable при обращении к API, что позволит связать его с остальной частью вашего приложения. И это лишь некоторые из множества причин, по которым мы по-прежнему любим и используем Retrofit.

Библиотеки для мобильной аналитики

Тема мобильной аналитики настолько обширна, что и одной статьи под нее не хватит. Существует множество задач – от простого сбора событий и построения воронок до offline атрибуций установок.

Универсального решения для любого случая найти не получится… но есть выход. Для начала используйте что-нибудь минимальное, простое, понятное и бесплатное. На эту роль хорошо подойдут Firebase от Google и Appmetrica от Яндекса.  В тот момент, когда вы поймете, что упираетесь в доступный функционал, можете присматриваться к другим инструментам. Главное, что вы будете понимать куда и зачем смотреть.

Тему библиотек для разработки Android приложений покрыть полностью просто невозможно. Мы постарались остановится на наиболее встречающихся задачах и их решениях. Многие темы, такие как локализация приложений или же стильные анимации – остались за кадром статьи. В каждом отдельном случае анализируйте сами, нужна ли вам библиотека, или в этот раз лучше написать реализацию самим.

Оригинал статьи находится здесь: https://dimlix.com/popular-android-libraries/

Chuck

Chuck — это HTTP-инспектор для Android, позволяющий «покопаться» в HTTP-истории вашего приложения на мобильном телефоне. HTTP-лог отображается в виде уведомления, которое можно развернуть, чтобы зайти в Chuck и посмотреть детальную информацию. Использование Chuck невероятно обрадует специалистов QA-отдела, поскольку они смогут увидеть, где находится проблема: на стороне Android или на стороне сервера. Эта библиотека иногда может помочь вам больше, чем logcat. Это связано с тем, что ваша HTTP-история сохранится даже в случае непредвиденного закрытия приложения, в то время как logcat время от времени самоочищается после перезапуска.

Библиотеки поддержки Google Play — что это такое?

У Google Play есть большая коллекция библиотек, задача которых – предоставление разработчикам Android-приложений функций API, которые будут использоваться в мобильных программах. Также в этих библиотеках есть уникальные функции, которые не требуют наличия последней версии платформы. При разработке приложения, в проект добавляются службы Google Play, которые позволяют добавлять в проект функции, расширяющие возможности программы.

Сервисы API Google Play предоставляют большой набор функций:

  1. Аутентификация пользователя.
  2. Карты Google.
  3. Отслеживание действий пользователя.
  4. Трекинг и много других функций.

Немного фактов

Android  —  самая популярная операционная система и платформа для приложений, насчитывающая больше двух миллиардов активных пользователей. На ней работают совершенно разные устройства, от «интернета вещей» и умных часов до телевизоров, ноутбуков и автомобилей, но чаще всего Android используют на смартфонах и планшетах.

Android  —  свободный и открытый проект. Большинство исходного кода (который можно найти на https://source.android.com) распространяется под свободной лицензией Apache 2.0.

Компания Android Inc. была основана в 2003 году и в 2005 году куплена Google. Публичная бета Android вышла в 2007 году, а первая стабильная версия  —  в 2008, с тех пор мажорные релизы выходят примерно раз в год. Последняя на момент написания стабильная версия Android  —  7.1.2 Nougat.

Общие библиотеки

Существует ряд библиотек, цель которых в целом упростить разработку как таковую.

Android Jetpack

Jetpack –  набор библиотек от Google. Они постоянно улучшаются и содержат такие компоненты, как постраничная загрузка, навигация, Dependency Injection, Lifecycle и другие.

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

Firebase

Сказать, что Firebase – библиотека – было бы не верно. Это набор облачных услуг. По сути весь функционал бэкенда и бэкофиса в одном флаконе. Через него отправляются push уведомления на Android, в нем можно хранить данные, аналитику, собирать креши и многое другое. А вот для доступа к разным функциональным частям существует официальные библиотеки.

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

Остановимся на нескольких* самых популярных частях и библиотеках от Firebase.

*Список точно полезный, но далеко не полный.

Firebase crashlytics

Ранее известный как Crashlytics от Fabric, который в итоге купил Google. Простая интеграция позволяет быстро настроить сбор крэшей в вашем приложении. Как только у пользователя случается сбой, вы увидите всю необходимую информацию – от StackTrace до модели устройства и операционной системы.

Firebase analytics

Аналитика в Firebase зачастую не дотягивает до специализированных инструментов, заточенных конкретно под сбор метрик. Самый большой плюс в том, что если вы используете пуши, crashlytics или другие инструменты от Firebase, то с уже имеющейся базовой интеграцией аналитика подключается в несколько строк.

Данные из Firebase analytics можно загружать в BigQuery и строить любые отчеты.

Firebase datastore

Если вам нужен сервер для вашего мобильного приложения, а развертывать и поддерживать целый backend нет желания, сил и средств, то Firebase Datastore – хороший выбор. Он позволяет хранить данные в NoSql формате.

Библиотека для доступа данным поддерживает Realtime обновления UI при изменении данных.

Firebase authentication

SaaS от Firebase был бы далеко не полным, если бы в нем не было аутентификации. Существует множество “провайдеров” аутентификации, через которые можно получить токен для дальнейшего использования.

Dagger

Dagger позволяет упростить Dependency Injection в ваших приложениях. Внедрение зависимости это процесс, в котором вы связываете компоненты между собой и предоставляете необходимые зависимости для ваших классов.

Hilt

Hilt это DI поверх даггера, созданный специально для Android. Dependency Injection работает из коробки в том случае, если у вашего класса есть доступный конструктор, к которому можно поставить аннотацию. Таким способом система будет знать как именно можно создать экземпляр вашего класса. С Android все немного сложнее.

У стандартных компонент, такие как Activity, Fragment и др. нет публично доступных конструкторов и Android создает их где-то глубоко внутри. Hilt позволяет использовать аннотации прямо на Андроид компонентах, тем самым обеспечивая необходимые зависимости.

Что такое формат aar

Погодите… Я упомянул, что есть два типа файлов, которые размещают в репозитории: jar и aar. С jar файлами, думаю, всё понятно, но что именно представляет собой aar?

Формат aar разработан на основе jar. Доработка потребовалась потому, что в библиотеках для Android должны присутствовать особые файлы, такие как AndroidManifest.xml, Resources, Assets и JNI, которых нет в обычных jar-файлах. Поэтому был изобретён формат aar, решающий все эти проблемы. По сути, это обычный zip-архив, как и jar, только с другой файловой структурой. Файл jar расположен внутри файла aar под именем classes.jar. Остальное перечислено ниже:

  • /AndroidManifest.xml (обязательно)
  • /classes.jar (обязательно)
  • /res/ (обязательно)
  • /R.txt (обязательно)
  • /assets/ (необязательно)
  • /libs/*.jar (необязательно)
  • /jni//*.so (необязательно)
  • /proguard.txt (необязательно)
  • /lint.jar (необязательно)

Как видите, формат файла aar специально разработан для Android. А эта статья научит вас создавать и публиковать библиотеки в формате aar.

Пространства имён android.* против androidx.*

Android-приложения зависят от двух типов классов:

  • Классы вроде PackageManager , которые идут в комплекте с операционной системой и могут иметь разные API и поведение на разных версиях Android;
  • Классы вроде AppCompatActivity или ViewModel , которые отделены от операционной системы и включаются в ваш apk. Эти библиотеки пишутся для предоставления API, поведение которого будет неизменным на как можно большем количестве версий Android.

Зачастую библиотеки, не идущие в комплекте, будут лучшим выбором, так как они предоставляют API для многих версий Android. Теперь все такие библиотеки, включая оные из Support Library и Architecture Components, будут включены в пространство имён androidx.* , чтобы вы понимали, какие зависимости нужно подключать.

Отличие API, библиотеки и SDK

Для начала определимся с терминами. Итак, что именно мы будет разрабатывать.

Что такое API

API (Application Programming Interface) — это ваш «контракт». То, что библиотека может принимать на вход и какой выход от нее ожидать. Публичные интерфейсы изначально стоит продумывать такими, чтобы их не менять в дальнейшем. При изменении «правил игры» все те, кто реализовал этот интерфейс ранее не могут безболезненно обновиться на новую версию. Правила то поменялись…

По сути, тем, кто будет использовать вашу библиотеку в первую очередь интересно ЧТО будет делать библиотека, а не КАК она будет это реализовывать. Вот именно на этот вопрос и отвечает API.

Что такое программная библиотека

Библиотека, когда мы говорим про программирование — это готовая подпрограмма, которую можно использовать AS IS внутри вашей программы. Если быть последовательным, то у вас есть API, которое описывает то, как библиотека будет себя вести и непосредственно ее реализация.

Примеров библиотек великое множество. В этом и состоит прелесть модульного программирования. А именно — вам не надо второй раз писать то, что до вас было сделано, протестировано и используется в других проектах. Например Picasso для загрузки картинок; Retrofit для написания REST клиентов; GSON для сериализации данных и т.д.

Использовать библиотеку или писать самому — вечный холивар среди разработчиков. Лично я придерживаюсь простого правила. Если есть готовая библиотека, которая делает практически то, что вам нужно, у нее много forkов и starзов на github и часто обновляется — использую её.

Что такое SDK

SDK (Software Development Kit) — это набор инструментов для разработки. Просто библиотеку сложно назвать SDK, хотя зачастую так и делают. Предполагаю, что основная цель такого наименования — выделить то, что это именно целевая библиотека, а не отдельное приложение. Примеры таких псевдо-SDK: Stripe SDK, Anyline SDK и др. «Четсные» SDK это Android SDK, iOS SDK, Java Development kit и др.

По правде говоря, использовать аббревиатуру SDK для обозначение более-менее комплексных библиотек — удобно, и я сам тоже так делаю Грань, когда ваш набор библиотек становится полноценным набором инструмент для разработчиков — условная.

Можно сказать, что ваш набор библиотек уже можно назвать SDK, когда образуется тесная двусторонняя связь между основной программной и библиотекой.

Как строится нейминг библиотек

можно видеть список всех доступных для подключения библиотек с их кратким описанием.

Большинство библиотек поддержки имеет префикс, который ПО-СЛУХАМ говорит о минимальной версии андроид, необходимой для её работы.

Помимо упомянутых ранее виджетов, библиотека поддержки предоставляет нам улучшенный , библиотеку для работы с цветами, а также для реализации экрана настроек (которой никто не пользуется, кек)

Подключаются они все примерно одинаково:

// v4 compat libraryimplementation 'com.android.support:appcompat:27.1.0'// v7 compat libraryimplementation 'com.android.support:appcompat-v7:27.1.0'

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

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

тянет за собой целый ворох различных зависимостей (даже архитектурных!!, а вы тут всё “какааая архитектура в ондроид”)

их тут действительно много

С одной этой подключенной библиотекой , проект уже использует примерно 30% от всего доступного места (если считать по количеству методов). Ради справедливости стоит отметить, что здесь подключен и Котлин являющийся де-юро (но пока далеко не де-факто) стандартом разработки под Андроид.

состоит из 11.000 методов

и некоторые из этих библиотек мне не нужны, к примеру фрагменты и все её дочерние 13 зависимостей. Вместо них я использую обычные (на примере Conductor) и кастомный роутинг (на примере Cicreone). Давайте посмотрим, сколько места нам удасться сэкономить если мы их отключим:

для этого мы ищем название пакета, которое использует модуль с support-fragment

Согласно dex-count наши фрагменты занимают 1740 методов.

1740 это не хило. Значит уже не экономим на спичках

Отключаем их простой командой из gradle

implementation('com.android.support:appcompat-v7:27.1.0') {    exclude group: 'com.android.support', module: 'support-fragment'}

пытемся собрать и огосподи ! Что же могло пойти не так?

Давайте глянем на логи и разберемся:

Supertypes of the following classes cannot be resolved. Please make sure you have the required dependencies in the classpath:class android.support.v7.app.AppCompatActivity, unresolved supertypes: android.support.v4.app.FragmentActivity

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

MainActivity -> v7.app.AppCompatActivity -> v4.app.FragmentActivity

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

Помимо этого, была замечена вот какая штука

v13 для библиотеки с якобы минимальной версией v7

Обратившись к документации мы видим очень явную и понятную строчку, прочитав которую не было бы этой статьи, отнявшей у вас время:

Проверяем и убеждаемся

ContentManager

Многим приложениям приходится вытягивать фото или видео с гелереи или получать их с камеры (например, для аватарки). Это достаточно простая задача, но есть и некоторые нюансы. Во-первых, на некоторых девайсах Samsung и Sony присутствует баг, который мешает получить фото с камеры. А во-вторых, пользователь может выбрать фото не из галереи устройства, а из Google Фото или другого облака. В библиотеке ContentManager эти ситуации учтены.

Как и SocialAuthHelper, библиотека ContentManager будет полезна широкому спектру приложений, ведь сейчас пользователи часто хранят фото и видео в облаке в качестве резервной копии или просто чтобы синхронизировать их между несколькими устройствами. А еще вам не нужно будет каждый раз писать костыли для Samsung и Sony :)

Библиотека Swipeable-button для Android

Иногда на проектах необходимо удостовериться в том, что юзер осознанно делает какое-то действие. Обычно для таких вещей используют подтверждение в формате диалога, но есть и другие способы. К примеру, можно использовать кнопку, переключение которой будет происходить, только если потянуть за переключатель. К сожалению, из коробки такого решения нет.

Особенности:

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

Библиотека Swipeable-button для Android и вся документация по ней доступны на нашем GitHub’е.

Нужен MVP, разработка под iOS, Android или прототип приложения? Ознакомьтесь с нашим портфолио и сделайте заказ уже сегодня!

Понравилась статья? Поделиться с друзьями:
Tehnik Shop
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: