ЗАПУСК І НАЛАГОДЖЕННЯ ДОДАТКІВ ANDROID

&nbsp

Після написання першої версії коду нашої програми ми, звичайно, захочемо запустити і протестувати його для виявлення потенційних проблем (або щоб просто похвалитися) Зробити це можна двома способами: запустити додаток на реальному пристрої, підключеному до компютера за допомогою USB-кабелю викликати емулятор, включений в SDK, і протестувати додаток на ньому

В обох випадках нам потрібно зробити деякі дії, щоб побачити нашу програму в дії

Підключення пристрою

Перед підключенням пристрою для тестування необхідно переконатися в тому, що воно розпізнається операційною системою У Windows для цього потрібно встановити відповідний драйвер, який є частиною інсталяції SDK, яку ми встановили раніше Просто підключіть пристрій і дотримуйтесь інструкцій по установці стандартного драйвера для Windows, вказавши папку driver / у вашому установчому каталозі SDK Драйвери для деяких пристроїв доведеться завантажити з сайту їх виробників На Linux і Mac OS X зазвичай немає потреби встановлювати драйвери окремо – вони поставляються з операційною системою Залежно від версії Linux може знадобитися здійснити кілька додаткових дій (зазвичай в частині створення нового файлу правил для udev) Для різних пристроїв набір дій може відрізнятися – веб-пошук вам на допомогу

Створення віртуального пристрою Android

SDK постачається з емулятором, що запускає так звані віртуальні пристрої Android (AVD) Це віртуальне пристрій складається з образу певної версії операційної системи Android, оболонки і набору атрибутів, що включають дозвіл дисплея, розмір карти памяті і т д Для створення нового AVD необхідно запустити SDK and AVD manager Ви можете зробити це як описаним в інструкції з інсталяції SDK способом, так і безпосередньо в Eclipse, натиснувши кнопку SDK manager (Диспетчер комплекту розробки) на панелі інструментів

1 Виберіть Virtual Devices (Віртуальні пристрої) зі списку в лівій частині В результаті ви побачите список доступних віртуальних пристроїв Якщо ви раніше не користувалися SDK manager, даний список буде порожній змінимо цей стан речей

2 Для створення нового AVD натисніть кнопку New (Новий) у правій частині Зявиться діалог (рис 27)

Рис 27 Діалог створення AVD в SDK manager

3 Кожне віртуальне пристрій володіє імям (поле Name (Імя)), за яким ви згодом будете на нього посилатися У Target (Ціль) визначається версія Android, яку повинен використовувати AVD Крім того, ви можете визначити обєм карти памяті для AVD, а також дозвіл екрана Для нашого простого проекту hel1о world можна вибрати в якості мети Android 15, залишивши інші параметри без змін В умовах реального тестування зазвичай доводиться створювати кілька віртуальних пристроїв, щоб перевірити роботу програми для різних версій ОС і розмірів дисплея

ПРИМІТКА

Якщо у вас немає реальних апаратів на Android різних версій і з різними екранами, для додаткового тестування сумісності додатки зручніше використовувати емулятор

Запуск програми

Тепер після налаштування пристроїв і AVD ви нарешті можете запустити вашу програму У Eclipse це робиться просто – клацанням правою кнопкою миші на проекті hel1оworl d в поданні Package Explorer (Диспетчер пакетів) і вибором пункту Run As Android Application (Виконати як додаток Android) (або ж натисканням кнопки Run (Виконати) на панелі інструментів) В результаті середу виконає у фоновому режимі наступні дії

1 Скомпілюйте проект в файл АРК (якщо з моменту минулого компіляції відбулися зміни в файлах)

2 Створить нову конфігурацію запуску для проекту Android якщо вона ще не існує (скоро ми поговоримо про конфігурацію запуску)

3 Встановить і запустить програму за допомогою запуску нового або використання вже запущеного емулятора відповідної версії Android або його розгортання і запуску на підключеному пристрої (на якому також встановлена ​​версія ОС не нижче певної параметром Min SDK Version (Мінімальна версія SDK) при створенні проекту)

Якщо ви тільки що створили AVD для Android 15 (як було описано вище), плагін ADT для Eclipse запустить новий екземпляр емулятора, розгорне в ньому АРК проекту hello world і запустить додаток На виході ви побачите щось, схоже на рис 28

Емулятор працює майже так само, як реальний пристрій, і ви можете взаємодіяти з ним за допомогою миші, як ніби використовуєте палець Однак є й декілька відмінностей від роботи з реальним апаратом

