Разработка под android

Содержание

Установка Android Studio на компьютер

В этом курсе мы создадим приложение Android на языке Kotlin, используя официальную среду разработки Android Studio.  Android Studio — это IDE, созданная на базе программного обеспечения IntelliJ IDEA от JetBrains специально для разработки Android-приложений. Для создания приложений в Kotlin необходимо установить Android Studio 3.0 или более поздней версии.


Среда Android Studio доступна для компьютеров под управлением Windows, Mac и Linux. Установка практически аналогична для всех платформ. Некоторые различия описаны в подробной инструкции по установке на нашем сайте fandroid.info.

Примечание: Последние сведения о системных требованиях и инструкциях по установке содержатся в официальной документации на сайте developer.android.com/studio.

Если вы используете компьютер, на котором уже установлена ​​Android Studio версии 3.0 и выше, переходите к следующему уроку, в котором мы создадим первый проект.

Android Studio использует инструменты Java Develipment Kit в работе. До недавнего времени перед установкой Android Studio нужно было скачать и установить JDK версии 7 или 8 с официального сайта Oracle. Сейчас такой необходимости нет, поскольку Android Studio уже содержит встроенный пакет инструментов JDK.

Если вам необходимо установить официальный JDK, следуйте инструкции  Установка JDK  (Java Development Kit) на нашем сайте fandroid.info, ссылка под видео.

Установка Android Studio

  1. Откройте страницу загрузки Android Studio на официальном сайте https://developer.android.com/studio/index.html

На данный момент доступна для загрузки версия Android Studio 3.0.

Скачайте дистрибутив для вашей операционной системы

В процессе скачивания можно ознакомится с видео инструкциями по установке Android Studio для вашей операционной системы.

  1. Запустите дистрибутив для установки
  • Примите настройки по умолчанию для всех шагов.
  • Убедитесь, что выбраны все компоненты для установки
  1. После завершения установки Мастер установки загружает и устанавливает дополнительные компоненты. Будьте терпеливы, потому что это может занять некоторое время в зависимости от скорости вашего интернет-соединения.
  2. После завершения загрузки Android Studio запускается, и вы готовы к созданию первого проекта.

К созданию проекта мы перейдем в следующем уроке, а пока на стартовом экране откройте в меню Configure> SDK Manager, который управляет всеми установленными компонентами среды разработки.

На вкладке SDK Platforms можно увидеть, что загружена только последняя версия Android.  Нужно пометить для загрузки несколько последних версий, самых популярных на текущий момент, и скачать их. Процесс загрузки и распаковки происходит автоматически, вам следует только набраться терпения и дождаться его окончания. После окончания установки вы увидите в окне SDK Manager, что выбранные компоненты помечены как загруженные.

Самые популярные версии Android на текущий момент можно посмотреть в статистике на официальном сайте https://developer.android.com/about/dashboards/index.html

Возможные проблемы: Если имя пользователя ПК в Windows написано кириллицей, то Android Studio не будет правильно работать, поскольку среда разработки не читает кириллицу в пути к файлам. Переименуйте пользователя английскими буквами.

На этом наш урок подошел к завершению. А на следующем уроке мы создадим проект в среде разработки Android Studio и запустим первое приложение на андроид-устройстве.

Новый диалог Project Structure

  • новый Project Structure диалог (PSD) облегчает обновление зависимостей и конфигурирование различных аспектов вашего проекта, например модулей, вариантов сборки, конфигураций подписания и build-переменных
  • вы можете открыть PSD выбрав «File > Project Structure» в меню. Вы можете так же открыть PSD через Ctrl+Shift+Alt+S в Windows и Linux, или Command+; (точка с запятой) в macOS. Ниже приведено описание новшеств и обновлений PSD

