SlideShare a Scribd company logo
1 of 27
Android: Інструменти
програміста
Одуха Анатолій
квітень 22, 2012
anatoliy.odukha@globallogic.com
Структура доповіді:
• Що таке «інструментарій», чому він
потрібен
• Де і як шукати драйвер
• 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/inde
• 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, USBVID_1949&PID_0006
%CompositeAdbInterface% = USB_Install, USBVID_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:
device
frame
generator
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???

More Related Content

Viewers also liked

Aplicaciones del mantenimiento
Aplicaciones del mantenimientoAplicaciones del mantenimiento
Aplicaciones del mantenimiento
jairo curipoma
 
La gestion curricular en las instituciones educativas ccesa007
La gestion curricular en las instituciones educativas ccesa007La gestion curricular en las instituciones educativas ccesa007
La gestion curricular en las instituciones educativas ccesa007
Demetrio Ccesa Rayme
 
Knowledge Process Outsourcing (KPO) in Education Sector – GUI Model Approach
Knowledge Process Outsourcing (KPO) in Education Sector – GUI Model ApproachKnowledge Process Outsourcing (KPO) in Education Sector – GUI Model Approach
Knowledge Process Outsourcing (KPO) in Education Sector – GUI Model Approach
Ashok Rangaswamy
 
Computer Hardware and software
Computer Hardware and softwareComputer Hardware and software
Computer Hardware and software
VisualBee.com
 

Viewers also liked (11)

Aula virtual
Aula virtualAula virtual
Aula virtual
 
How to Start a Startup - Yury Chernushenko - Lecture #1
How to Start a Startup - Yury Chernushenko - Lecture #1How to Start a Startup - Yury Chernushenko - Lecture #1
How to Start a Startup - Yury Chernushenko - Lecture #1
 
PLANIFICACIÓN VIAL URBANA
PLANIFICACIÓN VIAL URBANAPLANIFICACIÓN VIAL URBANA
PLANIFICACIÓN VIAL URBANA
 
Aplicaciones del mantenimiento
Aplicaciones del mantenimientoAplicaciones del mantenimiento
Aplicaciones del mantenimiento
 
Formateo de PC paso a paso - tutomar
Formateo de PC paso a paso - tutomarFormateo de PC paso a paso - tutomar
Formateo de PC paso a paso - tutomar
 
La gestion curricular en las instituciones educativas ccesa007
La gestion curricular en las instituciones educativas ccesa007La gestion curricular en las instituciones educativas ccesa007
La gestion curricular en las instituciones educativas ccesa007
 
Concretos de alto desempeño vf
Concretos de alto desempeño vfConcretos de alto desempeño vf
Concretos de alto desempeño vf
 
Effective Presentation Using PowerPoint
Effective Presentation Using PowerPointEffective Presentation Using PowerPoint
Effective Presentation Using PowerPoint
 
Knowledge Process Outsourcing (KPO) in Education Sector – GUI Model Approach
Knowledge Process Outsourcing (KPO) in Education Sector – GUI Model ApproachKnowledge Process Outsourcing (KPO) in Education Sector – GUI Model Approach
Knowledge Process Outsourcing (KPO) in Education Sector – GUI Model Approach
 
Computer Hardware and software
Computer Hardware and softwareComputer Hardware and software
Computer Hardware and software
 
ملاحظات اخلاقی در سرطان
ملاحظات اخلاقی در سرطانملاحظات اخلاقی در سرطان
ملاحظات اخلاقی در سرطان
 

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

Programne zabezpechenna
Programne zabezpechennaProgramne zabezpechenna
Programne zabezpechenna
1cana1
 
Programne zabezpechenna(pz)
Programne zabezpechenna(pz)Programne zabezpechenna(pz)
Programne zabezpechenna(pz)
Oksana Kutsenko
 

Similar to Android: Інструменти програміста (20)

Retroscope
RetroscopeRetroscope
Retroscope
 
Android Platform Architecture
Android Platform ArchitectureAndroid Platform Architecture
Android Platform Architecture
 