Емулятор не підтримує мультитач Рухайте покажчиком миші і уявляйте, що це палець У емуляторі відсутні деякі додатки (наприклад, Android Market)

Для зміни орієнтації екрану марно трясти монітор Замість цього використовуйте клавішу 7 на додатковому цифровому блоці клавіатури для повороту дисплея Щоб не набрати замість цього цифру 7, необхідно спочатку натиснути Num Lock

Рис 28 Приголомшливе додаток hello world в дії

Емулятор дуже, дуже повільно працює Не судіть про продуктивність вашого застосування по швидкості його роботи на емуляторі

На момент написання і емулятор підтримує тільки OpenGL ES 10 з декількома розширеннями Для наших цілей цього достатньо (за винятком того, що реалізація графічної бібліотеки на емуляторі страждає похибками і іноді ви можете отримувати не ті результати, що на реальному пристрої) Поки просто запамятайте, що не варто тестувати програми, що використовують OpenGL ES, на емуляторі

Спробуйте різні дії з емулятором, щоб звикнути до нього

ПРИМІТКА

Запуск нового екземпляра займає значний час (до декількох хвилин залежно від характеристик робочої станції) Щоб заощадити час, залишайте емулятор запущеним весь сеанс розробки, які не перезапуску його кожного разу

Іноді під час запуску програми Android автоматичний вибір емулятора / пристрої, що виконується плагіном ADT, стає перешкодою Наприклад, ми підключили кілька апаратів або емуляторів і хочемо протестувати проект на якомусь одному з них Щоб цього домогтися, можна відключити автоматичний вибір емулятора / пристрої в конфігурації запуску проекту Android До речі, що таке конфігурація запуску

Конфігурація запуску пропонує спосіб повідомити середовищі Eclipse, яким саме чином вона повинна запускати ваш додаток, отримавши відповідну команду Звичайно це виражається в можливості визначити аргументи командного рядка, що передаються програмі, аргументи віртуальної машини (у випадку з настільними додатками на Java SE) і т д Eclipse і сторонні плагіни пропонують різні конфігурації запуску для певних типів проекту ADT не виняток – він теж додає свою конфігурацію запуску в набір При першому запуску нашого застосування Eclipse і ADT створили нову конфігурацію Android Application Run з параметрами за замовчуванням

Щоб отримати доступ до конфігурації запуску вашого проекту, виконайте такі дії

1 Клацніть правою кнопкою миші на проекті в поданні Package Explorer (Диспетчер пакетів) і виберіть Run As – Run Configurations (Виконати як – Виконати конфігурацію)

2 Виберіть проект hello world зі списку ліворуч

3 У правій частині вікна ви можете змінити назву конфігурації запуску, а також скорегувати інші налаштування на вкладках Android, Target (Мета) і Commons tabs (Загальні вкладки)

4 Для перемикання розгортання з автоматичної в ручний режим перейдіть на вкладу Target (Мета) і виберіть Manual (Вручну)

Тепер при запуску програми вам буде запропоновано вибрати відповідний емулятор або пристрій для розгортання Цей діалог показаний на рис 29 Для наочності я додав кілька віртуальних пристроїв з різними версіями цільової ОС, а також підключив два реальних пристрою

Рис 29 Вибір емулятора / пристрої для запуску програми

Діалог показує всі запущені емулятори і підключення в даний момент пристрої, також інші AVD, що не запущені в даний момент

Налагодження додатки

Іноді додаток поводиться несподівано або перестає працювати Щоб визначити причину неприємностей, необхідна можливість налагодження програми Eclipse та ADT пропонують неймовірно потужні можливості для додатків Android Ми можемо встановлювати в коді точки переривання, отримувати значення змінних, поточний стан стека і багато іншого

Перед тим як почати використовувати налагодження, необхідно підкоригувати файл AndroidManifestxml Цей момент – свого роду проблема курки і яйця, оскільки раніше ми не вивчали файли маніфестів На даному етапі нам досить знати, що файл маніфесту визначає деякі атрибути нашого застосування Один з них – можливість налагодження додатка Даний параметр заданий у формі XML-атрибута тега Для включення можливості налагодження ми просто додаємо наступний атрибут тегу у файлі маніфесту: androi d: debuggable = true

У процесі розробки програми ви можете залишити цей атрибут у файлі маніфесту Однак не забудьте прибрати його, перед тим як передавати пакет на Android Market

Тепер, включивши для програми можливість налагодження, ви можете реалізувати її на емуляторі або пристрої Звичайно це виражається в установці точок переривання для аналізу стану програми на певних етапах Щоб встановити точку переривання, відкрийте файл програмного коду в Eclipse і зробіть подвійне клацання в сірій зоні перед тим рядком коду, яка вам потрібна Для демонстрації цієї можливості зробимо це в рядку 23 класу Не1oWorl dActi vi ty Це змусить відладчик зупиняти хід виконання програми при кожному натисканні екранної кнопки Точка переривання наголошується в редакторі коду маленьким гуртком перед рядком, на якій ви її встановили (рис 210) Щоб прибрати точку переривання, знову зробіть подвійне клацання на ній в редакторі коду

Рис 210 Установка точки переривання

Запуск налагодження дуже схожий на процес запуску програми, описаний вище Клацніть правою кнопкою миші на проекті в поданні Package Explorer (Диспетчер пакетів) і виберіть Debug As – Android Application (Налагодження – Додаток Android) Таким чином ви створите нову конфігурацію налагодження для вашого проекту (точно так само, як ви робили при простому запуску програми) Ви можете змінити настройки за замовчуванням для даної конфігурації, вибравши Debug As – Debug Configurations (Налагодження – Конфігурація налагодження) в контекстному меню

ПРИМІТКА

Замість застосування контекстного меню проекту в поданні Package Explorer (Диспетчер пакетів) ви можете використовувати меню Run (Виконати) для запуску та налагодження програми, а також отримувати доступ до налаштувань

Якщо ви стартуєте сесію налагодження вперше, Eclipse запитає вас, чи не хочете ви переключитися в перспективу Debug (Налагодження), на що ви можете погоджуватися без коливань Розглянемо цю перспективу На рис 211 показаний її зовнішній вигляд після запуску процесу налагодження нашого застосування hel1о world

Рис 211 Перспектива Debug (Налагодження)

Якщо ви памятаєте наш короткий огляд Eclipse, то знаєте, що в ній існують кілька перспектив, що складаються з набору уявлень для певних завдань Перспектива Debug (Налагодження) по виду сильно відрізняється від перспективи Run (Виконати)

Перше з нових уявлень, на яке слід звернути увагу, – Debug (Налагодження) в лівому верхньому кутку У ньому показані всі запущені в даний момент програми та стеки всіх їх потоків, якщо вони запущені в режимі налагодження

Нижче подання Debug (Налагодження) знаходиться подання для редагування коду, з яким ми вже знайомилися при вивченні перспективи Java

Подання Console (Консоль) виводить повідомлення від плагіна ADT, інформуючи нас про те, що відбувається

Подання LogCat стане одним з наших кращих друзів при розробці додатків У ньому показаний журнал повідомлень, що надходять від системних компонентів, інших додатків і нашої програми У ньому також можна побачити трасування стека, якщо додаток вийде з ладу, і наші власні повідомлення в реальному часі Більш докладно LogCat буде розглянуто в наступному розділі

Подання Outline (Контур) не дуже корисно в даній перспективі Ви, швидше за все, будете вивчати змінні і точки переривання, і поточне положення в програмі вам буде ні до чого Я зазвичай закриваю це подання з перспективи Debug (Налагодження), щоб залишити більше місця для інших

Подання Variables (Змінні) особливо корисно для налагоджувальних цілей Коли відладчик досягає точки переривання, у нас зявляється можливість вивчити і змінити змінні в поточному контексті програми

Нарешті, уявлення Breakpoints (Точки переривання) демонструє список встановлених нами точок переривання

Якщо ви допитливі, то, ймовірно, вже натиснули кнопку в працюючому додатку, щоб побачити роботу відладчика Він зупиниться на рядку 23 відповідно до встановленої точкою переривання Ви також можете помітити, що в поданні Variables (Змінні) зявилися змінні поточного блоку програми, що складається з самої активності (this) і параметра методу (v) Розкриваючи список змінних, ви можете досліджувати їх більш детально

Подання Debug (Налагодження) показує трасування стека, що відноситься до поточного методу Зверніть увагу: у вас може бути декілька запущених потоків, будь-який з яких ви можете призупиняти в будь-який час у поданні Debug (Налагодження) Рядок, на якій встановлена ​​точка переривання, підсвічується, вказуючи позицію в коді програми