Переменные

  • раздел позволяет создавать и управлять build-переменными, например задать какая должна быть версия соответствующих зависимостей для всего проекта

    • быстрый обзор и редактирование build-переменных, уже существующих в Gradle build скриптах вашего проекта
    • добавление новых build-переменных на project- или modul-уровень напрямую из Project Structure диалога
    • ПРИМЕЧАНИЕ: если существующие build configuration файлы задают значения через сложные Groovy скрипты, вам может быть недоступно редактирование этих значений через Project Structure диалог. Кроме того, вы не можете редактировать build-файлы написанные на Kotlin используя Project Structure диалог

Зависимости

  • инспектируйте и просматривайте каждую зависимость графа зависимостей вашего проекта, построенного Gradle при синхронизации проекта, следуя следующим шагам:

    1. на левой панели PSD, выберите «Dependencies»
    2. на панели «Modules» выберите модуль для которого вы хотели бы посмотреть зависимости
    3. в правой части PSD откройте панель «Resolved Dependencies» как показано ниже
  • вы можете так же быстро найти и добавить зависимости в ваш проект, выбрав модуль и нажав кнопку «+» в разделе «Declared Dependencies», и затем выбрав тип зависимости которую вы хотите добавить

  • в зависимости от типа выбранной вами зависимости, вы должны увидеть диалог подобный показанному ниже, помогающий вам добавить зависимость в модуль

Третий курс (закрытая зона)

  1. Обои главного экрана (Wallpaper)
  2. Кто сказал Мяу? — используем технологии преобразования текста в речь
  3. Всё, что вы хотели знать о приложениях, но боялись спросить
  4. Считываем штрих-код
  5. Миниатюры
  6. Работаем с данными JSON
  7. Акселерометр
  8. Работаем с системным приложением Галерея
  9. ListFragment. Продолжение знакомства
  10. Собери кота из фрагментов
  11. ActionBar
  12. ShareActionProvider
  13. Пропал котёнок? Поиск в ActionBar
  14. ActionMode — режим контекстных действий
  15. Чтение и запись файлов
  16. Карманный фонарик
  17. Обратный отсчёт — варим яйца
  18. Google Maps Android API v2. Продвинутые приёмы
  19. Google Maps Android API v2. StreetView
  20. Google Maps. Расширенные настройки (Kotlin)
  21. Проект «Попугай» — слушаем и повторяем. Распознавание речи
  22. Intent.ACTION_SEND. Пришли фотку
  23. Всплывающее окно PopupWindow
  24. Контакт? Есть контакт!
  25. ContactsContract. Обращение к базе данных контактов
  26. DownloadManager — менеджер загрузок
  27. Добавляем события в Календарь
  28. DialogFragment
  29. DatePickerDialog через DialogFragment
  30. TimePickerDialog через DialogFragment
  31. Секретный код
  32. Класс Application
  33. Продвинутое приложение с использованием ListView
  34. Компас
  35. Работаем с буфером обмена
  36. MediaPlayer (Kotlin)

R8 включён по умолчанию

  • R8 объединяет desugaring, сжатие, обфускацию, оптимизацию и dexing в один шаг, что даёт заметное улучшение производительности. R8 был введён в Android Gradle plugin 3.3.0 и теперь включён по умолчанию и для приложения и для Android library проектов, использующих плагин версии 3.4.0 или выше

  • изображение ниже показывает в общих чертах процесс компиляции до R8

  • теперь, с R8, desugaring, сжатие, обфускация, оптимизация и dexing (D8) выполняются за один шаг, как показано ниже

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


  • при возникновении проблем в использовании R8, прочтите R8 compatibility FAQ чтобы проверить нет ли готового решения. Если решение ещё не документировано, пожалуйства сообщите о баге. Вы можете отключить R8 через добавление одной из следующих инструкций в файл gradle.properties вашего проекта:

    <i>#отключение R8 только для Android Library модулей</i>
    android.enableR8.libraries = false</p>
    <p><i>#отключение R8 для всех модулей</i>
    android.enableR8 = false
    
  • ПРИМЕЧАНИЕ: для указанного типа сборки, если вы зададите false для useProguard в файле build.gradle вашего app-модуля, Android Gradle plugin будет использовать R8 для сжатия кода приложения для этого типа сборки, вне зависимости отключен ли R8 в файле gradle.properties вашего проекта

