Введение в разработку приложений для ОС Android

Использование библиотек

Разбить на страницы
Показывать лекцию целиком

Скриншоты приложений взяты из магазина приложений Google Play или сделаны самостоятельно, в том числе с использованием смартфона Мегафон SP-A20i Mint на платформе Intel Medfield. Некоторые иллюстрации взяты с официальных сайтов.

Презентацию к данной лекции можно скачать здесь.

14.1 Библиотеки

14.1.1 Использование библиотек

Библиотека (от англ. library) в программировании - сборник подпрограмм или объектов, используемых для разработки программного обеспечения (ПО). Для ОС Android существует большое количество подключаемых библиотек. Их можно классифицировать в зависимости от их предназначения. Выделим следующие группы:

  • Библиотеки совместимости. Они позволяют использовать возможности, появившиеся в какой-то версии ОС Android, на более ранних версиях платформы. Дело в том, что новые версии API выходят гораздо быстрее, чем в широком использовании оказываются устройства, поддерживающие эту версию. Разработчик с одной стороны должен ориентироваться на новые возможности и уметь их использовать, а с другой - стараться сделать так, чтобы приложение работало на максимальном количестве устройств. Библиотеки совместимости позволяют сделать это противоречие менее жестким.
  • Библиотеки специального назначения. Используются для разработки игр, работы с социальными сетями, сбора статистики и в других случаях.
  • Библиотеки, предоставляющие дополнительные возможности. В эту категорию можно отнести большое количество самых разных библиотек. Сюда можно отнести библиотеки рисования графиков, работы с изображениями, модифицированные элементы управления и многое другое.
  • 14.1.2 Подключение библиотек

    Библиотеки могут поставляться как в собранном и уже готовом к использованию виде (jar-файлы), так и в исходниках. Подключить библиотеку (файл *.jar) очень просто. Достаточно создать папку libs в проекте (на том же уровне, что и папки src и res) и копировать туда файл библиотеки (можно просто перетащить). Дальше необходимо добавить ее в проект через меню Project -> Properties.

    Если библиотека представлена в виде исходного кода, необходимо ее предварительно собрать. Необходимо щелкнуть правой кнопкой по корневой папке проекта - > Export: -> Java -> Runnable JAR file ->Указать класс для запуска -> Указать место сборки -> Finish (см. рис. 14.1).

    Рис. 14.1. Сборка библиотеки из исходного кода

    14.2 Обзор популярных библиотек

    14.2.1 Android Support Library

    Android Support Library - это набор библиотек, которые обеспечивают обратную совместимость новых API на более старых версиях платформы. Каждая библиотека из этого набора обладает обратной совместимостью к конкретному уровню Android API. Это означает, что ваши приложения смогут использовать возможности библиотеки и быть запущены на устройствах Android 1.6 (API level 4) и выше.

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

    О возможностях различных версий Android Support Library можно узнать на http://developer.android.com/tools/support-library/index.html#overview).

    (рис 14.2) Подключение Android Support Library

    При настройке обратной совместимости необходимо отредактировать файл манифеста, указав в нем минимальную версию Android SDK, которая необходима для запуска приложения, и основную (целевую) версию:

    <uses-sdk
        android:minSdkVersion="7"
        android:targetSdkVersion="17" />
            

    14.2.2 Сторонние библиотеки

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

    ). Главным преимуществом этой библиотеки является то, что она работает для всех версий Android, начиная с 1.0.

    (рис 14.3) Использование библиотеки NineOldAndroids

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

    (рис 14.4) Использование библиотеки ActionBarSherlock

    14.2.3 Библиотеки специального назначения

    Yandex.Metrica for Apps - набор библиотек для сбора статистики использования мобильного приложения. Метрика показывает актуальную статистику об использовании приложения. Сервис позволяет отвечать на вопросы об аудитории и выделять любые ее сегменты. Инструменты помогают понять, как люди пользуются приложением. SDK позволяет отслеживать следующие данные:

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

    ).

    (рис 14.5) Пример приложения, подготовленного с использованием Facebook SDK for Android

    14.2.4 Прикладные библиотеки

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

    Universal Image Loader for Android - мощная и гибкая библиотека, предназначенная для загрузки, кеширования и отображения картинок в Android. Подробности на сайте.

    Возможности:

  • Многопоточная загрузка изображений.
  • Широкие возможности настройки и конфигурирования.
  • Кеширование загруженных изображений как в оперативной памяти, так и на карте.
  • Поддержка виджетов.
  • Поддерживает Android 2.0 и выше.
  • (рис 14.6) Пример работы с библиотекой Universal Image Loader for Android

    jsoup: Java HTML Parser предназначена для парсинга HTML-страниц. Предоставляет очень удобный API для извлечения данных и манипуляции с ними, используя DOM, CSS и методы в стиле jQuery. Поддерживает спецификации HTML5 и позволяет парсить страницы так же, как это делают современные браузеры.

    Возможности:

  • Может принимать в качестве параметра URL, файл или строку.
  • Находит и извлекает данные, используя DOM и селекторы CSS.
  • Позволяет манипулировать HTML-элементами, атрибутами и текстом.
  • Выводит чистый HTML.
  • Примеры ее использования есть на официальном сайте.

    Android Holo ColorPicker - удобная библиотека, позволяющая выбирать цвет с использованием цветового колеса, выполненная в официально рекомендованном стиле Holo. Сайт библиотеки содержит описание работы с ней и необходимые ссылки.

    Рис. 14.7. Пример использования Android Holo ColorPicker

    Библиотека MapNavigator предназначена для работы с картами Google Maps. Позволяет определять направления и отображать маршрут на карте. Работает только с Google Maps v2. Скачать можно на официальном сайте.

    (рис 14.8) Пример использования библиотеки MapNavigator

    AChartEngine - библиотека, предназначенная для построения графиков. Позволяет строить графики различных типов:

  • Линии графиков функций.
  • Поточечные графики.
  • Гистограммы.
  • Круговые диаграммы.
  • Пузырьковые диаграммы.
  • Комбинированные диаграммы.
  • Другие виды диаграмм и графиков.
  • Все типы диаграмм поддерживают несколько рядов данных.

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

    Рис. 14.9. Пример использования библиотеки AChartEngine

    Разумеется, мы рассмотрели лишь малую долю существующих библиотек. Обзор не претендует на полноту, но это не так важно, так как его целью было представить многообразие возможностей, открывающихся перед разработчиком. Кроме того, большое количество разнообразных библиотек описаны на сайте http://www.androidviews.net/.

    14.3 Безопасность использования подключаемых библиотек

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

    Например, в октябре 2013 года была опубликована статья с результатами исследования, согласно которому популярная у разработчиков библиотека, предоставляющая возможность отображения рекламы в приложениях, может использоваться для сбора информации и запуска вредоносного кода. Исследователи не раскрыли истинного названия библиотеки, зато описали возможный вред. Например, она может запускать на устройстве произвольный код, извлекать текстовые сообщения, список контактов и вызовов, передавать секретную информацию пользователя в виде простого текста по протоколу HTTP, использовать камеру без ведома пользователя, запускать вредоносные java-скрипты. Злоумышленник может превратить эту библиотеку в ботнет, перехватывая ее трафик и отправляя вредоносные команды и код [37].

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

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

    Скриншоты приложений взяты из магазина приложений Google Play или сделаны самостоятельно, в том числе с использованием смартфона Мегафон SP-A20i Mint на платформе Intel Medfield. Некоторые иллюстрации взяты с официальных сайтов.

    Презентацию к данной лекции можно скачать здесь.

    14.1 Библиотеки

    14.1.1 Использование библиотек

    Библиотека (от англ. library) в программировании - сборник подпрограмм или объектов, используемых для разработки программного обеспечения (ПО). Для ОС Android существует большое количество подключаемых библиотек. Их можно классифицировать в зависимости от их предназначения. Выделим следующие группы:

  • Библиотеки совместимости. Они позволяют использовать возможности, появившиеся в какой-то версии ОС Android, на более ранних версиях платформы. Дело в том, что новые версии API выходят гораздо быстрее, чем в широком использовании оказываются устройства, поддерживающие эту версию. Разработчик с одной стороны должен ориентироваться на новые возможности и уметь их использовать, а с другой - стараться сделать так, чтобы приложение работало на максимальном количестве устройств. Библиотеки совместимости позволяют сделать это противоречие менее жестким.
  • Библиотеки специального назначения. Используются для разработки игр, работы с социальными сетями, сбора статистики и в других случаях.
  • Библиотеки, предоставляющие дополнительные возможности. В эту категорию можно отнести большое количество самых разных библиотек. Сюда можно отнести библиотеки рисования графиков, работы с изображениями, модифицированные элементы управления и многое другое.
  • 14.1.2 Подключение библиотек

    Библиотеки могут поставляться как в собранном и уже готовом к использованию виде (jar-файлы), так и в исходниках. Подключить библиотеку (файл *.jar) очень просто. Достаточно создать папку libs в проекте (на том же уровне, что и папки src и res) и копировать туда файл библиотеки (можно просто перетащить). Дальше необходимо добавить ее в проект через меню Project -> Properties.

    Если библиотека представлена в виде исходного кода, необходимо ее предварительно собрать. Необходимо щелкнуть правой кнопкой по корневой папке проекта - > Export: -> Java -> Runnable JAR file ->Указать класс для запуска -> Указать место сборки -> Finish (см. рис. 14.1).

    Рис. 14.1. Сборка библиотеки из исходного кода

    14.2 Обзор популярных библиотек

    14.2.1 Android Support Library

    Android Support Library - это набор библиотек, которые обеспечивают обратную совместимость новых API на более старых версиях платформы. Каждая библиотека из этого набора обладает обратной совместимостью к конкретному уровню Android API. Это означает, что ваши приложения смогут использовать возможности библиотеки и быть запущены на устройствах Android 1.6 (API level 4) и выше.

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

    О возможностях различных версий Android Support Library можно узнать на http://developer.android.com/tools/support-library/index.html#overview).

    (рис 14.2) Подключение Android Support Library

    При настройке обратной совместимости необходимо отредактировать файл манифеста, указав в нем минимальную версию Android SDK, которая необходима для запуска приложения, и основную (целевую) версию:

    <uses-sdk
        android:minSdkVersion="7"
        android:targetSdkVersion="17" />
            

    14.2.2 Сторонние библиотеки

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

    ). Главным преимуществом этой библиотеки является то, что она работает для всех версий Android, начиная с 1.0.

    (рис 14.3) Использование библиотеки NineOldAndroids

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

    (рис 14.4) Использование библиотеки ActionBarSherlock

    14.2.3 Библиотеки специального назначения

    Yandex.Metrica for Apps - набор библиотек для сбора статистики использования мобильного приложения. Метрика показывает актуальную статистику об использовании приложения. Сервис позволяет отвечать на вопросы об аудитории и выделять любые ее сегменты. Инструменты помогают понять, как люди пользуются приложением. SDK позволяет отслеживать следующие данные:

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

    ).

    (рис 14.5) Пример приложения, подготовленного с использованием Facebook SDK for Android

    14.2.4 Прикладные библиотеки

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

    Universal Image Loader for Android - мощная и гибкая библиотека, предназначенная для загрузки, кеширования и отображения картинок в Android. Подробности на сайте.

    Возможности:

  • Многопоточная загрузка изображений.
  • Широкие возможности настройки и конфигурирования.
  • Кеширование загруженных изображений как в оперативной памяти, так и на карте.
  • Поддержка виджетов.
  • Поддерживает Android 2.0 и выше.
  • (рис 14.6) Пример работы с библиотекой Universal Image Loader for Android

    jsoup: Java HTML Parser предназначена для парсинга HTML-страниц. Предоставляет очень удобный API для извлечения данных и манипуляции с ними, используя DOM, CSS и методы в стиле jQuery. Поддерживает спецификации HTML5 и позволяет парсить страницы так же, как это делают современные браузеры.

    Возможности:

  • Может принимать в качестве параметра URL, файл или строку.
  • Находит и извлекает данные, используя DOM и селекторы CSS.
  • Позволяет манипулировать HTML-элементами, атрибутами и текстом.
  • Выводит чистый HTML.
  • Примеры ее использования есть на официальном сайте.

    Android Holo ColorPicker - удобная библиотека, позволяющая выбирать цвет с использованием цветового колеса, выполненная в официально рекомендованном стиле Holo. Сайт библиотеки содержит описание работы с ней и необходимые ссылки.

    Рис. 14.7. Пример использования Android Holo ColorPicker

    Библиотека MapNavigator предназначена для работы с картами Google Maps. Позволяет определять направления и отображать маршрут на карте. Работает только с Google Maps v2. Скачать можно на официальном сайте.

    (рис 14.8) Пример использования библиотеки MapNavigator

    AChartEngine - библиотека, предназначенная для построения графиков. Позволяет строить графики различных типов:

  • Линии графиков функций.
  • Поточечные графики.
  • Гистограммы.
  • Круговые диаграммы.
  • Пузырьковые диаграммы.
  • Комбинированные диаграммы.
  • Другие виды диаграмм и графиков.
  • Все типы диаграмм поддерживают несколько рядов данных.

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

    Рис. 14.9. Пример использования библиотеки AChartEngine

    Разумеется, мы рассмотрели лишь малую долю существующих библиотек. Обзор не претендует на полноту, но это не так важно, так как его целью было представить многообразие возможностей, открывающихся перед разработчиком. Кроме того, большое количество разнообразных библиотек описаны на сайте http://www.androidviews.net/.

    14.3 Безопасность использования подключаемых библиотек

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

    Например, в октябре 2013 года была опубликована статья с результатами исследования, согласно которому популярная у разработчиков библиотека, предоставляющая возможность отображения рекламы в приложениях, может использоваться для сбора информации и запуска вредоносного кода. Исследователи не раскрыли истинного названия библиотеки, зато описали возможный вред. Например, она может запускать на устройстве произвольный код, извлекать текстовые сообщения, список контактов и вызовов, передавать секретную информацию пользователя в виде простого текста по протоколу HTTP, использовать камеру без ведома пользователя, запускать вредоносные java-скрипты. Злоумышленник может превратить эту библиотеку в ботнет, перехватывая ее трафик и отправляя вредоносные команды и код [37].

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

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