DrupalTour. Zhytomyr — Drupal Optimization (Dmitry Kinakh, InternetDevels)
DrupalTour. Zhytomyr — Drupal Optimization (Dmitry Kinakh, InternetDevels)DrupalTour. Zhytomyr — Drupal Optimization (Dmitry Kinakh, InternetDevels)
DrupalTour. Zhytomyr — Drupal Optimization (Dmitry Kinakh, InternetDevels)
 
Изучение интерфейсов операционных систем с помощью Embedded System
Изучение интерфейсов операционных систем с помощью Embedded SystemИзучение интерфейсов операционных систем с помощью Embedded System
Изучение интерфейсов операционных систем с помощью Embedded System
 
Drupal Optimization
Drupal OptimizationDrupal Optimization
Drupal Optimization
 
Програмне забезпечення LINUX
Програмне забезпечення LINUXПрограмне забезпечення LINUX
Програмне забезпечення LINUX
 
Programne zabezpechenna
Programne zabezpechennaProgramne zabezpechenna
Programne zabezpechenna
 
5 Підсистема введення/виведення. OPC
5 Підсистема введення/виведення. OPC5 Підсистема введення/виведення. OPC
5 Підсистема введення/виведення. OPC
 
Programne zabezpechenna(pz)
Programne zabezpechenna(pz)Programne zabezpechenna(pz)
Programne zabezpechenna(pz)
 
3 клас урок 28 як створювати програми
3 клас урок 28 як створювати програми3 клас урок 28 як створювати програми
3 клас урок 28 як створювати програми
 
Загальні принципи розроблення АРМ оператора на базі SCADA/HMI
Загальні принципи розроблення АРМ оператора на базі SCADA/HMIЗагальні принципи розроблення АРМ оператора на базі SCADA/HMI
Загальні принципи розроблення АРМ оператора на базі SCADA/HMI
 
Корнілов Андрій
Корнілов АндрійКорнілов Андрій
Корнілов Андрій
 
Основи мікроелектроніки з Arduino
Основи мікроелектроніки з ArduinoОснови мікроелектроніки з Arduino
Основи мікроелектроніки з Arduino
 
"Rethinking Continuous Delivery", Andrii Nasinnyk
"Rethinking Continuous Delivery",  Andrii Nasinnyk"Rethinking Continuous Delivery",  Andrii Nasinnyk
"Rethinking Continuous Delivery", Andrii Nasinnyk
 
4 клас урок 24 середовище виконання алгоритмів скретч
4 клас урок 24 середовище виконання алгоритмів скретч4 клас урок 24 середовище виконання алгоритмів скретч
4 клас урок 24 середовище виконання алгоритмів скретч
 
ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python...
ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python...ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python...
ЮРІЙ СЕРДЮК «Патерни проектування в автоматизації. Практичний досвід з Python...
 
Presentation IES 2012
Presentation IES 2012Presentation IES 2012
Presentation IES 2012
 
7_0711.pptx
7_0711.pptx7_0711.pptx
7_0711.pptx
 
3 клас урок 27 як працювати в середовищі програмування скретч
3 клас урок 27 як працювати в середовищі програмування скретч3 клас урок 27 як працювати в середовищі програмування скретч
3 клас урок 27 як працювати в середовищі програмування скретч
 