Пример для Java

Примечание: Для примера на Java — Там же в окне свойств у ImageButton находим свойство onClick и вручную прописываем onClick — это будет именем метода для обработки нажатия на кнопку. Вы можете придумать и другое имя, например, onButtonPressed. Для Kotlin можно не использовать эту конструкцию.

В текстовом режиме установите курсор мыши внутри текста «onClick» у кнопки и нажмите комбинацию Alt+Enter

В всплывающем окне выберите вариант Create ‘onClick(View)’ in ‘MainActivity’.

В коде класса MainActivity появится заготовка для обработки щелчка кнопки.

Раз уж у нас теперь открыт файл MainActivity.java, то продолжим теперь работу в нём. Так как мы собираемся менять текст в текстовой метке, необходимо прописать данный элемент в коде. До метода onCreate() наберите строчку:

Мы объявили переменную типа TextView под именем mHelloTextView.

Если вы набирали вручную и при подсказках использовали клавишу Enter, то класс TextView автоматически импортируется и запись появится в секции import. Если вы просто копируете текст с сайта, то студия подчеркнёт название класса TextView и предложит импортировать его вручную.

Далее внутри метода onCreate() после вызова метода setContentView() добавьте строку:

Избегайте соблазна скопировать строку с сайта и вставить в код, пишите самостоятельно и активно используйте автозавершение (Ctrl+Пробел) при наборе слов. Студия часто сама активно помогает подсказками. Теперь система знает о существовании элемента TextView, и мы можем к нему обращаться для изменения различных свойств, например, поменять текст.

В старых примерах вам может встретиться вариант со скобками.

Если вы используете компилятор compileSdkVersion 26 и выше, то скобки с названием компонента можно опустить, так как изменилась сигнатура метода.

Эта возможность появилась совсем недавно, поэтому во всех старых примерах будет попадаться старый код. Можете сразу привыкать к новому способу, студия будет подсказывать о новом способе.

Переходим к заготовке для щелчка кнопки.

В следующих занятиях мы подробнее разберём работу с данным методом, пока просто пишем код между фигурными скобками:

Мы обращаемся к элементу mHelloTextView и через его метод setText() программно меняем текст на нужные слова.

Выполнить обновление системы и стандартных приложений

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

Действия для проверки наличия обновлений и их установки:

  1. Выйти в главное меню и открыть через него настройки.
  2. Зайти в раздел «система».
  3. Нажать на «дополнительные настройки» (в некоторых версиях Android данный раздел может быть заменён на раздел «о системе»).
  4. На экране отобразится информация о текущей операционной системе и о наличии обновлений. Если появится новая версия, нужно будет нажать на «обновить».

Обновить необходимо будет не только саму операционную систему, но и установленные приложения. Сделать это можно будет через магазин приложений Google Play.

Поднимемся на третий уровень!

Углубитесь в оптимизацию памяти с помощью Bitmap-средств

Узнайте и как использовать Glide для обработки bitmap-объектов в своем Android-приложении. Вы столкнетесь с проблемами при обработке тонн контента в приложении, которая потребует извлечения изображений, их декодирования и отображения bitmap-объектов. Если вы не научитесь делать это правильно, то ваше приложение не добьется успеха, поскольку пользователи могут решить, что оно недостаточно качественное.

Обратите внимание, что теперь вам нужно уметь обрабатывать до 48 Мб bitmap-объектов изображений с камеры, которые на сегодняшний день может выдать камера пользователя. Они с легкостью могут съесть всю доступную память

Компоненты архитектуры Android

Одна из самых главных вещей, которой я научился как Android-разработчик, был навык внедрения инновационных практик в архитектуры и их компоненты. Как только я начал выходить за рамки MVP, MVVM, MVx’s и т.д., я понял, что вокруг этих архитектурных компонентов есть огромное пространство для инноваций.


