Android СДК: особенности и характеристики
Разработка мобильного software требует от программиста определенных навыков и знаний. Пользователь должен понимать не только язык программирования, но и определенные среды для написания ПО.
Согласно Google, огромной популярностью пользуется Андроид. Это – база, которая используется в большинстве телефонов и планшетов. Преимущества соответствующей операционной системы неоспоримы – пользователю доступно огромное количество контента (включая бесплатное ПО), ОС оснащена хорошим уровнем безопасности, постоянно поддерживается и совершенствуется.
В данной статье будет рассказано об Android SDK. Описание соответствующего компонента удастся обнаружить и в Google. Предложенная информация поможет преимущественно новичкам. Опытные разработчики мобильных приложений должны с легкостью использовать указанный инструмент для работы.
Краткое описание
Android SDK – это одно из средств разработки ПО для Андроида. Включает в себя не только среду программирования, но и специализированный эмулятор.
Представляет собой набор инструментов разработчика Android приложений. Включает в себя компоненты, которые пригодятся при написании иного ПО. Пример – Fastboot или ADB, которые потребуются для прямого взаимодействия с устройством опытным юзером.
Ключевые сферы применения
А вот несколько ключевых направлений, в которых можно использовать SDK:
- тестинг и отладка программного обеспечения;
- обеспечение прав типа root;
- копирование файлов;
- создание резервных копий;
- разблокировка загрузчика;
- прошивка разделов, включая recovery.
Самое главное применение Android Studio – это написание программного обеспечения для Андроида. Это – основное из средств разработки для программиста. В Google удастся отыскать разнообразные области применения соответствующего SDK.
Подготовка в работе
Описание среды разработки – это только начало. Перед тем, как создавать ПО для мобильных устройств, требуется сначала обеспечить на компьютере рассматриваемое приложение. Подготовку к коддингу условно можно разбить на несколько этапов.
Скачивание
Первый шаг – это скачивание SDK. Отыскать ссылку можно через Google. Среда с инструментами включена в Android Studio. Нет никакой необходимости устанавливать его полностью. Можно остановиться только на SDK.
То же самое касается инструментов ADB и FastBoot. Через Google удастся обнаружить исключительно средства программирования, которые необходимы конкретному разработчику.
Инициализация
Второй шаг после загрузки – это установка Android SDK. Подойти к этому моменту можно несколькими способами:
- Установка Android Studio. Сразу после этого остается открыть панель конфигурации и загрузить желаемый инструментарий.
- Скачивание и инициализация только конкретных средств SDK от Android Studio. Здесь тоже на помощь придет Google или любой другой поисковик.
- Получение инструментов командной строки на странице загрузки через официальный сайт. Достаточно кликнуть по кнопке Download Options, опуститься вниз, выбрать архив для той или иной операционной системы.
При последнем варианте не нужно проводить никакой инициализации SDK. Скачав архив и распаковав его, пользователь получит возможность задействования инструментария при коддинге.
Интерфейс
У SDK регулярно выходят новые версии, которые предусматривают определенные изменения. Поэтому сначала необходимо рассмотреть ключевые моменты среды.
SDK, согласно Google, обладает настраиваемым интерфейсом. Это значит, что каждый программер способен располагать элементы утилиты по собственному усмотрению. А еще – выбирать цвет оформления.
Интерфейс SDK предусматривает:
- кнопки, отвечающие за открытие и сохранение проектов;
- переходы пошагового типа;
- масштабирование окон;
- выбор apk файлов;
- возможность выбора эмулируемого железа и версии операционной системы;
- запуск и паузу эмуляции;
- настройки;
- меню помощи.
При помощи параметров удается даже откатить изменения, вернув первоначальное расположение элементов среды.
Требования к системе
Перед тем, как установить SDK, нужно уточнить системные требования программного обеспечения. Их успешно удается обнаружить через Google.
Чтобы не терять время, стоит обратить внимание на следующие «запросы»:
- Windows 7 и новее;
- оперативная память – от 3 ГБ (рекомендуется – 8 ГБ);
- свободное пространство на жестком диске для эмуляции – 1 ГБ;
- место на ЖД для приложения – 2 ГБ (лучше – 4 ГБ);
- разрешение экрана – 1 280 на 800 точек.
Для MacOS SDK тоже подойдет. Основная масса требований будет аналогична. А вот различия:
- MacOS X от 10.10, но не выше 10.13;
- 1.5 ГБ пространства для эмулирования;
- 500 МБ пространства для среды разработки.
У Линукса тестинг проводился на Ubuntu 14.04. Требования в данном случае будут – это графическая оболочка GNOME или KDE, а также наличие библиотеки GNU C (glibc) от 2.19 версии.
Стоит обратить внимание на то, что, согласно данным Google, эмулятор будет хорошо функционировать и на 32-разрядных системах, и на 64-битных.
О производительности
Android SDK – это точное программное обеспечение. Но в Google есть информация о том, что производительность оставляет желать лучшего. Требования к используемому устройству у такой среды выше.
Среди остальных моментов, на которые необходимо обратить внимание, выделяют:
- отсутствие русского языка (и туториалы в Google тоже на иностранном);
- нестабильная работа на XP, а также старых версиях MacOS X;
- не функционирует на процессорах, у которых нет поддержки визуализации.
Но Android SDK, согласно Google, все равно пользуется спросом. Преимуществ у него среди конкурентов тоже немало.
Сильные стороны
Из общей массы SDKs, если верить Google, проект выделяется:
- стабильностью;
- официальной поддержкой;
- относительно высокой производительностью;
- подробной документацией и туториалами (их больше, чем для любого другого development kit);
- открытым исходным кодом;
- поддержкой стандартов GSM-телефонии;
- встроенным файловым менеджером.
Через Android SDK можно тестировать программы для мобильной платформы, а также использовать виртуальные машины. Google указывает на то, что это – один из самых функциональных инструментариев для разработчиков. Android SDK подойдет не только новичкам (они могут остановиться на более простых аналогах), но и опытным разработчикам.
Передовой опыт Android-разработки
Нам бы хотелось поделиться с вами опытом, который мы, в Futurice, получили, разрабатывая Android-приложения. Надеемся, эти советы уберегут вас от создания собственных велосипедов. Если вы интересуетесь iOS или Windows Phone разработкой, обратите внимание на соответствующие документы на нашем сайте.
Коротко о главном
- Используйте систему сборки Gradle и стандартную структуру проекта
- Храните пароли и другие важные данные в файле gradle.properties
- Не пишите свой собственный HTTP-клиент, лучше используйте библиотеки Volley или OkHttp
- Используйте библиотеку Jackson для парсинга данных в формате JSON
- Избегайте использовать Guava и вообще экономьте — старайтесь не превысить ограничение в 65k методов
- Используйте фрагменты для отображение пользовательского интерфейса
- Используйте activity только для управления фрагментами
- XML-разметка — это код, пишите его аккуратно
- Используйте стили, чтобы не дублировать атрибуты в XML-разметке
- Лучше несколько файлов со стилями, чем один здоровенный, который будет сложно читать
- Старайтесь избегать дублей в colors.xml и сделать его покороче — в основном для хранения цветовой палитры
- То же касается dimens.xml, определите там только основные константы
- Не делайте слишком глубокую иерархию элементов ViewGroup
- Избегайте отработки на клиентской стороне при использовании WebView, будьте внимательны к возможным утечкам
- Используйте Robolectric для unit-тестирования, а Robotium для тестирования UI
- Используйте Genymotion в качестве эмулятора
- Всегда используйте ProGuard или DexGuard
Android SDK
Поместите ваш Android SDK в домашнюю директорию или другое место, не связанное с приложением. Некоторые IDE ставятся вместе с SDK, и могут устанавливать его в свою директорию. Это может помешать при обновлении (или переустановке) IDE, или когда вы перейдёте на другую IDE. Избегайте установки SDK в другую системную директорию, поскольку это может потребовать административных привилегий, если ваша IDE запускается с правами пользователя, а не администратора.
Система сборки
Выбором по умолчанию должен быть Gradle. Ant гораздо скромнее по возможностям, и к тому же его инструкции менее компактны. С помощью Gradle вы легко сможете:
- Создавать различные варианты и сборки вашего приложения
- Создавать простые задачи в виде скрипта
- Управлять зависимостями и автоматически загружать их
- Настраивать хранилище ключей
- И многие другие полезные вещи
Структура проекта
Есть два распространённых варианта: старая Ant & Eclipse ADT структура проекта — либо новая Gradle & Android Studio. Лучше выбрать второй вариант. Если ваш проект использует старую структуру, рекомендуем её портировать.
Основное отличие заключается в том, что новая структура явным образом разделяет ‘наборы ресурсов’ ( main , androidTest ), это одна из концепций Gradle. Вы можете, к примеру, добавить папки ‘paid’ и ‘free’ в вашу папку ‘src’, и они будут содержать исходный код для платной и бесплатной версий вашего приложения.
Наличие папки приложения app на верхнем уровне иерархии помогает отделить его от библиотек (например, library-foobar ), которые приложение использует. Файл settings.gradle в таком случае хранит список этих библиотечных проектов, на которые может ссылаться app/build.gradle .
Конфигурация Gradle
Маленькие задачи сборки. В отличие от других скриптовых языков (shell, Python, Perl, и т.д.), вы можете создавать задачи сборки в Gradle. Подробности смотрите в документации Gradle.
Пароли. В файле вашего приложения build.gradle вам нужно определить параметры подписи ( signingConfigs ) для релизной сборки. Следует избегать такой ошибки:
Не делайте так. Эта информация появится в системе контроля версий.
Правильнее будет создать файл gradle.properties , который не будет добавлен под управление системы контроля версий:
Эти данные автоматически импортируются в gradle, и вы сможете использовать их в build.gradle следующим образом:
Старайтесь использовать зависимости Maven, а не импортировать jar-файлы. Если вы включаете внешние jar-файлы в ваш проект, они будут законсервированы в той версии, при которой происходил импорт, например 2.1.1. Ручная загрузка jar-файлов и их обновление — достаточно трудоёмкая операция, и Maven может отлично решить эту проблему за нас, включив результат в сборку. Например:
Избегайте использования динамических зависимостей Maven Избегайте указания динамически формируемых версий, например 2.1.+ , так как это может привести к нестабильности сборок, зависящих от неконтролируемых отличий взаимодействия различных версий библиотек. Использование статических номеров версий, например, 2.1.1 , поможет создать более стабильные сборки с предсказуемым поведением.
Среда разработки (IDE) и текстовый редактор
Используйте любой редактор, который вам нравится, но он должен быть хорошо совместим со структурой проекта. Редактор — это ваш личный выбор, и вы должны выбрать такой, с которым будет удобно работать в рамках вашей структуры проекта и системы сборки.
Самая популярная IDE на данный момент — Android Studio, поскольку она разрабатывается Google, интегрирована с Gradle, использует новую структуру проекта по умолчанию, находится в состоянии стабильной сборки и заточена под Android-разработку.
Вы можете использовать Eclipse ADT, если он вам нравится, но его придётся настраивать, поскольку он по умолчанию работает со старой структурой проекта и системой сборки Ant. Вы можете даже использовать текстовые редакторы Vim, Sublime Text, или Emacs. В этом случае вам придётся использовать Gradle и adb из командной строки. Если вам не удастся подружить Eclipse с Gradle, вам тоже придётся использовать для сборки командную строку. Учитывая то, что ADT plugin недавно был объявлен устаревшим, лучше просто перейти на Android Studio.
Что бы вы не использовали, имейте в виду, что Gradle и новая структура проекта являются официально рекомендованным способом сборки приложений, и не добавляйте ваши редакторо-зависимые конфигурационные файлы в систему контроля версий. Например, не добавляйте файл Ant build.xml . Также не забывайте обновлять build.gradle , когда вы меняете конфигурацию сборки в Ant. В общем, не заставляйте других разработчиков использовать непривычные им инструменты.
Библиотеки
Jackson — библиотека Java для конвертации объектов в JSON и наоборот. Gson — самый распространённый способ решения этой задачи, но по нашим наблюдениям Jackson более производителен, поскольку он поддерживает альтернативные способы обработки JSON: потоковый, модель дерева в оперативной памяти, и традиционную связь форматов JSON-POJO. Имейте в виду, однако, что Jackson по размеру больше чем GSON, так что возможно, вы предпочтёте GSON для того чтобы избежать ограничения в 65k методов. Другие варианты: Json-smart и Boon JSON.
Работа с сетью, кэширование и картинки. Есть пара проверенных опытом решений для производительных запросов к backend-серверам, которые вам стоит рассмотреть перед разработкой вашего собственного клиента. Используйте Volley или Retrofit. Volley к тому же предоставляет средства загрузки и кэширования изображений. Если вы выберете Retrofit, возьмите Picasso для загрузки или кэширования изображений, и OkHttp для эффективных HTTP-запросов. Все эти библиотеки — Retrofit, Picasso и OkHttp разработаны одной компанией, так что они отлично дополняют друг друга. OkHttp также может быть использован с Volley.
RxJava — библиотека для Reactive Programming, другими словами, для обработки асинхронных событий. Это мощная и многообещающая концепция, которая может смутить своей необычностью. Мы рекомендуем хорошо подумать, перед тем как использовать эту библиотеку как фундамент архитектуры всего приложения. Есть проекты, созданные с использованием RxJava, и вы можете обратиться за помощью к однуму из этих людей: Timo Tuominen, Olli Salonen, Andre Medeiros, Mark Voit, Antti Lammi, Vera Izrailit, Juha Ristolainen. Мы писали несколько статей в наш блог по этому поводу: [1], [2], [3], [4].
Если вы раньше не работали с Rx, начните с использования API. Или вы можете начать с его применения для обработки простых событий пользовательского интерфейса, таких как нажатие или печать в поле поиска. Если вы уверены в ваших навыках использования Rx и хотите использовать его во всей архитектуре, напишите Javadocs касательно самых сложных моментов. Имейте в виду, что программист, не имеющий опыта использования RxJava, проклянёт вас может иметь большие проблемы при поддержке проекта. Постарайтесь помочь ему понять ваш код и Rx.
Retrolambda — это библиотека Java для использования лямбда-выражений в Android и других платформах с JDK ниже 8-ой версии. Она поможет вам сделать ваш код компактным и хорошо читаемым, особенно если вы используете функциональный стиль, например с RxJava. Для её использования, установите JDK8, укажите его в пути к SDK в Android Studio в диалоге описания структуры проекта, и установите переменные окружения JAVA8_HOME и JAVA7_HOME , после чего в корневом build.gradle проекта напишите:
и в файле build.gradle каждого модуля добавьте
Android Studio начнёт поддерживать синтаксис лямбда-выражений. Если вы раньше их не использовали, можете начать с осознания утверждений:
- Любой интерфейс с одним методом совместим с лямбда-выражениями и может быть упрощён в написании
- Если вам непонятно, как описать параметры, напишите обычный внутренний класс и позвольте Android Studio транслировать его в лямбда-выражение.
Activity и фрагменты
В сообществе Android-разработчиков (как и в Futurice) нет единого мнения по вопросу, как лучше всего построить архитектуру Android-приложения в плане использования фрагментов и activity. Square даже выпустила библиотеку для построения архитектуры в основном с помощью view, минимизировав таким образом необходимость фрагментов, но этот способ до сих пор не стал общепринятым.
Исходя из истории развития Android API, вы можете рассматривать фрагменты, как часть пользовательского интерфейса экрана. Другими словами, фрагменты обычно относятся к UI. Activity обычно рассматриваются как контроллеры, они особенно важны с точки зрения их жизненного цикла и для управлением состояниями. Однако, может быть и по-другому: activity могут исполнять функции, связанные с UI (переход состояний между экранами), а фрагменты могут быть использованы только как контроллеры. Мы бы советовали принимать взвешенное решение, имея в виду, что архитектура, базирующаяся на использовании только фрагментов, или только activity, или только view, может иметь ряд недостатков. Вот пара советов, на что стоит обратить внимание, но отнеситесь к ним критично:
- Избегайте интенсивного использования вложенных фрагментов (nested fragments), из-за возможности появления ошибок типа «матрёшка». Используйте вложенные фрагменты, только если это имеет смысл (например, фрагменты в прокручиваемом горизонтально ViewPager внутри фрагмента-экрана) или если вы хорошо понимаете, что делаете.
- Не помещайте слишком много кода в activity. Если это возможно, используйте их как лёгкие контейнеры, существующие в вашем приложении в основном для управления жизненным циклом и других важных функций интерфейса Android API. Activity с одним фрагментом лучше, чем просто activity — выносите код, относящийся к пользовательскому интерфейсу во фрагмент. Это сделает возможным его повторное использование в случае, если вам потребуется поместить его в разметку с табами, или на экран планшета с несколькими фрагментами. Избегайте создание activity без связанных фрагментов, кроме случаев, когда вы делаете это специально.
- Не стоит злоупотреблять API уровня Android, например, слепо полагаясь на механизм Intent для внутренней работы приложения. Вы можете повлиять на операционную систему Android или другие приложения, вызвав ошибки или зависания. Например, известно, что если ваше приложение использует механизм Intent для внутренней коммуникации между пакетами приложения, вы можете вызвать зависание в несколько секунд, если приложение было открыто сразу после загрузки операционной системы.
Архитектура пакетов Java
Архитектура Java для Android-приложений напоминает шаблон Model-View-Controller. В Android, фрагменты и activity представляют классы Conroller’а. С другой стороны, они являются частью пользовательского интерфейса, так что они также являются частью View.
Поэтому сложно отнести фрагменты (или activity) однозначно к Controller либо View. Лучше поместить их в собственный пакет fragments . Activity в этом случае можно оставить в пакете верхнего уровня. Если у вас больше двух-трёх activity, можно вынести их также в отдельный пакет.
С другой стороны, архитектура может выглядеть как обычный MVC, с пакетом models , содержащим объекты POJOs, генерируемые с помощью парсера JSON из ответов API, и пакетом views , содержащим авторские View, оповещения, классы View связанные с action bar, виджеты, и т.д. Адаптеры — это связывающее звено, находящееся между data и views. Учитывая то, что они обычно используют View, экспортируемые через метод getView() , вы можете включить адаптеры как дочерний пакет adapters во views .
Некоторые классы controller используются по всему приложению и работают напрямую с операционной системой Android. Их можно поместить в пакет managers . Различные классы для обработки данных, такие как «DateUtils», можно хранить в пакете utils . Классы, отвечающие за взаимодействие с backend, находятся в пакете network .
Все вышеперечисленные пакеты, в порядке от backend до пользовательского интерфейса:
Ресурсы
Именование. Следуйте конвенции об использовании типа объекта в качестве префикса имени файла, как в type_foo_bar.xml . Примеры: fragment_contact_details.xml , view_primary_button.xml , activity_main.xml .
Структура XML разметки. Если вы не уверены, как форматировать XML разметки, следующие советы могут помочь.
- Один атрибут на строку, с отступом в 4 пробела
- android:id всегда находится на первом месте
- android:layout_**** атрибуты в начале
- атрибут style на последнем месте
- Закрывающий тэг /> находится на своей строчке, для облегчения упорядочения и добавления атрибутов.
- Вместо написания вручную android:text , вы можете использовать Визуальный редактор атрибутов для Android Studio.
Как показывает опыт, атрибут android:layout_**** должен быть определён в XML разметки, а остальные атрибуты android:**** должны быть определены в XML стилей. У этого правила есть исключения, но в целом оно работает хорошо. Смысл в том, чтобы хранить только атрибуты разметки (позиция, поля, размер) и атрибуты контента в файле разметки, а детали отображения визуальных компонентов (цвета, отступы, шрифты) должны быть в файлах стилей.
- android:id конечно должен быть в файле разметки
- android:orientation для объекта LinearLayout обычно имеет смысл в файле разметки
- android:text должен быть в файле разметки, потому что он описывает контент
- Иногда имеет смысл определить в общем стиле android:layout_width и android:layout_height , но по умолчанию эти атрибуты должны находиться в файле разметки
Применимо к TextView:
Вам наверняка придётся сделать то же самое для кнопок, но не останавливайтесь на этом. Развивайте эти концепцию и выносите все группы повторяющихся атрибутов android:**** , относящихся к определённым видам визуальных компонент, в стили.
Разделяйте большой файл со стилями на несколько более маленьких. Нет необходимости хранить все стили в одном файле styles.xml . Android SDK по умолчанию поддерживает различные имена файлов, так что нет никаких проблем с именованием файлов со стилями — они всего лишь должны содержать XML-тэг «style». Так что вы можете создать файлы styles.xml , styles_home.xml , styles_item_details.xml , styles_forms.xml . В отличие от имён директорий, которые важны для системы сборки, имена файлов в res/values могут быть произвольными.
colors.xml это цветовая палитра. Не помещайте в colors.xml ничего, кроме связи названия цвета с его RGBA значением. Не используйте его для определения значений RGBA для разных типов кнопок.
При таком подходе очень просто создать дублирующие значений RGBA, да и цвета изменять гораздо сложнее. Кроме того, эти цвета относятся к определённому контенту, «button» или «comment», и должны быть описаны в стиле кнопки, а не в colors.xml .
Цветовую палитру определяет дизайнер приложения. Цвета не обязательно называть «green», «blue», и т.д. Названия вроде «brand_primary», «brand_secondary», «brand_negative» тоже вполне приемлемы. Такое форматирование цветов делает простым их изменение или рефакторинг, а также позволяет легко понять, сколько цветов используется. Для создания красивого пользовательского интерфейса, важно по возможности уменьшить количество используемых цветов.
Оформите dimens.xml как colors.xml. По той же причине, стоит так же определить «палитру» типичных размеров объектов и шрифтов.
Рекомендуем не писать числовые значения в повторяющихся атрибутах разметки (полях и отступах), а использовать константы вида spacing_**** (примерно так, как вы обычно делаете для локализиции строковых значений).
Это сделает разметку понятнее и позволит проще её изменять.
Используйте в именовании строк ключи, как в именовании пакетов — это позволит вам решить проблему с одинаковыми именами констант и лучше понимать контекст их использования.
Плохой пример
Хороший пример
Не пишите строковые значения строчными буквами. Вы можете использовать обычные преобразования текста (в том числе, преобразование первой буквы в прописную). Если потребуется написать всю строку строчными буквами — используйте атрибут textAllCaps объекта TextView.
Плохой пример
Хороший пример
Избегайте глубокой иерархии view. Иногда у вас будет соблазн добавить ещё один LinearLayout, для решения вашей задачи описания view.
Даже если вы не видите явно выросшую вложенность в файле разметки, она может возникнуть когда вы включаете (в Java) view в другие views.
Тут может возникнуть пара проблем. Вы можете получать проблемы с производительностью, поскольку процессор вынужден обрабатывать сложное описание дерева компонентов пользовательского интерфейса. Другая, более серьёзная проблема — это возможность возникновения ошибки StackOverflowError.
Так что постарайтесь сделать вашу иерархию view как можно более плоской: посмотрите как использовать RelativeLayout, как оптимизировать вашу разметку и использовать тэг .
Будьте внимательны при использовании WebView. Когда вам нужно показать web-страницу, например новостную статью, избегайте исполнения кода на клиентской стороне для формирования HTML, лучше попросите backend-программистов предоставить «чистый» HTML. WebView также могут вызывать утечку памяти при сохранении ссылки на Activity, к которой привязаны вместа ApplicationContext. Избегайте использования WebView для создания простого текста или кнопки, лучше используйте объекты TextView или Button.
Фреймворки для тестирования
Тестовый фреймворк Android SDK ещё находится в недоделанном состоянии (это они про Espresso 2.1 ?! — прим. пер.), особенно это касается тестов пользовательского интерфейса. Android Gradle по умолчанию содержит задачу connectedAndroidTest, которая запускает созданные вами тесты JUnit, используя расширение JUnit с утилитами Android. Это обозначает, что вам придётся запускать тесты на устройстве или эмуляторе. Используйте официальные инструкции [1] [2] для тестирования.
Используйте Robolectric только для unit-тестов, не для UI. Этот фреймворк предоставляет возможность для запуска тестов без устройства, для увеличения скорости их выполнения, и идеально подходит для unit-тестов моделей данных и view. Однако, пользовательский интерфейс Robolectric тестирует не полностью и неточно. У вас будут проблемы при тестировании элементов пользовательского интерфейса, относящихся к анимациям, диалогам, и т.д., и процесс тестирования будет проходить «с закрытыми глазами» (не видя экрана).
Robotium делает тестирование пользовательского интерфейса простым. Вы можете запускать UI-тесты без Robotium, но он очень полезен за счёт утилит для анализа view и контроля экрана. Сценарии тестирования будут выглядеть совсем просто:
Эмуляторы
Если вы занимаетесь Android-разработкой профессионально, купите лицензию на эмулятор Genymotion. Он работает быстрее, чем обычный AVD-эмулятор. Эмулятор Genymotion позволяет записать ролик, демонстрирующий работу вашего приложения, эмулирует различное качество сетевого соединения, сигналы GPS и многое другое. Он идеален для запуска тестов. У вас появится доступ к многим (хотя не ко всем) образам устройств с ОС Android, так что стоимость лицензии Genymotion гораздо дешевле, чем покупка множества устройств.
Подводные камни: Genymotion не позволяет использовать в приложении такие сервисы Google, как Google Play Store или Maps. И если вам понадобится протестировать функции API Samsung, вам придётся купить реальное устройство.
Конфигурация Proguard
ProGuard обычно используется в проектах Android для сжатия и обфускации кода.
Условия использования ProGuard зависят от настроек вашего проекта. Обычно вы настраиваете gradle использовать ProGuard для сборки релизной версии.
Чтобы указать, какой именно участок кода нуждается в обработке, вы должны отметить одну или несколько точек входа. Обычно это классы с основными методами, апплеты, мидлеты, активности, и т.д. Конфигурация по умолчанию, которую использует Android framework, находится по адресу SDK_HOME/tools/proguard/proguard-android.txt . Вы можете определить свои собственные правила для конфигурации ProGuard, поместив их в файл my-project/app/proguard-rules.pro , и они дополнят конфигурацию по умолчанию.
Самая распространённая проблема, связанная с ProGuard — падение приложения при запуске с ошибками ClassNotFoundException или NoSuchFieldException , даже если команда сборки проекта (например, assembleRelease ) отработала без ошибок. Это может означать одну из двух вещей:
- ProGuard удалил класс, enum, метод, поле или аннотацию, посчитав что она не нужна.
- ProGuard переименовал класс, enum или поле, но оно вызывается с использованием его старого имени, в том числе через механизм Java reflection.
Для того, чтобы защитить нужные классы и методу от удаления ProGuard’ом, добавьте в его конфигурацию опцию keep :
Для защиты от переименования используйте опцию keepnames :
Другие возможные модификации конфигурации ProGuard вы можете посмотреть в этом примере. Больше примеров конфигурации Proguard здесь.
В начале вашего проекта, создайте релизную сборку, чтобы проверить, что правила для ProGuard описаны корректно. При подключении новых библиотек, создайте релизную сборку и проверьте исполняемый файл на устройстве. Не ждите версии «1.0» для создания релизной сборки, иначе вы можете получить несколько неприятных сюрпризов в условиях нехватки времени на их исправление.
Совет. Сохраняйте файл mapping.txt для каждого релиза. Имея копию файла mapping.txt для каждой сборки, вы можете быть уверены что сможете найти проблему, кода пользователь поймает баг и пришлёт вам обфускированный лог ошибок.
DexGuard. Если вы хотите круто оптимизировать ваш код, и обфускировать его особым образом, попробуйте использовать DexGuard, коммерческий аналог ProGuard. Он может легко разделить Dex-файл на несколько для обхода ограничения в 65k методов.
Благодарности
Antti Lammi, Joni Karppinen, Peter Tackage, Timo Tuominen, Vera Izrailit, Vihtori Mäntylä, Mark Voit, Andre Medeiros, Paul Houghton и другим разработчикам Futurice за то, что они поделились своими знаниями в области Android.
What Is the Android SDK and How to Start Using It

