Текст книги "Разработка Android-приложений в деталях"
![](/books_files/covers/thumbs_240/razrabotka-android-prilozheniy-vdetalyah-198990.jpg)
Автор книги: Тимур Машнин
Жанр: Компьютеры: прочее, Компьютеры
Возрастные ограничения: +12
сообщить о неприемлемом содержимом
Текущая страница: 1 (всего у книги 20 страниц) [доступный отрывок для чтения: 6 страниц]
Разработка Android-приложений в деталях
Тимур Сергеевич Машнин
© Тимур Сергеевич Машнин, 2016
© Тимур Сергеевич Машнин, дизайн обложки, 2016
Создано в интеллектуальной издательской системе Ridero
Введение
Пригласить автора в проект [битая ссылка] [email protected]
Разработку Android-приложений можно вести как в среде Eclipse, так и в среде Android Studio. Хотя среда Android Studio является официально поддерживаемой средой разработки, среда Eclipse не теряет актуальности из-за своей универсальности в разработке Java-приложений самого широкого спектра применений.
Поддержку разработки Android-приложений в среде Eclipse обеспечивает Eclipse-плагин Android Development Tools (ADT) (http://developer.android.com/sdk/eclipse-adt.html).
ADT-плагин помогает создать Android-проект, разработать UI-интерфейс приложения на основе программного интерфейса Android Framework API, отладить Android-приложение и подготовить подписанный файл. apk к публикации.
Установка ADT плагина
Для установки ADT-плагина откроем среду Eclipse IDE for Java EE Developers и в меню Help выберем команду Install New Software. В списке Work with: нажмем кнопку Add, в поле Name: введем имя плагина ADT, а в поле Location: – адрес https://dl-ssl.google.com/android/eclipse/ хранилища плагина, нажмем кнопку OK, в мастере Install отметим флажок Developer Tools и нажмем кнопку Next.
![](image0_5786b4c9f7cb49103d60dd2b_jpg.jpeg)
После установки ADT-плагина и перезапуска среды Eclipse может открыться окно приложения Android SDK Manager набора разработчика Android SDK.
![](image1_5786b55af7cb49103d60de6c_jpg.jpeg)
Сам по себе дистрибутив набора Android SDK (http://developer.android.com/sdk/index.html) включает в себя набор инструментов SDK Tools, SDK Platform-tools, а также приложения AVD Manager и SDK Manager.
Приложение SDK Manager дает возможность устанавливать и обновлять компоненты набора Android SDK, а также запускать приложение AVD Manager и управлять URL-адресами дополнений.
Приложение SDK Manager можно также запустить из среды Eclipse с помощью команды Android SDK Manager меню Window перспективы Java.
Набор инструментов SDK Tools обеспечивает отладку и тестирование Android-приложений. Набор инструментов SDK Platform-tools обеспечивает поддержку самой последней версии Android-платформы и включает в себя инструмент Android Debug Bridge (adb), позволяющий взаимодействовать с эмулятором или Android-устройством. Приложение AVD Manager предоставляет GUI-интерфейс для моделирования различных конфигураций Android-устройств, используемых Android-эмулятором запуска приложений в среде выполнения Android. Набор Android Build Tools обеспечивает сборку кода Android-приложения.
Для разработки Android-приложений требуется установка конкретной Android-платформы, включающей в себя библиотеки платформы, системные изображения, образцы кода, оболочки эмуляции.
Поэтому, используя приложение SDK Manager, установим последнюю возможную версию Android-платформы и наиболее распространенную или минимальную версию Android-платформы. Обратная совместимость между максимальной и минимальной версиями осуществляется с помощью библиотеки Android Support Library каталога Extras.
Дополнительно можно загрузить другие версии Android-платформы, документацию, примеры и различные дополнения набора Android SDK.
Различные версии API Android-платформы отличаются друг от друга наличием новых пакетов, а также изменениями в существующих пакетах.
Помимо изменений программного интерфейса API, от версии к версии Android-платформы изменялись предустановленные приложения, добавлялась поддержка новых технологий и улучшалась производительность.
Описание ADT-плагина
В результате установки ADT-плагина в команде New меню File среды Eclipse появится раздел Android, содержащий следующие мастера:
Android Activity – создает класс, расширяющий класс android.app.Activity и представляющий экран приложения.
Android Application Project – обеспечивает создание проекта Android-приложения.
Android Icon Set – позволяет создать набор значков приложения:
Launcher Icons – значок, представляющий приложение.
Action Bar and Tab Icons (Android 3.0+) – значки элементов панели действий пользователя для платформы версии 3.0 и выше.
Notification Icons – значки уведомлений панели состояния.
Pre-Android 3.0 Tab Icons – значки элементов панели действий пользователя для платформы версии ниже 3.0.
Pre-Android 3.0 Menu Icons – значки меню для платформы версии ниже 3.0.
Android Object – создает различные компоненты, такие как Activity, Widget, Fragment, Receiver, Provider, Service и др.
Android Project from Existing Code – импорт проекта приложения.
Android Sample Project – при условии установки с помощью SDK Manager пакета примеров Samples for SDK, позволяет создать проект выбранного примера Android-приложения.
Android Test Project – для выбранного Android-проекта создает основу набора тестов на базе каркаса Android testing framework, являющегося расширением платформы тестирования JUnit.
Android XML File – обеспечивает создание таких ресурсов приложения как:
Layout – XML-описание GUI-интерфейса Activity-компонента.
Values – XML-файл, содержащий набор текстовых строк, стилей, различного рода значений, используемых приложением.
Drawable – XML-файл, формирующий отображаемую на экране графику.
Menu – XML-файл, определяющий меню приложения.
Color List – XML-файл, определяющий набор цветов для различных состояний GUI-компонента.
Property Animation – XML-файл, задающий анимацию свойств объекта.
Tween Animation – XML-файл, задающий анимацию View-компонента (вращение, исчезновение, перемещение и масштабирование).
AppWidgetProvider – XML-файл, содержащий метаданные для миниатюрного приложения App Widget, как правило размещаемого на главном экране Home Screen.
Preference – XML-описание GUI-интерфейса PreferenceActivity-операции, позволяющей пользователю персонифицировать приложение.
Searchable – XML-файл, определяющий настройки GUI-компонента поиска.
Android XML Layout File – аналог мастера Android XML File | Layout.
Android XML Values File – аналог мастера Android XML File | Values.
Template Development Wizard – генерирует код на основе файла шаблона template. xml.
![](image2_5786b559f7cb49103d60de69_jpg.jpeg)
После установки ADT-плагина, в контекстном меню окна Package Explorer появятся следующие команды:
Run As | Android Application – запускает Android-приложение в виртуальном мобильном устройстве, созданным с помощью AVD Manager.
Run As | Android JUnit Test – запускает набор тестов для Android-приложения с использованием виртуального мобильного устройства.
Android Tools | New Test Project – открывает мастер Android Test Project создания набора тестов для Android-приложения.
Android Tools | New Resource File – открывает мастер Android XML File создания ресурсов приложения.
Android Tools | Export Signed Application Package – открывает мастер Export Android Application экспорта пописанного цифровой подписью и готового к публикации Android-приложения.
Android Tools | Export Unsigned Application Package – экспортирует неподписанный для релиза APK-файл Android-приложения.
Android Tools | Display dex bytecode – в окне Eclipse-редактора отображает инструкции байткода, дизассемблированные из DEX-файла, который создается в процессе сборки приложения путем конвертации из Java класс-файлов для выполнения виртуальной машиной Dalvik среды выполнения Android.
Android Tools | Rename Application Package – переименовывает пакет приложения.
Android Tools | Add Support Library – запускает приложение SDK Manager для добавления в путь приложения библиотеки Android Support Package, предоставляющей дополнительный API, не являющийся частью API версии Android-платформы. Другой способ добавления библиотеки Android Support Package – установить библиотеку с помощью раздела Extras приложения SDK Manager, создать папку libs в каталоге проекта, скопировать в нее библиотеку из папки extrasandroidsupport каталога Android SDK и добавить библиотеку в путь приложения используя команду Build Path | Configure Build Path контекстного меню окна Package Explorer.
Android Tools | Fix Project Properties – в случае импорта готового Android-проекта гарантирует правильную его сборку, в частности добавляет в путь приложения необходимые библиотеки.
Android Tools | Run Lint: Check for Common Errors – сканирует Android-проект для поиска потенциальных багов с выводом сообщений о них в окно Lint Warnings.
Android Tools | Clear Lint Markers – очищает окно Lint Warnings.
Android Tools | Add Native Support – добавление поддержки Android NDK.
В меню Windows Workbench-окна появятся команды Android SDK Manager, AVD Manager и Run Android Lint, с помощью которых можно запустить приложения набора SDK Tools и сканирование Android-проекта для поиска потенциальных багов. Данные команды дублируются соответствующими кнопками панели инструментов Workbench-окна.
ADT-плагин добавляет в среду Eclipse перспективы DDMS, Hierarchy View, Pixel Perfect, Tracer for OpenGL ES и XML.
Перспектива DDMS
Перспектива DDMS запускает инструмент отладки Dalvik Debug Monitor Server набора SDK Tools и отображает его GUI-интерфейс в виде набора Eclipse-представлений, обеспечивая информацию о работе эмулятора или подсоединенного Android-устройства.
Перспектива DDMS содержит представления Devices, Emulator Control, LogCat, Threads, Heap, Allocation Tracker, Network Statistics, System Information и File Explorer.
Представление Devices отображает подключенные Android-устройства. Для каждого подключенного Android-устройства Devices-представление показывает все запущенные на нем процессы, каждый из которых работает в своем экземпляре виртуальной машины Dalvik. Каждый отображаемый процесс представляет инсталлированное и запущенное на Android-устройстве приложение, поэтому идентификация процесса производится по имени пакета приложения. Так как виртуальная машина Dalvik работает поверх ядра Linux, каждый процесс имеет свой Linux-идентификатор, отображаемый в окне Devices после имени пакета. Крайний правый столбец окна Devices показывает номер порта, который DDMS-инструмент назначает для подсоединения Eclipse-отладчика к экземпляру Dalvik-машины с использованием протокола JDWP (Java Debug Wire Protocol). По умолчанию Eclipse-отладчик подсоединяется к статическому порту 8700, на который перенаправляются трафики экземпляров Dalvik-машины от всех портов. DDMS-инструмент взаимодействует с подключенным Android-устройством с помощью инструмента Android Debug Bridge (adb), имеющего клиент-серверную архитектуру. DDMS-инструмент создает adb-клиента, который взаимодействует с adb-демоном (фоновый процесс, работающий в Android-устройстве) через adb-сервер.
![](image3_5786b557f7cb49103d60de66_jpg.jpeg)
Панель инструментов представления Devices содержит следующие кнопки:
(Debug the selected process, …) – подсоединяет процесс, представляющий Android-приложение с открытым в среде Eclipse проектом, к Eclipse-отладчику, для работы с которым используется перспектива Debug.
![](image4_5786b556f7cb49103d60de63_jpg.jpeg)
(Update Heap) – включает информацию об использовании динамической памяти для процесса.
![](image5_5786b555f7cb49103d60de60_jpg.jpeg)
(Dump HPROF file) – создает снимок динамической памяти в виде HPROF-файла. В случае Android-устройств версии 2.1 и ранее для создания HPROF-файла требуется наличие SD-карты памяти, а также разрешения <uses-permission http://www.eclipse.org/mat/).rmission. WRITE_EXTERNAL_STORAGE»/> в файле манифеста AndroidManifest. xml Android-приложения. Анализ HPROF-файла можно выполнить с помощью Eclipse-плагина Memory Analyzer (MAT) (android:name="android.pe
![](image6_5786b554f7cb49103d60de5d_jpg.jpeg)
(Cause GC) – вызывает сборщика мусора, что влечет за собой сборку данных о динамической памяти.
![](image7_5786b553f7cb49103d60de5a_jpg.jpeg)
(Update Threads) – включает информацию о запущенных потоках для выбранного процесса.
![](image8_5786b552f7cb49103d60de57_jpg.jpeg)
(Start Method Profiling) и (Stop Method Profiling) – запускает и останавливает запись информации о выполнении методов приложения в Trace-файл, который после остановки записи открывается в Traceview-окне, отображающем журнал выполнения в виде двух панелей: Timeline Panel – с помощью цветовой гаммы и шкалы времени описывает старт и остановку выполнения метода в потоке, Profile Panel – показывает детали выполнения методов. В случае Android-устройств версии 2.1 и ранее для создания Trace-файла требуется наличие SD-карты памяти, а также разрешения <uses-permission android:name="android.permission. WRITE_EXTERNAL_STORAGE»/> в файле манифеста AndroidManifest. xml Android-приложения. За отображение окна Traceview отвечает инструмент traceview набора SDK Tools.
![](image9_5786b550f7cb49103d60de54_jpg.jpeg)
![](image10_5786b550f7cb49103d60de51_jpg.jpeg)
![](image11_5786b54ff7cb49103d60de4e_jpg.jpeg)
![](image12_5786b54ef7cb49103d60de4b_jpg.jpeg)
(Stop Process) – останавливает выбранный процесс.
![](image13_5786b54df7cb49103d60de48_jpg.jpeg)
(Screen Capture) – открывает окно Device Screen Capture, которое позволяет создавать скриншоты экрана Android-устройства.
![](image14_5786b54bf7cb49103d60de45_jpg.jpeg)
(Dump View Hierarchy for UI Automator) – обеспечивает тестирование GUI-интерфейса приложения путем получения снимка экрана Tablet-устройства API 16 и выше, предоставляя визуальный интерфейс для проверки GUI-иерархии и просмотра свойств отдельных компонентов GUI-интерфейса. Работа команды обеспечивается инструментом uiautomatorviewer набора Android SDK.
![](image15_5786b54af7cb49103d60de42_jpg.jpeg)
(Capture system wide trace using Android systrace) – для устройства Android 4.1 (API Level 16) помогает анализировать производительность приложения, формируя журнал событий системы и приложения в виде HTML-файла.
![](image16_5786b549f7cb49103d60de3f_jpg.jpeg)
(Start OpenGL Trace) – для устройства Android 4.1 (API Level 16) – помогает анализировать выполнение графических OpenGL ES команд.
![](image17_5786b548f7cb49103d60de3c_jpg.jpeg)
Меню панели инструментов представления Devices, помимо вышеперечисленных команд, содержит команду Reset adb, обеспечивающую перезапуск adb-инструмента.
Представление Emulator Control дает возможность имитировать для экземпляра Android-эмулятора входящий звонок, SMS-сообщение и локализацию.
![](image18_5786b547f7cb49103d60de39_jpg.jpeg)
Списки Voice: и Data: раздела Telephony Status представления Emulator Control позволяют установить состояние GPRS-соединения:
unregistered – сеть отсутствует.
home – локальная сеть.
roaming – телефон в роуминге.
searching – поиск сети.
denied – только звонки экстренных служб.
Список Speed: раздела Telephony Status представления Emulator Control позволяет установить скорость передачи данных сети:
GSM – 14.4 килобитсек.
HSCSD – от 14.4 до 43.2 килобитсек.
GPRS – от 40.0 до 80.0 килобитсек.
EDGE – от 118.4 до 236.8 килобитсек.
UMTS – от 128.0 до 1920.0 килобитсек.
HSDPA – от 348.0 до 14400.0 килобитсек.
Full – без ограничений.
Список Latency: раздела Telephony Status представления Emulator Control позволяет имитировать уровень задержки сети:
GPRS – от 150 до 550 миллисекунд.
EDGE – от 80 до 400 миллисекунд.
UMTS – от 35 до 200 миллисекунд.
None – задержка отсутствует.
Раздел Telephony Actions представления Emulator Control дает возможность имитировать входящий звонок и SMS-сообщение.
Раздел Location Controls представления Emulator Control обеспечивает определение локализации Android-устройства вручную (вкладка Manual) или с помощью файлов GPS eXchange (вкладка GPX) и Keyhole Markup Language (вкладка KML).
Представление LogCat обеспечивает отображение всех системных сообщений от Android-устройства, в то время как представление Console показывает только сообщения, относящиеся к изменениям состояния Android-устройства и его приложений.
LogCat-окно отображает системные сообщения в таблице, содержащей столбцы Level (приоритет сообщения), Time (время создания сообщения), PID (Linux-идентификатор процесса), Application (имя пакета приложения), Tag (идентификатор системного компонента, от которого получено сообщение), Text (текст сообщения). Соответственно панель инструментов представления LogCat обеспечивает фильтрацию отображаемых сообщений по приоритету, тэгу, по идентификатору и имени пакета приложения.
Представление Threads показывает запущенные потоки для выбранного процесса. Для просмотра потоков необходимо в окне Devices выбрать процесс и нажать кнопку Update Threads панели инструментов окна Devices.
Threads-окно отображает информацию о потоках в виде двух таблиц. Верхняя таблица показывает все запущенные потоки для выбранного процесса и имеет следующие столбцы:
ID – Dalvik-идентификатор потока – нечетные числа, начиная с 3. Демоны помечаются «*».
TID – Linux-идентификатор потока.
Status – статус потока:
Wait – вызван метод Object. wait ().
Native – выполняет системный код.
Vmwait – ожидает Dalvik-ресурс.
Runnable – может быть запущен.
TimedWait – ожидает в течение определенного количества времени.
utime – общее время выполнения пользовательского кода (единица 10 мс.).
stime – общее время выполнения системного кода (единица 10 мс.).
Name – имя потока.
Нижняя таблица для выбранного потока показывает выполняемый потоком код, указывая класс, метод, файл, строку и признак кода.
Представление Heap отображает информацию об использовании динамической памяти выбранным процессом. Для просмотра кучи процесса в Heap-окне необходимо в окне Devices выбрать процесс и нажать кнопку Update Heap, затем кнопку Cause GC панели инструментов окна Devices.
Представление Heap содержит три области. Самая верхняя область показывает таблицу структуры кучи процесса со столбцами ID (идентификатор кучи), Heap Size (общее количество памяти кучи), Allocated (количество занятой памяти кучи), Free (количество свободной памяти кучи), %Used (процент занятости кучи) и #Objects (количество объектов кучи), а также имеет кнопку Cause GC обновления информации о куче.
Далее расположена область с таблицей распределения объектов кучи по типам. Самая нижняя область отображает гистограмму распределения выбранного типа объектов по размерам занимаемой памяти.
![](image19_5786b545f7cb49103d60de36_jpg.jpeg)
Представление Allocation Tracker позволяет в реальном времени отследить объекты, для которых выделяется память. Для начала просмотра журнала выделения памяти для объектов необходимо в окне Devices выбрать процесс и нажать кнопку Start Tracking в окне Allocation Tracker, затем кнопку Get Allocations. В результате верхняя область окна Allocation Tracker покажет список объектов, созданных с момента нажатия кнопки Start Tracking до момента нажатия кнопки Get Allocations, с указанием выделенной памяти, идентификатора потока, класса и метода, а нижняя область – более детальную информацию для выбранного объекта, с указанием класса, метода, файла, строки и признака кода.
Представление Network Statistics позволяет сформировать и проанализировать журнал передачи данных по сети.
Представление System Information отображает диаграммы использования системных ресурсов.
Представление File Explorer показывает файловую систему Android-устройства с возможностью экспорта и импорта файлов, удаления файлов и создания новых папок.
Общая настройка DDMS-инструмента осуществляется с помощью раздела Android | DDMS команды Preferences меню Window, где можно определить номер порта, с которого DDMS-инструмент начинает назначать порт для подсоединения Eclipse-отладчика к экземпляру Dalvik-машины по протоколу JDWP, обновление по умолчанию информации о куче и потоках с указанным интервалом, сохранение HPROF-файла или открытие его в среде Eclipse, время ожидания adb-инструмента, adb-хост для связи с Android-устройством по сети.
![](image20_5786b544f7cb49103d60de33_jpg.jpeg)
Перспективы Hierarchy View и Pixel Perfect
Перспективы Hierarchy View и Pixel Perfect запускают инструмент hierarchyviewer набора SDK Tools и отображают его GUI-интерфейс в виде набора Eclipse-представлений, помогая отладить и оптимизировать GUI-интерфейс Android-приложения.
Перспектива Hierarchy View содержит представления Windows, View Properties, Tree View, Tree Overview, Layout View.
![](image21_5786b542f7cb49103d60de30_jpg.jpeg)
Представление Windows отображает список подключенных Android-устройств, для каждого из которых показывает список Activity-объектов, включающий в себя системные объекты и объект приложения, GUI-интерфейс которых отображается на экране Android-устройства.
Представление Tree View показывает иерархию GUI-компонентов графического интерфейса выбранного Activity-объекта. Для просмотра диаграммы иерархии GUI-интерфейса приложения в представлении Tree View, в окне Windows необходимо выбрать Activity-объект приложения и нажать кнопку Load the view hierarchy into the tree view панели инструментов Windows-окна. В результате в окне Tree View отобразится иерархия View-объектов приложения.
![](image22_5786b541f7cb49103d60de2d_jpg.jpeg)
Диаграмму окна Tree View можно увеличивать с помощью нижнего ползунка, фильтровать, используя поле Filter by class or id:. Панель инструментов представления Tree View позволяет сохранить отображаемую диаграмму как PNG-изображение, как PSD-документ, открыть выбранный View-объект в отдельном окне и др.
Представление Tree Overview обеспечивает перемещение по диаграмме окна Tree View с помощью перетаскивания выделенного прямоугольника окна Tree Overview.
Окно Layout View является блочным представлением GUI-интерфейса. При выборе компонента диаграммы окна Tree View его расположение в GUI-интерфейсе подсвечивается красным цветом в окне Layout View. Также при выборе View-объекта диаграммы окна Tree View, выше его узла появляется небольшое окно с реальным изображением GUI-компонента и информацией о количестве View-объектов, представляющих компонент, и о времени отображения компонента в миллисекундах. При этом свойства выбранного View-объекта диаграммы отображаются в представлении View Properties.
Информация о времени визуализации компонентов GUI-интерфейса приложения помогает найти причину его медленной работы.
Перспектива Pixel Perfect содержит представления Windows, Pixel Perfect Tree, Pixel Perfect Loup и Pixel Perfect.
![](image23_5786b53ff7cb49103d60de2a_jpg.jpeg)
Представление Windows отображает список подключенных Android-устройств без детализации. При выборе устройства и нажатии кнопки Inspect a screenshot in the pixel perfect view панели инструментов окна Windows снимок экрана выбранного Android-устройства открывается в представлениях Pixel Perfect Loup и Pixel Perfect. В представлении Pixel Perfect Tree отображается дерево View-объектов GUI-интерфейса приложения, формирующего снимок экрана. При выборе View-объекта в окне Pixel Perfect Tree, его расположение обозначается красной рамкой в окне Pixel Perfect.
![](image24_5786b53ef7cb49103d60de27_jpg.jpeg)
Представление Pixel Perfect Loup содержит перекрестье, которое дает информацию о пикселе, находящемся в центре пересечения, включающую в себя HTML-код цвета пикселя, его RGB-значение и координаты. Изображение окна Pixel Perfect Loup можно перемещать мышкой относительно перекрестья. Слайдер Zoom позволяет регулировать увеличение снимка экрана Android-устройства.
Представление Pixel Perfect также содержит перекрестье, расположение которого относительно снимка экрана совпадает с расположением перекрестья окна Pixel Perfect Loup и наоборот. Перекрестье окна Pixel Perfect можно передвигать мышкой, а панель инструментов окна Pixel Perfect дает возможность сохранить снимок экрана как PNG-изображение, а также загрузить поверх снимка экрана другое изображение, представляющее макет GUI-интерфейса приложения, при этом прозрачность загруженного изображения можно регулировать с помощью слайдера Overlay: окна Pixel Perfect Loup.
Возможность загрузки изображений поверх снимка экрана Android-устройства помогает в работе над дизайном GUI-интерфейса разрабатываемого Android-приложения.
Правообладателям!
Данное произведение размещено по согласованию с ООО "ЛитРес" (20% исходного текста). Если размещение книги нарушает чьи-либо права, то сообщите об этом.Читателям!
Оплатили, но не знаете что делать дальше?