27
Android: Інструменти програміста Одуха Анатолій квітень 22, 2012 anatoliy.odukha@globallo gic.com

Android: Інструменти програміста

Embed Size (px)

Citation preview

Page 1: Android: Інструменти програміста

Android: Інструменти програміста

Одуха Анатолійквітень 22, [email protected]

Page 2: Android: Інструменти програміста

Структура доповіді:• Що таке «інструментарій», чому він

потрібен• Де і як шукати драйвер• Android Assets Studio• Android SDK і його утиліти• TraceView and MAT• Dev Tools App• Оцінюємо мережевий трафік• Енергоспоживання• Crash Log• Reverse engineering: apk файл

Тривалість: 30хв

Page 3: Android: Інструменти програміста

Для чого це потрібно?• Розробка ї Android програм – тренд ринку.• Потреба в програмістах

– Велика кількість малих проектів, які треба швидко закривати

– Міграція java програмістів в мобільну розробку– Java для багатьох знайома , тому підхід до вивчення

дещо поверхневий

• Без знання як користуватися засобами розробки робота не можлива або не ефективна

Page 4: Android: Інструменти програміста

Інструментарій• Поняття «інструмент», «утіліта»• Де їх брати? Хто це все пише?• Як ефективно знайти і застосувати?

– Попередній досвід і систематичне навчання– Усвідомлення конкретної проблеми і того, що для іі

розв'язку вже може існувати готовий інструментарій

– Прочитати офіційну документацію http://developer.android.com/guide/developing/tools/index.html

• Android Tools Project Site сайт всіх утіліт інтегрованих з SDK і плагіна до Eclipse (ADT)

Page 5: Android: Інструменти програміста

Квест: зроби скріншот• Практичний приклад коли потрібна утилітах в

процесі розробки:– Відправити скріншот замовнику – Замовник пише про візуальні дефекти, на прохання

прислати

• Особливості операція на різних смартфонах • Скільки часу це займе, якщо точно не знаєш як

робити?

Page 6: Android: Інструменти програміста

Drivers • Де взяти?

– USB driver з SDK– Драйвера з офіційних сайтів. Часто тягнуть за собою

велику кількість – Пошук по forum.xda-developers.com найкращий варіант.

Наприклад там є драйвер Samsung який не тягне за собою 100+Мб різних програм, на відміну від офіційної версії.

• Проблем при одночасному використанні драверів від різних виробників поки що не помічено

• ADB не обов'язково буде працювати з девайсом. E.g. Kindle Fire інструкція як налаштувати abd

*

* для Windows OS

Page 7: Android: Інструменти програміста

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

Page 8: Android: Інструменти програміста

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

Page 9: Android: Інструменти програміста

Android Asset Studio:launcher icon

Page 10: Android: Інструменти програміста

Android Asset Studio:menu icon

Page 11: Android: Інструменти програміста

Android Asset Studio:deviceframegenerator

Page 12: Android: Інструменти програміста

SDK Tools• Офіційний набір програміста• Open-source проект Android Tools Project Site

http://tools.android.com/• Загружати з http://developer.android.com/

Page 13: Android: Інструменти програміста

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

Page 14: Android: Інструменти програміста

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

Page 15: Android: Інструменти програміста

SDK tools– mksdcard - створює образ діска, наприклад для SD

cart в емуляторі.– Monkey генерує випадковим чином активність

користувача - кліки, жести, system-level events. Використовувати для стрес тестів.

– monkeyrunner надає API яке дозволяє керувати девайсом або емулятором з зовнішнього кода

– ProGuard - обфускатор– sqlite3 CLI shell для sqlite, дозволяє працювати з

дата файлами створеними на девайсах– traceview - перегляд лог файлів, аналізу часу роботи

функцій в програмі– Zipalign - оптимізація apk файлів

Page 16: Android: Інструменти програміста

android tool: CLI керування проектом

• Повний опис параметрів на сайті • Опис CLI керування проектом на сайті

– Створити новий проект– Додати ant build.xml– Обновити існуючий проект – змінити target– Створити Library Project

• Призначення – автоматизація build системи

Page 17: Android: Інструменти програміста

DDMS• Повний опис на сайті • Swiss knife tool:

– Перегляд "heap usage" – Відслідковуваня використання памяті Tracking

memory allocation– Робота з файловою системою девайса/емулятора– Перегляд даних про потік(thread information)– Method profiling– Network Traffic tool– LogCat– Мережа - замінти статус, швидкість, затримки– Сімуляція дзвінків і SMS – Емуляція данних з GPS

Page 18: Android: Інструменти програміста

DDMS: Allocations Tracker

Page 19: Android: Інструменти програміста

DDMS: Dump HPROF & MAT• Поставити MAT -

Memory Analyzer Plugin for Eclipse• Отримати hprof за допомогою DDMS• Конвертувати в «рідний» формат - hprof-

conv.exe • Відкрити в MAT

Page 20: Android: Інструменти програміста

DDMS: Dump HPROF & MAT

Page 21: Android: Інструменти програміста

Hierarchy Viewer

Page 22: Android: Інструменти програміста

Dev Tools App• apk дістати з емулятора і загрузити на

девайс– adb -e pull /system/app/Development.apk

./Development.apk– adb -d install Development.apk

Page 23: Android: Інструменти програміста

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

Page 24: Android: Інструменти програміста

Використання батареї• Точних методів не існує

– Багато програм в маркеті які приблизно показують долю витратах енергіі

– Можливі неопосередковані втрати, які не видно (e.g. програма тримає WiFi)

• Визначення проблеми– Порівняння розряду батареї з/без програми за

досить довгий проміжок часу– Скарги користувачів

Page 25: Android: Інструменти програміста

Crash Log - ACRA• Дозволяють швидко виявити проблеми зі

стабільністю роботи• Вибір реалізаціі

– Власна реалізація– Готова бібліотека

• ACRA open-source crash log for android– Гнучка в налаштуванні– Стабільна– Нема потреби у власному сервері– Репорти приходять як Google Forms– Підтримка CSV

Page 26: Android: Інструменти програміста

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/зібрати назад

Page 27: Android: Інструменти програміста

The End.Questions???