Esther Vaati Last updated Jul 2, 2020
Android SDK is a software development kit developed by Google for the Android platform. The Android SDK allows you to create Android apps, and you don’t need to be an expert to use it. In this tutorial, I’ll explain what the Android SDK is and how to get started with it.
Android SDK comes bundled with Android Studio, Google’s official integrated development environment (IDE) for the Android operating system. You can learn about Android Studio and the Android App Development Kit in another of my articles.




In this post, we’ll look at:
- What is the Android SDK?
- How to install the Android SDK
- What is the Android SDK Manager?
- What are the components of the Android SDK?
What Is the Android SDK?


The Android SDK is a collection of software development tools and libraries required to develop Android applications. Every time Google releases a new version of Android or an update, a corresponding SDK is also released which developers must download and install. It is worth noting that you can also download and use the Android SDK independently of Android Studio, but typically you’ll be working through Android Studio for any Android development.
The Android SDK comprises all the tools necessary to code programs from scratch and even test them. These tools provide a smooth flow of the development process from developing and debugging, through to packaging.
The Android SDK is compatible with Windows, macOS, and Linux, so you can develop on any of those platforms.
How to Install the Android SDK
The Android SDK is optimized for Android Studio, and hence to effectively reap its benefits, you will need to install Android Studio. Having the Android SDK managed from within Android Studio is easier since support for languages like Java, Kotlin, and C++ is handled automatically. Not only that, but updates to the Android SDK are handled automatically by Android Studio.
To install the Android SDK from within Android Studio, first start Android Studio.
- From the Android Studio start page, select Configure > SDK Manager.
- If you already have Android Studio open, the SDK Manager icon is found on the top right corner, as shown below.
Install the required Android SDK platform packages and developer tools. A good start is to install:
- Android SDK Build-Tools
- Android Emulator
- Android SDK Platform-Tools
- Android SDK Tools
- Documentation for Android SDK
Click Apply, and Android Studio will install the selected tools and packages.
What Is the SDK Manager?
The Android SDK is composed of modular packages that you can download, install, and update separately using the Android SDK Manager. The SDK Manager helps to update new SDK releases and updates whenever a new Android platform is released. The SDK manager can be found in the top-right corner of the Android Studio screen, as shown below.