Например, еще в 2017 году настройки BLE(Bluetooth low energy) по умолчанию не соответствовали должному уровню. Понимание того, что этот архитектурный компонент можно улучшить путем создания промежуточной сервисной библиотеки, было для меня настоящим открытием.

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

  • Data Binding
  • Lifecycles
  • LiveData
  • Navigation
  • Paging
  • Room
  • ViewModel
  • WorkManager

Станьте профессионалом в тестировании

Вы же не хотите стать одним из тех разработчиков, которые в случае обнаружения ошибки говорят «на моей машине отлично работает», правда? Итак, основываясь на знании архитектуры вашего приложения и ее оптимизации, создайте юнит-тесты (JUnit4), узнайте, как пользоваться Espresso и сосредоточьтесь на отчетах о покрытии кода, которые восхитят ведущих разработчиков и VPE. Подумайте о том, как эти отчеты могут стать полезными для других разработчиков, тестировщиков, менеджеров или других заинтересованных сторон и помочь им разобраться с критическими проблемами производительности приложения и расставить приоритеты.

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

Реактивное программирование с RxJava

  • Грокаем RxJava Series
  • «Изучаем RxJava 2» Джейка Уортона
  • «Управление состоянием с помощью RxJava 2» Джейка Уортона

Они послужат хорошей отправной точкой на пути к освоению RxJava и его аспектов. Если вы хотите узнать больше о RxJava, обязательно ознакомьтесь с ними, а также изучите:

  1. Всю глубину Observables в RxJava;
  2. Реализацию кэширования в RxJava.

Узнайте все о Dagger

Следующие шаги помогут вам стать профи в Dagger:

  1. Просмотрите документацию и разберитесь до конца с процессом внедрения зависимостей;
  2. Составьте список ограничений;
  3. Создайте проект и используйте в нем Dagger 2.

Станьте специалистом в области безопасности

Профессиональный Android-разработчик и специалист в информационной безопасности? Вау! Такое нечасто в себе может совместить один человек!

А вот несколько вещей, с которыми вы можете ознакомиться в 2019 году, чтобы стать им:

  • Узнайте, как изолировать данные и код вашего приложения от других приложений;
  • Изучите криптографические функции и реализуйте их;
  • Научитесь уменьшать риски, связанные с ошибками управления памятью;
  • Узнайте, как оптимально использовать разрешения пользователя для управления данными приложения;
  • Безопасно храните и шифруйте данные в: локальном хранилище, «налету» или в облаке;
  • Станьте профессионалом в вопросах контент-провайдеров для обеспечения безопасного доступа;
  • Убедитесь, что вы прячете данные (имеется в виду обфускация);
  • Узнайте, как можно реализовать собственные решения в области безопасности, которые не являются частью основного стека Android;
  • Проведите аудит сторонних библиотек, чтобы разбить их по уровню уязвимостей и сформировать для себя документ-исследование, которое поможет в будущем;
  • Работайте над тем, чтобы сделать BLE более безопасным. На этом я закончу. Надеюсь, эта статья поможет вам стать профессиональным Android-разработчиком, если вы начнете заниматься этим прямо сейчас в 2019 году!

На этом все. Ждем ваши комментарии!

Пользовательский интерфейс игрового экрана (GameActivity)

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

Шаг за шагом:

Открываем вкладку activity_game.xml, если она еще не открыта. Вы также можете её найти в проводнике в папке layout»;

Добавьте три элемента TextView», как показано на скриншоте. Они должны быть на одной линии и находится друг от друга примерно на одинаковом расстоянии

На самом деле это не так важно. Просто так будет приятнее глазу:

Также обратите внимание, что в поле Component Tree все три объекта TextView появились и Android Studio автоматически присвоила им имена: textView, textView2, textView3:

Android Studio относится к этим именам элементов через их «id». Это важная составляющая, которой мы и будем пользоваться. Чтобы удостовериться в этом выберите в дереве компонентов или же в самом окне графического редактора один из трёх элементов, кликнув по нему. Теперь на экране справа откроется окно свойств данного элемента, в котором помимо прочего будет поле «id»:

Через ID мы будем взаимодействовать с пользовательским интерфейсом через Java код. Так что для нашего же удобства поменяем названия этих ID на что-нибудь более запоминаемое.

Бросив взгляд на то, что у нас должно получиться в итоге заметим, что TextView, который находится слева (его id на данный момент textView) должен выводить на экран число. Поменяем его ID на textPartA»

Обратите внимание на именование этой переменной, а точнее на маленькую t» в начале, большую P» в середине и большую A» в конце. В принципе вы можете использовать любую комбинацию символов для имени любых переменных, но мы будем придерживаться «международного соглашения» об именовании переменных(«верблюжийРегистр»). Теперь выберите textView2 и поменяйте его на textOperator». Выберите элемент с id textView3 и поменяйте его на textPartB». Теперь добавьте еще один TextView элемент на нашу форму, примерно по середине экрана

Этот элемент будет выводить на экран знак равенства «=» и по сути не выполняет никакой роли, кроме отображения, в связи с чем мы не будем с ним взаимодействовать в нашем коде и не будем менять его id. Но это должен быть знак равенства, так что давайте зайдём в его свойства, кликнув по нему и в поле text» введите знак «=»:

Менять в изначально добавленных TextView элементах их свойство text» не имеет смысла, так как  мы это будем делать через Java код.

  • Теперь под знаком «=» добавьте в ряд три элемента Button;
  • Так же как и для элементов TextView поменяйте id элементов Button слева направо на эти имена: buttonChoice1, buttonChoice2, buttonChoice3;
  • Сохраните проект. Вид игрового экрана на данный момент должен выглядеть так:

Выглядит грубовато, не правда ли? Требуется немного отрегулировать размеры элементов. Сделаем это изменив для каждого элемента его свойство textSize»: тут потребуется включить ваши дизайнерские качества, попробуйте поиграйте с размером текста в этих элементах, а также в свойстве text» можете заменить то, что там сейчас находиться на предполагаемый текст, например, так:

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

Функционал эмулятора

другими эмуляторами

Android SDK может эмулировать не только саму операционную систему, но и «железо». На выбор доступно множество виртуальных устройств с поддержкой Андроида:

  1. Смартфоны;
  2. Планшеты;
  3. Телевизоры;
  4. Умные часы;
  5. Очки, шлемы дополненной и виртуальной реальности;
  6. Бортовые компьютеры автомобилей;
  7. Терминалы.

Также присутствует эмуляция различных технологий, например, Bluetooth, WiFi, 2G, 3G, Edge.

Встроенная среда разработки поддерживает написание кода программы с подсветкой синтаксиса и авто дополнением. Среди поддерживаемых языков программирования есть C, C++, Kotlin и Java. Можно одновременно скомпилировать несколько apk одного проекта, каждый для разного устройства и версии ОС. С помощью встроенного диспетчера можно отслеживать нагрузку эмулятора на систему.

Настройка Unity проекта

Настройки в Build Settings

  • В первую очередь, вы должны переключить Build System в “Gradle” и поставить галочку напротив “Export Project”. Таким образом мы получим готовый Android Studio проект, который мы и будем в дальнейшем профилировать. Профилирование готового APK тоже возможна, но более ограничена и требует больше подготовки
  • Режим “Development Build” желательно выключить, так как таким образом получаемые тайминги в профайлере будут максимально близки к реальным

Настройки в Player Settings

  • Установите Scripting Backend в IL2CPP. Если оставить Mono, то при нативном профилировании мы увидим много функций Mono, без информации как они соотносятся с C# кодом.
  • Опция ‘C++ Compiler Configuration’ для Android ни на что не влияет (в Unity 2018.3). Можете поставить её в ‘Release’, возможно в будущих версиях Unity Android toolchain эта настройка будет влиять на настройки компилятора.
  • Желательно ограничить ‘Target Architecture’ до ARMv7. Так вы сэкономите на времени компиляции и по опыту множество архитектур иногда вводит Android Studio в ступор.
  • Также стоит установить ряд дополнительных настроек:
    • Install Location — ‘Prefer external’
    • Internet Access — ‘Require’
    • Write Permission — ‘External (SDCard)’
    Android Studio и другие профайлеры используют simpleperf для сбора статистики, и ему потребуется доступ к карте памяти для записи временных файлов.

Хранение и использование информации с помощью переменных


Представим переменную в виде отмаркированной коробки, хранящей в памяти какую-то информацию и готовую в любой момент быть вызванной или изменённой. Память девайса – это сложная система адресаций, с которой нам, к счастью, не придётся взаимодействовать напрямую (но если вы решите связать свою жизнь в дальнейшем с программированием, то высока вероятность, что хотя бы поверхностно, но вам придётся изучить этот материал). Переменным в языке Java могут быть даны любые имена, сделано это для удобства программисту. Можем представить себя память любого устройства на ОС Android  в виде большого хранилища. Когда мы даём (назначаем) имя нашим переменным, они попадают в это хранилище и ждут своего часа. Когда нам нужно использовать переменную, девайс прекрасно понимает к какой из них ему нужно сослаться для выполнения определённого действия. Например «возьми коробку A и прибавь к ней коробку B, удали коробку C» и т.д. В нашем приложении, к примеру, будет переменная «score» и к ней будут применены такие операции, как сложение, вычитание и вывод на экран. Выбор имени переменной абсолютно произволен, но для удобства разумнее подбирать имя к переменной, подходящее по смыслу её назначения в программе, например «highScore» — сразу понятно, что это наивысший результат. Так же существует такое понятие, как «верблюжийРегистр» — это стиль написания переменных или функций и т.д. в языке Java и не только. Принято это всё так же для удобного чтения чужого кода. Примеры наименований переменных:

  • score
  • highScore
  • playersPersonalBest

Думаю, с этим разобрались. Теперь перейдём к типам данных.

Инициализация

Теперь для каждой из объявленной переменной мы инициализируем значение:

score = 0;
millisecondsElapsed = 1406879842000;//1st Aug 2014 08:57:22
gravity = 1.256;
double accurateGravity =1.256098;
isAlive = true;
playerInitial = 'C';
playerName = "Charles Babbage";

Обратите внимание на то, что переменная типа char» обрамляется одиночными кавычками(‘C’), в то время как переменная типа String» — двойными (“Charles Babbage”). Также можно объявлять и инициализировать переменную в одной строке, например:

int score = 0;
long millisecondsElapsed = 1406879842000;//1st Aug 2014 08:57:22
float gravity = 1.256;
double accurateGravity =1.256098;
boolean isAlive = true;
char playerInitial = 'C';
String playerName = "Charles Babbage";

Системные требования Android SDK

Для Windows официальные системные требования следующие:

  • ОС Windows 7/8/10;
  • Минимум 3 ГБ оперативной памяти для запуска, 8 ГБ рекомендовано;
  • Дополнительно 1 ГБ свободной оперативной памяти для эмуляции и тестирования работы приложений;
  • Минимум 2 ГБ свободного места на диске для установки, рекомендуется 4 ГБ для создания файла подкачки;
  • Монитор с разрешением 1280 x 800 или выше.

Версии для Mac и Linux предъявляют почти аналогичные требования к аппаратной части компьютера, но имеют свои отличия в программной части. Mac:

  • Mac OS X 10.10 (Yosemite) или новее, но не выше 10.13 (macOS High Sierra);
  • 1.5 ГБ свободного места для установки эмулятора;
  • 500 МБ на диске для интегрированной среды разработки (опционально).

Официально версия Linux тестировалась на Ubuntu 14.04. Имеет следующие требования:

  • Графическая оболочка GNOME или KDE;
  • Библиотека GNU C (glibc) 2.19 или новее.

Новый ‘менеджер ресурсов’

  • ‘менеджер ресурсов’ (‘Resource Manager’) это новый инструмент для импорта, создания, управления и использования ресурсов вашего приложения. Вы можете открыть этот инструмент через меню «View > Tool Windows > Resource Manager». ‘Менеджер ресурсов’ позволяет вам делать следующее:

    • Визуализировать ресурсы: вы можете предпросматривать drawables, цвета и layouts для быстрого поиска нужного ресурса
    • Массовый импорт: вы можете импортировать несколько drawable assets за раз просто перетащив их в ‘менеджер ресурсов’ или через мастер «Import drawables». Для доступа к мастеру нажмите кнопку «+» в левом верхнем углу окна и затем выберите «Import Drawables» из выпадающего списка
    • Конвертация SVG-файлов в объекты VectorDrawables: вы можете использовать мастер «Import Drawables» для конвертации ваших SVG изображений в объекты VerctorDrawables
    • Drag&Drop assets: из окна ‘менеджера ресурсов’ вы можете перетаскивать drawables в ваш дизайн и в XML виджеты редактора размещений (‘Layout Editor’)
    • Альтернативные версии виджетов: теперь вы можете иметь альтернативные версии ваших ресурсов через двойной клик на ресурсе в окне «Tool». Будут видны различные созданные вами версии и какие они содежат квалификаторы
    • Отображение плиткой или списком: вы можете изменять отображение в окне визуализации ваших ресурсов используя разное их размещение
  • для большей информации обратитесь к руководству Manage app resources

Известные особенности

  • Наиболее стабильные результаты можно получить на root-ованных девайсах
  • Не используйте Samsung-и, на них есть множество защитных наворотов, которые мешают отладке
  • Во множестве мест ваш колстэк будет уходить в функции вида ‘kernel.kptr + адрес’. Это вызовы внутри Android Kernel, которые защищены из-за политики безопасности. На рутованном устройстве защиту можно отключить:
    • Запустите `adb shell`
    • Запустите `su` чтобы получить права root-пользователя
    • Выполните ‘sysctl -w kernel.kptr_restrict=0’ — это снимет защите с kernel-а
    • После окончания отладки, выполните ‘sysctl -w kernel.kptr_restrict=1’. Некоторые устройства иначе при перезагрузке не смогут загрузить OS. Во многих случаях лечится только перепрошивкой чистого ядра.
  • Если Android Studio часто падает, можно попробовать увеличить heap Java VM:
    • 2Gb — для проектов среднего размера (‘-Xmx2g’)
    • 4Gb — для больших проектов (‘-Xmx4g’)
  • На нерутованных устройствах иногда улучшает ситуацию переключение ядра в ‘permissive mode’

Android Fragment Result Listener

Что такое Fragment result API? Это новый инструмент от Google который позволяет передавать данные между фрагментами по ключу. Для этого используется FragmentManager, который в свою очередь реализует интерфейс FragmentResultOwner. FragmentResultOwner выступает в качестве центрального хранилища для данных, которые мы передаем между фрагментами.

Как это работает?

Как упоминалось выше, наш FragmentManager реализует интерфейс FragmentResultOwner, который хранит в себе . Эта HashMap хранит наши Bundle-ы по строковому ключу. Как только один из фрагментов подписывается (или уже подписан) то он получает результат по тому самому ключу.

Как внедрить in-app подписки в Android-приложения: советы и рекомендации