Computers and Computing Works lecture №7
Computers and Computing Works lecture №7Computers and Computing Works lecture №7
Computers and Computing Works lecture №7
 

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

  • 2. Структура доповіді: • Що таке «інструментарій», чому він потрібен • Де і як шукати драйвер • Android Assets Studio • Android SDK і його утиліти • TraceView and MAT • Dev Tools App • Оцінюємо мережевий трафік • Енергоспоживання • Crash Log • Reverse engineering: apk файл Тривалість: 30хв
  • 3. Для чого це потрібно? • Розробка ї Android програм – тренд ринку. • Потреба в програмістах – Велика кількість малих проектів, які треба швидко закривати – Міграція java програмістів в мобільну розробку – Java для багатьох знайома , тому підхід до вивчення дещо поверхневий • Без знання як користуватися засобами розробки робота не можлива або не ефективна
  • 4. Інструментарій • Поняття «інструмент», «утіліта» • Де їх брати? Хто це все пише? • Як ефективно знайти і застосувати? – Попередній досвід і систематичне навчання – Усвідомлення конкретної проблеми і того, що для іі розв'язку вже може існувати готовий інструментарій – Прочитати офіційну документацію http://developer.android.com/guide/developing/tools/inde • Android Tools Project Site сайт всіх утіліт інтегрованих з SDK і плагіна до Eclipse (ADT)
  • 5. Квест: зроби скріншот • Практичний приклад коли потрібна утилітах в процесі розробки: – Відправити скріншот замовнику – Замовник пише про візуальні дефекти, на прохання прислати • Особливості операція на різних смартфонах • Скільки часу це займе, якщо точно не знаєш як робити?
  • 6. Drivers • Де взяти? – USB driver з SDK – Драйвера з офіційних сайтів. Часто тягнуть за собою велику кількість – Пошук по forum.xda-developers.com найкращий варіант. Наприклад там є драйвер Samsung який не тягне за собою 100+Мб різних програм, на відміну від офіційної версії. • Проблем при одночасному використанні драверів від різних виробників поки що не помічено • ADB не обов'язково буде працювати з девайсом. E.g. Kindle Fire інструкція як налаштувати abd * * для Windows OS
  • 7. 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, USBVID_1949&PID_0006 %CompositeAdbInterface% = USB_Install, USBVID_1949&PID_0006&MI_01
  • 8. 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
  • 12. SDK Tools • Офіційний набір програміста • Open-source проект Android Tools Project Site http://tools.android.com/ • Загружати з http://developer.android.com/
  • 13. 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
  • 14. 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
  • 15. SDK tools – mksdcard - створює образ діска, наприклад для SD cart в емуляторі. – Monkey генерує випадковим чином активність користувача - кліки, жести, system-level events. Використовувати для стрес тестів. – monkeyrunner надає API яке дозволяє керувати девайсом або емулятором з зовнішнього кода – ProGuard - обфускатор – sqlite3 CLI shell для sqlite, дозволяє працювати з дата файлами створеними на девайсах – traceview - перегляд лог файлів, аналізу часу роботи функцій в програмі – Zipalign - оптимізація apk файлів
  • 16. android tool: CLI керування проектом • Повний опис параметрів на сайті • Опис CLI керування проектом на сайті – Створити новий проект – Додати ant build.xml – Обновити існуючий проект – змінити target – Створити Library Project • Призначення – автоматизація build системи
  • 17. DDMS • Повний опис на сайті • Swiss knife tool: – Перегляд "heap usage" – Відслідковуваня використання памяті Tracking memory allocation – Робота з файловою системою девайса/емулятора – Перегляд даних про потік(thread information) – Method profiling – Network Traffic tool – LogCat – Мережа - замінти статус, швидкість, затримки – Сімуляція дзвінків і SMS – Емуляція данних з GPS
  • 19. DDMS: Dump HPROF & MAT • Поставити MAT - Memory Analyzer Plugin for Eclipse • Отримати hprof за допомогою DDMS • Конвертувати в «рідний» формат - hprof- conv.exe • Відкрити в MAT
  • 22. Dev Tools App • apk дістати з емулятора і загрузити на девайс – adb -e pull /system/app/Development.apk ./Development.apk – adb -d install Development.apk
  • 23. 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
  • 24. Використання батареї • Точних методів не існує – Багато програм в маркеті які приблизно показують долю витратах енергіі – Можливі неопосередковані втрати, які не видно (e.g. програма тримає WiFi) • Визначення проблеми – Порівняння розряду батареї з/без програми за досить довгий проміжок часу – Скарги користувачів
  • 25. Crash Log - ACRA • Дозволяють швидко виявити проблеми зі стабільністю роботи • Вибір реалізаціі – Власна реалізація – Готова бібліотека • ACRA open-source crash log for android – Гнучка в налаштуванні – Стабільна – Нема потреби у власному сервері – Репорти приходять як Google Forms – Підтримка CSV
  • 26. 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/зібрати назад

Editor's Notes

  1. 1.Структура доповіді 2.Оглядовість – список корисних інструментів, їх опис, але це не практична сесія.
  2. Додатковий приклад: [2010-02-03 10:31:14 - androidVNC]Error generating final archive:Debug certificate expired on 1/30/10 2:35 PM!