All that is required to follow the instructions provided, and the updates will be immediately downloaded to your environment.
What Are the Components of the Android SDK?
The Android SDK consists of an emulator, development tools, sample projects with source code, and the required libraries to build Android applications. Let’s look at the key components one by one.
Android SDK Tools
Android SDK Tools is a component of the Android SDK. It includes a complete set of development and debugging tools for Android, and is included with Android Studio. The SDK Tools also consist of testing tools and other utilities required to develop an app.
SDK Build Tools
Build tools are required for building components for building the actual binaries for your Android app. Always ensure your build tools component is up to date by downloading the latest version in the Android SDK Manager.
SDK Platform-Tools
Android Platform-Tools are used to support the features for the current Android platform and are necessary for Android app development. These tools interface with the Android platform on the device you use for testing. They include:
- Android Debug Bridge (adb): This is a handy command-line tool that lets you communicate with a device. The adb command allows you to perform device actions, such as installing and debugging apps. It also provides access to a Unix shell that you can use to run a variety of commands on a device.
- fastboot: This lets you flash a device with a new system image.
- systrace: This tool helps collect and inspect timing information across all processes running on your device at the system level. It’s crucial for debugging app performance.
SDK Platform-Tools are backward compatible, so you need only one version of the SDK Platform-Tools.
SDK Platform
For each version of Android, there’s one SDK Platform available. These are numbered according to the Android version (e.g. Android 7 Nougat) and an API version (e.g. API Level 24). Before you build an Android app, you must specify an SDK Platform as your build target. Newer SDK Platform versions have more features for developers, but older devices may not be compatible with the newer platform versions.
Google APIs
Google provides a number of exclusive Google APIs to make developing your app easier. They also offer a system image for the emulator so you can test your app using the Google APIs.
Android Emulator
The Android Emulator is a QEMU-based device-emulation tool that simulates Android devices on your computer, allowing developers to test applications on different devices and Android API levels, without needing to have physical devices for each. The emulator comes with configurations for various Android phones, tablets, Wear OS, and Android TV devices.
The Android emulator provides almost all of the capabilities of a real Android device. You can perform the following activities:
- simulate phone calls and text messages
- simulate different network speeds
- specify the location of the device
- simulate hardware sensors such as rotation
- access Google Play Store and much more
Often it is faster and easier to test your app with an emulator instead of using a physical device.
Conclusion
In this post, we looked at some of the basics of the Android SDK. The Android SDK is the only way to develop for Android devices. Fortunately, it contains extensive documentation, tutorials, samples, best practice guidance, and an array of tools for many different development tasks.
Premium Android App Templates From CodeCanyon
Android Studio comes with some default templates to help start an app, but these are very basic and provide minimal, generic functionality.
CodeCanyon is an online marketplace that has hundreds of additional templates, which are way more feature-rich and domain-specific too. You can save days, even months, of effort by using one of them.