С каждым годом требования к in-app подпискам в мобильных приложениях в App Store и Google Play меняются, становится все сложнее учесть их с первого раза и не получить серию реджектов, тем самым откладывая релиз порой на несколько месяцев. Если про требования для App Store уже достаточно много публикаций (см. здесь или здесь), то с правилами in-app подписок для Google Play все еще иногда возникают вопросы. Мы, команда из Центрального Маркетинга Mail.ru Group, решили разобраться в этом подробнее и поделиться рекомендациями по внедрению in-app подписок. По нашему наблюдению, нередко пользователи оставляют большое количество негативных отзывов (и, как следствие, у приложения снижается рейтинг), где уточняют будет ли списываться сумма за полную версию продукта ежемесячно или единоразово, как отменить подписку, в какой именно момент спишутся деньги, почему деньги продолжают списываться и другие подобные вопросы. А поддержка и вовсе иногда может не справляться с объемом запросов.

Build Variants

тестовоепроизводственноеfleka

  • finalProduction, который отправляется в Google Play Store.
  • demoProduction, то есть версия с URL-адресом production сервера с новыми функциями, которые всё ещё не находятся в Google Play Store. Наши клиенты могут установить эту версию рядом с Google Play, чтобы они могли протестировать ее и дать нам обратную связь.
  • demoTesting, то же самое, что и demoProduction с тестовым URL-адресом сервера.
  • mock, полезен для меня как для разработчика и дизайнера. Иногда у нас есть готовый дизайн, и наш API ещё не готов. Ожидание API, чтобы быть начать разработку — не решение. Этот вариант сборки снабжён поддельными данными, поэтому команда дизайнеров может проверить его и дать нам обратную связь. Очень полезно это не откладывать. Когда API уже готов, мы перемещаем нашу разработку в окружение demoTesting.

flavorDimensionразновидностиdemominApi23android {}

Sync NowBuild VariantsDebugReleasedemoProduction

Project Lombok

Сложный Java-код для Android-приложений часто может содержать много шаблонного кода (конструкторы, геттеры, сеттеры). Это может быть утомительно и трудно с точки зрения читабельности и поддержки кода. Project Lombok — это Java-библиотека, которая подключается к вашей IDE и генерирует этот шаблонный код за вас, сохраняя ваш код лаконичным и читабельным. Разница кода до и после может быть довольно ошеломляющей.

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

Установка Android Studio

Для установки Android Studio в Linux вы можете использовать репозитории PPA или установщик из официального сайта, в Windows доступен полноценный установщик. Мы уже рассматривали как установить Android Studio Ubuntu в отдельной статье. Настройка android studio перед запуском практически не нужна. Но если вы хотите использовать реальное устройство Android, то в Linux с этим могут возникнуть проблемы. Чтобы их избежать нужно создать файл /etc/udev/rules.d/51-android.rules с таким содержимым:

Здесь 0bb4 — это идентификатор производителя устройства, вы можете его узнать, выполнив lsusb:

Если не отображается, попробуйте выполнить adb devices. Когда установка будет завершена, вы сможете открыть программу из главного меню:

Домашний экран

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

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

Более того, достаточно изменений и во внешнем виде операционных систем. Android 4.4 использовала интерфейс Holo с обилием черного и серого фона, без единого стиля значков и с обилием острых краев. Android 10 основана на стиле Material со ставкой на светлый фон, иконками в едином стиле и скругленными углами.

Android Drawable Importer

Если вы собираетесь работать с drawable при разработке Android-приложения, то это именно тот плагин, о существовании которого вам следует знать.

Чтобы адаптировать ресурсы ко всем размерам и разрешениям экрана Android-устройств, в каждом Android-проекте есть папка drawable. Если вы были благословлены дизайнером из Рая, который предоставляет ресурсы, уже находящиеся в нужных папках с правильными именами, мы искренне завидуем вам. Но скорее всего, вам вряд ли так повезло, и вы сами переименовываете и перемещаете PNG-файлы в нужные папки.

Android Drawable Importer — это плагин, который сэкономит вам массу времени. Он позволяет импортировать отдельные ресурсы для регулирования под необходимые размеры и разрешения, целые zip-файлы для автоматического размещения в необходимые папки.


С этим читают