Ви можете переказати отладчику виконати поточний вираз (натиснувши F6), зайти в методи, що викликаються поточним методом (натиснувши F5), або продовжити виконання програми звичайним чином (натиснувши F8) Домогтися тих же цілей можна також, використовуючи меню Run (Виконати) Врахуйте, що насправді параметрів налагодження більше, ніж я вам зараз розповів Як і завжди, я пропоную вам самим поекспериментувати над тим, що вам потрібно

ПРИМІТКА

Допитливість – основний будівельний матеріал для успішної розробки Android-ігор Вам доведеться дійсно близько познайомитися з середовищем розробки, щоб отримати від неї найбільшу віддачу а не може описати всі подробиці Eclipse, тому я знову закликаю вас експериментувати

LogCat і DDMS

Плагін ADT встановлює багато нових уявлень і перспектив для використання в Eclipse Одне з найбільш корисних уявлень (про яке побіжно згадано в попередньому розділі) називається LogCat

LogCat – система журналювання подій в Android, що дозволяє системним компонентам і додатків виводити інформацію на різних рівнях Кожен запис в журналі складається з дати, часу, рівня журналирования, ID процесу-джерела записи, тега (визначеного додатком самостійно) і власне повідомлення

Подання LogCat збирає і виводить цю інформацію з підключеного емулятора або реального пристрою На рис 212 показаний приклад виведення у поданні LogCat

Рис 212 Подання LogCat

Зверніть увагу на кнопки у верхньому правому куті LogCat

Перші пять з них дозволяють вибрати рівні журналирования, які ви хочете побачити

Кнопка зелений плюс дає можливість визначити фільтр, заснований на тезі, ID процесу, рівні журналирования Він дуже допоможе вам, якщо ви захочете побачити лог тільки вашого додатки (яке, ймовірно, буде використовувати особливий тег)

Інші кнопки дозволяють редагувати і змінювати фільтр, а також очищати вікно виводу

Якщо підключено одночасно декілька пристроїв / емуляторів, LogCat буде виводити інформацію тільки від одного з них Щоб отримувати більш детальну інформацію, ви можете скористатися перспективою DDMS

DDMS (Dalvik Debugging Monitor Server) пропонує більш різноманітні відомості про процеси і віртуальних машинах Dalvik, запущених на всіх підключених пристроях Переключитися на перспективу DDMS можна в будь-який момент за допомогою пункту меню Window – Open Perspective – Other – DDMS (Вікно – Відкрити перспективу – Інші – DDMS) На рис 213 показано, як зазвичай виглядає перспектива DDMS

Рис 213 DDMS в дії

Як і в інших перспективах, в нашому розпорядженні кілька спеціальних уявлень, які виконують для нас корисну роботу У даному випадку ми хочемо збирати інформацію про всі процеси, їх віртуальних машинах, потоках, поточний стан памяті, даних від LogCat по конкретному пристрою і т д Розглянемо ці подання

Devices (Пристрої) – демонструє всі підключені пристрої і емулятори, а також працюючі на них процеси За допомогою кнопок на панелі інструментів ви можете виконувати різні дії: робити налагодження обраного процесу, записувати стан памяті і дані від потоків, а також робити знімки екрана

LogCat – аналогічно описаному в попередньому розділі, з однією відмінністю: виводить інформацію від пристрою, обраного в поданні Devices (Пристрої)

Emulator Control (Контроль емулятора) – дозволяє змінювати поведінку запущеного екземпляра емулятора Ви можете, наприклад, змусити його гененеріровать пробні GPS-координати для тестування

Threads (Потоки) – виводить дані про потоки, які використовуються процесом, який обраний у поданні Devices (Пристрої) Інформація буде показуватися, тільки якщо ви включили відстеження потоків (це можна зробити, натиснувши пяту зліва кнопку в поданні Devices (Пристрої))

Heap (Купа) (не показане на рис 213) – постачає інформацією про статус памяті пристрою Як і у випадку з даними про потоках, необхідно явно включити відстеження стану памяті в поданні Devices (Пристрої) натисненням другий ліворуч кнопки

Allocation Tracker (Відстеження розподілів) – показує використані недавно класи Це дуже допомагає при боротьбі з витоками памяті

File Explorer (Провідник) – дозволяє змінювати файли на підключеному Android-пристрої або примірнику емулятора Ви можете перетягувати файли в це подання так само, як ви робите це при роботі з операційною системою