An Android app template is a great way to jump-start your app project or to learn some new skills by exploring the source code of a professionally made app.
Начало работы с Android
Бурное развитие информационных технологий в последнее время привело к тому, что появилось много новых устройств и технологий, таких, как планшеты, смартфоны, нетбуки, другие гаджеты. Они все более прочно входят в нашу жизнь и становятся привычным делом. Лидирующей платформой среди подобных гаджетов на сегодняшний день является ОС Андроид.
Android используется на самых разных устройствах. Это и смартфоны, и планшеты, и телевизоры, и смарт-часы и ряд других гаджетов. По разным подсчетам за 2020 год этой операционой системой пользуются около 85% владельцев смартфонов, а общее количество пользователей сматрфонов на ОС Android оценивается в более чем 2,5 млрд. человек по всему миру.
ОС Андроид была создана разработчиком Энди Рубином (Andy Rubin) в качестве операционной системы для мобильных телефонов и поначалу развивалась в рамках компании Android Inc. Но в 2005 году Google покупает Android Inc. и начинает развивать операционную систему с новой силой. Android постоянно эволюционирует, и вместе с операционной системой эволюционируют средства и инструменты для разработки. На данный момент (октябрь 2021 года) последней версией является Android 12.0, которая вышла в октябре 2021 года: