Android: Інструменти програміста
Одуха Анатолійквітень 22, [email protected]
Структура доповіді:• Що таке «інструментарій», чому він
потрібен• Де і як шукати драйвер• Android Assets Studio• Android SDK і його утиліти• TraceView and MAT• Dev Tools App• Оцінюємо мережевий трафік• Енергоспоживання• Crash Log• Reverse engineering: apk файл
Тривалість: 30хв
Для чого це потрібно?• Розробка ї Android програм – тренд ринку.• Потреба в програмістах
– Велика кількість малих проектів, які треба швидко закривати
– Міграція java програмістів в мобільну розробку– Java для багатьох знайома , тому підхід до вивчення
дещо поверхневий
• Без знання як користуватися засобами розробки робота не можлива або не ефективна
Інструментарій• Поняття «інструмент», «утіліта»• Де їх брати? Хто це все пише?• Як ефективно знайти і застосувати?
– Попередній досвід і систематичне навчання– Усвідомлення конкретної проблеми і того, що для іі
розв'язку вже може існувати готовий інструментарій
– Прочитати офіційну документацію http://developer.android.com/guide/developing/tools/index.html
• Android Tools Project Site сайт всіх утіліт інтегрованих з SDK і плагіна до Eclipse (ADT)
Квест: зроби скріншот• Практичний приклад коли потрібна утилітах в
процесі розробки:– Відправити скріншот замовнику – Замовник пише про візуальні дефекти, на прохання
прислати
• Особливості операція на різних смартфонах • Скільки часу це займе, якщо точно не знаєш як
робити?
Drivers • Де взяти?
– USB driver з SDK– Драйвера з офіційних сайтів. Часто тягнуть за собою
велику кількість – Пошук по forum.xda-developers.com найкращий варіант.
Наприклад там є драйвер Samsung який не тягне за собою 100+Мб різних програм, на відміну від офіційної версії.
• Проблем при одночасному використанні драверів від різних виробників поки що не помічено
• ADB не обов'язково буде працювати з девайсом. E.g. Kindle Fire інструкція як налаштувати abd
*
* для Windows OS
Google USB Driver • google-usb_drivers в "3rd party tools"
– Підходить лише для частини девайсів– Можливо ваш девайс буде з ним працювати, якщо
поправити adb_usb.ini та android_winusb.inf
*
* для Windows OS
Kindle Fire:В текстовому редакторі додамо в кінець файла стрічку:0x1949В директоріі SDK знаходимо (пошуком, структура директорій може залежати від версії) android_winusb.inf. В секції [Google.NTx86] і [Google.NTamd64] додати:;Kindle Fire%SingleAdbInterface% = USB_Install, USB\VID_1949&PID_0006%CompositeAdbInterface% = USB_Install, USB\VID_1949&PID_0006&MI_01
Android Asset Studio• On-line інструмент генерації графіки
– Лінк тут– Launcher icons– Menu icons– Action bar icons (Android 3.0+)– Tab icons– Notification icons
• Open-source проект http://android-ui-utils.googlecode.com• Додатково містить stencils для створення прототипів UI
Android Asset Studio:launcher icon
Android Asset Studio:menu icon
Android Asset Studio:deviceframegenerator
SDK Tools• Офіційний набір програміста• Open-source проект Android Tools Project Site
http://tools.android.com/• Загружати з http://developer.android.com/
SDK Tools• Eclipse plugins
– Редагування, компіляція і дебагер для Андроід проектів. Сode completion при редагуванні ресурсів
– Візуальний редактор layouts і manifest файлів– Інтегровані в Eclipse perspective для hierarchy
viewer, ddms
• Емулятор• SDK & AVD Manager - загрузка SDK і його
компонентів, створення і керування AVD• Hierarchyviewer - аналізує ієрархію views в
програмі• ddms - Dalvic Debug Monitor Service• Command line tools
SDK tools– android - створення і редагування AVDs, проектів,
інсталяція компонентів SDK.– Dalvik Debug Monitor Server (ddms) – доступ до
більшості можливостей дебагера і оптимізації з графічного інтерфейсу
– dmtracedump - генерує графіки/діаграми з trace log. Використовує Graphviz який необхідно доставити
– Draw 9-patch - WYSIWYG редактор nine-patch графіки– Android Emulator (emulator) - побудований на QEMU
емулятор– Hierarchy Viewer (hierarchyviewer) - аналізує
структуру UI– hprof-conv - конвертує HPROF файл в формат
зрозумілий і іншим java tools– layoutopt - допомагає аналізувати і оптимізувати
layouts
SDK tools– mksdcard - створює образ діска, наприклад для SD
cart в емуляторі.– Monkey генерує випадковим чином активність
користувача - кліки, жести, system-level events. Використовувати для стрес тестів.
– monkeyrunner надає API яке дозволяє керувати девайсом або емулятором з зовнішнього кода
– ProGuard - обфускатор– sqlite3 CLI shell для sqlite, дозволяє працювати з
дата файлами створеними на девайсах– traceview - перегляд лог файлів, аналізу часу роботи
функцій в програмі– Zipalign - оптимізація apk файлів
android tool: CLI керування проектом
• Повний опис параметрів на сайті • Опис CLI керування проектом на сайті
– Створити новий проект– Додати ant build.xml– Обновити існуючий проект – змінити target– Створити Library Project
• Призначення – автоматизація build системи
DDMS• Повний опис на сайті • Swiss knife tool:
– Перегляд "heap usage" – Відслідковуваня використання памяті Tracking
memory allocation– Робота з файловою системою девайса/емулятора– Перегляд даних про потік(thread information)– Method profiling– Network Traffic tool– LogCat– Мережа - замінти статус, швидкість, затримки– Сімуляція дзвінків і SMS – Емуляція данних з GPS
DDMS: Allocations Tracker
DDMS: Dump HPROF & MAT• Поставити MAT -
Memory Analyzer Plugin for Eclipse• Отримати hprof за допомогою DDMS• Конвертувати в «рідний» формат - hprof-
conv.exe • Відкрити в MAT
DDMS: Dump HPROF & MAT
Hierarchy Viewer
Dev Tools App• apk дістати з емулятора і загрузити на
девайс– adb -e pull /system/app/Development.apk
./Development.apk– adb -d install Development.apk
Network Sniffer• Оцінити об’єм трафіка згенерованого
програмою/девайсом• Корисний при розробці/відлагодженні
деяких типів програм• Rooted android + tcpdump
– Root device– Find and copy any pre-build tcpdump bin for
Android
• DDMS Network Statistics• WiFi карта на компі як точка доступа• Fiddler Web Debugger
– Робота з HTTPS– Зручно аналізувати HTTP
Використання батареї• Точних методів не існує
– Багато програм в маркеті які приблизно показують долю витратах енергіі
– Можливі неопосередковані втрати, які не видно (e.g. програма тримає WiFi)
• Визначення проблеми– Порівняння розряду батареї з/без програми за
досить довгий проміжок часу– Скарги користувачів
Crash Log - ACRA• Дозволяють швидко виявити проблеми зі
стабільністю роботи• Вибір реалізаціі
– Власна реалізація– Готова бібліотека
• ACRA open-source crash log for android– Гнучка в налаштуванні– Стабільна– Нема потреби у власному сервері– Репорти приходять як Google Forms– Підтримка CSV
Reverse engineering: apk файл• dex2jar http://code.google.com/p/dex2jar/• JD – java decompiler
http://java.decompiler.free.fr/– Малоймовірно, що вдасться знову скомпілювати
результат роботи JD.
• smali – assembler/disassembler dex формата http://code.google.com/p/smali/
• Збірник apktool з xda-developers– Базується на smali/baksmali– Відновлює хмл файли– Стабільно працює цикл: декомпіліція/поправити
маніфест, код, layouts/зібрати назад
The End.Questions???