DDMS насправді – окремий додаток, інтегроване в Eclipse за допомогою плагіна ADT Ви можете запускати його і окремо з каталогу $ ANDR0ID H0M Е / tools directory (% ANDROID HOME% / tools при використанні Windows) Воно не підключається до пристроїв безпосередньо, застосовуючи для цього Android Debug Bridge (ADB) – ще одну утиліту, включену в SDK Розглянемо її, щоб доповнити наші знання про середовище розробки Android

Використання ADB

ADB дозволяє управляти підключеними пристроями та примірниками емулятора Вона складається з трьох різних компонентів

Клієнтський додаток, запущене на машині розробника за допомогою команди adb (ця команда буде працювати, якщо ви правильно налаштували ваші змінні оточення) Коли ми говоримо про ADB, то маємо на увазі якраз цю утиліту командного рядка

Сервер, також запущений на компютері розробника Він встановлюється у вигляді фонового сервісу і відповідає за зєднання між програмою ADB і будь-яким підключеним пристроєм чи примірником емулятора

Демон ADB, який також є фоновим процесом і запускається на кожному телефоні або емуляторі Сервер ADB використовує цей демон для підключення

Зазвичай ми застосовуємо ADB через DDMS, ігноруючи існування окремої утиліти командного рядка Але іноді буває корисно запускати його окремо, тому коротко вивчимо деякі його функції

ПРИМІТКА

Для одержання повного довідника доступних команд зверніться до документації по ADB на сайті Android Developers (http://developerandroidcom)

Дуже корисна завдання, що виконується за допомогою ADB, – отримання списку всіх підключених до ADB-серверу (а значить, і до компютера) пристроїв і емуляторів Для цього виконайте наступну команду консолі (зверніть увагу: символ не є частиною команди):

У результаті на екран буде виведений список всіх підключених пристроїв і емуляторів з відповідними серійними номерами:

Серійний номер пристрою або емулятора використовується для виконання наступних команд Наприклад, наступна команда встановить АРК-файл myapp а рк з машини розробника на пристрій з серійним номером НТ019Р803783:

Аргумент-s може використовуватися з будь-якою командою ADB, що виконує будь-які дії з певним пристроєм

Існують також команди для копіювання файлів між компютером і пристроєм (емулятором) Результат дії наступної команди – копіювання локального файлу myfi1е txt на карту памяті пристрою за серійним номером НТ019Р803783:

Щоб справити зворотне копіювання fi1е txt з карти памяті, використовуйте наступний набір символів:

Якщо до ADB-серверу в даний момент підключено всього один пристрій або емулятор, ви можете опустити серійний номер – adb визначить його автоматично

Звичайно, можливості ADB не обмежуються описаними нами функціями Багато хто з них реалізуються через DDMS, і в більшості випадків ми не будемо застосовувати командний рядок Однак для невеликих завдань вона буває ідеальним рішенням

Підводячи підсумок

Середа розробки Android іноді може викликати страх На щастя, для початку роботи вам необхідна тільки частина всього функціоналу

Найголовніше, що ви повинні зрозуміти після вивчення – як все це працює разом JDK і Android SDK служать основою всієї розробки для Android Вони пропонують інструменти для компілювання, розгортання і запуску додатків на примірниках емулятора і пристроях Для прискорення процесу розробки ми використовуємо Eclipse в поєднанні з плагіном ADT, що рятує нас від незручної роботи з JDK і SDK в командному рядку Сам Eclipse побудований на кількох кореневих концепціях: робітників просторах, керуючих проектами представлених, що пропонують особливу функціональність (наприклад, редагування програмного коду або висновок LogCat) перспективах, які обєднують вистави для виконання певних завдань (наприклад, налагодження) конфігураціях запуску та налагодження, що дозволяють визначити параметри запуску або налагодження додатки

Обовязкова умова оволодіння всім цим багатством – практика, як би нудно це не звучало У ході вивчення даної і ми реалізуємо проекти, які познайомлять вас з середовищем розробки Android Однак не варто на цьому зупинятися – тільки від вас залежить, чи робити наступні кроки

Тепер, коли ви засвоїли всю цю інформацію, можете рухатися вперед до того, заради чого все це затіяли: розробці ігор

Джерело: Mario Zechner / Маріо Цехнер, «Програмування ігор під Android», пров Єгор Сидорович, Євген зазноби, Видавництво «Пітер»

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*