Android studio налагодження на реальному пристрої. Тестування на реальному пристрої. Отримання вихідних текстів із пакета програми

При створенні додатків Android більшість розробників користуються різними емуляторами. Це зручно, оскільки не потрібно зберігати купу різних апаратів у ящиках столу, немає головного болю з підключенням пристроїв до комп'ютера, немає купи дротів на столі. Клацаємо мишкою та бачимо роботу своєї програми на екрані комп'ютера. Просто та елегантно. Тим не менш, емулятор – не телефон. Він обмежений у своїх можливостях. Якщо Ваша програма використовує якісь специфічні апаратні функції, наприклад пов'язані з роботою камери, Bluetooth або USB підключенням, роботою під час прийому телефонного дзвінка, з великою ймовірністю можна сказати, що Вам не обійтися без налагодження на реальному пристрої. На щастя, Eclipse містить все необхідне для вирішення цього завдання.

Підключення телефону та запуск програми

Перш ніж підключати телефон до комп'ютера за допомогою кабелю даних USB, необхідно виконати кілька підготовчих дій. Справа в тому, що Eclipse за замовчуванням налаштований на роботу з емулятором, і нам потрібно скоригувати конфігурацію режиму налагодження. Це просто. Вибираємо пункт меню Run > Debug Configuration, а потім DroidDebug. На вкладці Target у розділі Deployment Target Selection Mode потрібно встановити перемикач у положення Manual та натиснути Apply. Таким чином увімкнено ручний режим вибору платформи. Тепер під час запуску програми з'явиться діалогове вікно, де можна вибрати емулятор або один із підключених телефонів.

Щоб телефон міг працювати в режимі налагодження, його також потрібно налаштувати належним чином. Перебуваючи на домашньому екрані, потрібно клацнути по кнопці Menu і знайти програму "Параметри" (Settings). У цій програмі відкрийте розділ “Програми” (Applications), а потім – “Розробка” (Development). У екрані необхідно поставити галочку поруч із пунктом “Налагодження USB” (USD Debgging). Ця послідовність дій працює на більшості телефонів, але цілком можливо, що на Вашому пристрої режим налагодження UBS включається десь в іншому місці.

Підключіть телефон до комп'ютера та натисніть кнопку Debug у Eclipse. У діалоговому вікні Ви побачите два списки: “Chose a running Android device” та “Launch a new Android Virtual Device”. У першому їх перераховані підключені до комп'ютера телефони, у другому - емулятори. Виберіть свій телефон у першому списку. Eclipse виконає інсталяцію програми, що налаштовується, на телефон і запустить його. Можете налагоджувати свою програму.

Моніторинг стану телефону DDMS (Dalvik Debug Monitor Service)

Вся інформація про стан телефону доступна через спеціальний інструмент, який називається моніторинговим сервісом налагодження DDMS (Dalvik Debug Monitor Service). Для його запуску клацніть кнопку із зображенням андроїда у верхньому правому куті Eclipse.

Вікно DDMS складається з кількох панелей. На панелі Devices відображається список доступних емуляторів та підключених телефонів. Тут же наводиться перелік запущених на даний момент процесів. Кожен процес запускається у власній віртуальній машині. Потоки відображаються на окремій вкладці Threads. Вкладка File Explorer призначена для роботи з файловою системою телефону. З її допомогою можна копіювати файли з комп'ютера на телефон та назад. За допомогою кнопки Screen Capture можна зробити екранний скріншот телефону. Кнопка із зеленим жуком дозволяє приєднати відладчик до вибраного процесу. Для використання цієї можливості необхідно мати вихідний вихідний код цього процесу.

Також слід відзначити утиліту журналування LogCat та відповідну панель, яка може виявитися дуже корисною під час пошуку помилок. Робота із журналом здійснюється через спеціальний клас android.util.Log. Найчастіше використовуються такі методи:

Log.e() - для журналування помилок,
Log.w() - для журналування попереджень,
Log.i() - для журналування інформаційних повідомлень,
Log.d() - для журналування налагодження,
Log.v() - для журналу докладних записів,

Як параметри цим методам необхідно передати два рядки. Перша - тег, який потім можна використовувати для пошуку та фільтрації у LogCat. Другий – власне інформація, яка заноситься до журналу.

Були показані основні кроки створення Android-емулятора для тестування створених додатків. Використання емулятора, звичайно, досить зручне, але лише в тому випадку, якщо у вас досить потужний комп'ютер і завантаження емулятора, а також його робота не заміняє багато часу. Але не всім щастить мати такі машини-монстри, тому в цій статті я розповім про досить придатний спосіб тестування своїх робіт в Android Studio за допомогою реального підключеного пристрою.

Ця стаття підійде вам у 2-х основних випадках:

1) Ваш комп'ютер недостатньо потужний для швидкої роботи емулятора (чи то в Android Studio або Eclipce);

2) У вас завалявся старенький Android-смартфон і ви не знаєте, куди його діти (дарувати/викидати шкода).

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

Отже, для того, щоб підключити смартфон до Android Studio, в першу чергу знадобиться встановити потрібний набір драйверів. Як правило, муки зі стандартним набором драйверів часто ні до чого не приведуть, тому рекомендую відразу качати ось цей файл (не боїсь - це не вірус, хоч антивірус і лається) і, попередньо видаливши старі драйвера, встановити цей файл (під час встановлення телефон краще не підключати).

Після встановлення драйверів, підключіть USB-пристрій до комп'ютера. Усі необхідні налаштування запустяться і автоматично встановляться.

Далі запускаємо Android Studio. Ідемо в Tools --- Android і ставимо галочку навпроти рядка "Enable ADB Integration" (ADB – Android Debug Bridge). Після цього потрібно налаштувати Android Studio так, щоб при натисканні на зелену кнопку "Run" ваш додаток відразу встановлювався і запускався на підключеному смартфоні. Ідемо в Run --- Edit Configurations. З'являється наступне вікно:

і в блоці "Target Device" ставимо галочку на пункт "USB Device" і натискаємо OK.

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

програму встановити і запуститися на підключеному пристрої.

Після цього вам залишається лише взяти в руки підключений апарат та тестувати свій програмістський твір.

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

Сподіваюся ця стаття вам знадобиться. Удачі у починаннях!

Раніше я написав. Можна вирішити проблему кардинально, не використовувати емулятор, а тестувати відразу на мобільному пристрої під керуванням android. У мене є чудовий HTC, під нього і налаштовував. Отже, для того, щоб запускати програми на фізичному пристрої, потрібно:

  1. Увімкніть функцію налагодження по USB. Зробити це можна, зайшовши в меню Налаштування -> Програми -> Розробка та встановивши галочку «Налагодження USB»
  2. Дочекатися установки драйвера
  3. Вимкнути та знову підключити телефон до комп'ютера.

Щоб перевірити, чи телефон бачимо комп'ютером, потрібно зробити наступне:

Якщо у вас саме так, то можна скористатися спеціальною програмою: PdaNet. () Зазвичай вона використовується для того, щоб використовувати інтернет від телефону з комп'ютера, але так вийшло, що вона містить величезну кількість драйверів для телефонів. У мене при установці запитала модель пристрою, і далі вискочив гарний червоний балун із попередженням про те, що драйвер не тестувався, і все може погано скінчитися, але ні – все добре, встановилося. Після цього я ще раз запустив перевірку (команда вища) і в списку пристроїв з'явився мій телефон.

Як працювати з Eclipse? Насправді, все вже зроблено — просто запускаємо проект і він відкривається на телефоні.

Декомпіляція та налагодження Android-додатків

Alexander Antipov

У статті буде розказано про те, як підключити відладчик до Android-додатку і покроково пройти через методи, що викликаються, використовуючи інформацію, отриману після декомпіляції програми.


У статті буде розказано про те, як підключити відладчик до Android-додатку і покроково пройти через методи, що викликаються, використовуючи інформацію, отриману після декомпіляції програми. Хороша новина в тому, що для налагодження не потрібні привілеї суперкористувача. Описані техніки можуть бути дуже доречними під час пентестів мобільних додатків, оскільки ми можемо «проникнути» в код під час роботи програми, отримати та записати інформацію, до якої зазвичай у нас немає доступу. Наприклад, можна перехопити трафік перед шифруванням і на льоту отримати ключі, паролі та будь-яку іншу цінну інформацію. Стаття буде корисна пентестерам та розробникам мобільних додатків, які бажають отримати глибші знання про можливі атаки на платформі Android.

Вимоги до тестового середовища:

  • Операційна система: Windows/Mac OS X/Linux
  • Java (рекомендується версія 1.7)
  • IDE (Eclipse, IntelliJ IDEA, Android Studio)
  • Android SDK (https://developer.android.com/sdk/index.html?hl=i)
  • APKTool (https://code.google.com/p/android-apktool/)/APK Studio (http://apkstudio.codeplex.com)
  • Пристрій / емулятор на базі Android

У статті буде використана наступна конфігурація: Windows 8, Android Studio та IntelliJ IDEA. Пристрій: Nexus 4 з Android версії 4.4.4. Рекомендую утиліти додати в змінну оточення PATH, щоб полегшити та прискорити доступ до цих інструментів.

Android application package (APK), який використовується у статті, можна завантажити звідси: com.netspi.egruber.test.apk .

Налаштування пристрою

Інструкція нижче допоможе підготувати пристрій для експериментів.

Активація розділу Developer Options

Для початку на Android-пристрої має бути дозволено налагодження через USB (опція USB debugging), що дозволить "спілкуватися" з девайсом за допомогою інструментів з набору Android SDK. Однак перед цим необхідно активувати розділ Developer options. На пристрої зайдіть у розділ Settings > About Phone і клацніть кілька разів на пункт Build Number, після чого має з'явитися повідомлення про те, що розділ Developer options активовано.

Рисунок 1: Щоб активувати розділ Developer options, необхідно кілька разів натиснути на Build number

Дозвіл налагодження через USB

Щоб вирішити налагодження через USB-порт, зайдіть у розділ Settings > Developer options і позначте прапорець навпроти USB debugging.

Рисунок 2: Увімкнення опції USB debugging

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

Після підключення пристрою до комп'ютера через USB-порт, з'явиться повідомлення "USB debugging connected on the device". Також слід перевірити, чи можна підключитися до пристрою за допомогою Android Debug Bridge (ADB), що входить до складу Android SDK (пакет Android SDK Platform-tools). У командному рядку введіть наступну команду:

Пристрій має відображатися у списку.

Рисунок 3: Список підключених пристроїв

Якщо пристрій не відображається у списку, то найбільш вірогідна причина у некоректно встановлених драйверах (Windows). В залежності від пристрою драйвер можна знайти або в Android SDK або на сайті виробника.

Перевірка програми на налагодження

Перед налагодженням Android-програм спочатку необхідно перевірити, чи є така можливість. Перевірку можна виконати декількома способами.

Перший спосіб – запустити Android Device Monitor, що входить до складу Android SDK (у папці інструментів). У Windows файл називається monitor.bat. При відкритті Android Device Monitor пристрій з'явиться у розділі Devices.

Рисунок 4: Android Device Monitor

Якщо якусь програму на пристрої можна налагодити, ця програма також з'явиться у списку. Я створив тестову програму, але список порожній, оскільки програму налагоджувати не можна.

Другий спосіб перевірити програму на можливість налагодження - досліджувати файл AndroidManifest.xml з пакета програми (APK, Android application package). APK є zip-архівом, що містить всю інформацію, необхідну для запуску програми на Android-пристрої.

Коли програма завантажується з Google Play Store, також завантажується і пакет програми. Всі завантажені файли APK зазвичай зберігаються на пристрої в папці /data/app. Якщо у вас немає прав суперкористувача, ви не зможете отримати список файлів із директорії /data/app. Хоча, якщо ви знаєте ім'я APK-файлу, можете скопіювати його за допомогою утиліти adb. Щоб дізнатися ім'я APK-файлу, введіть наступну команду:

З'явиться командний рядок пристрою. Потім введіть наступну команду:

pm list packages -f

З'явиться список усіх пакетів на пристрої.

Рисунок 5: Перелік пакетів на пристрої

Дивлячись на список, знаходимо тестовий додаток.

Малюнок 6: Пакет створеного тестового додатка (виділено білим)

Тепер потрібно скопіювати файл пакета. Відкриваємо шелл та вводимо наступну команду:

adb pull /data/app/[.apk file]

Малюнок 7: Копіюємо APK-файл із пристрою в систему

Тепер потрібно відкрити файл пакета та досліджувати вміст AndroidManifest.xml. На жаль, ми не можемо так розпакувати архів, оскільки APK-файл закодований в бінарному форматі. Для розкодування найчастіше використовується утиліта apktoolхоча я використовую APK Studio, оскільки у цієї програми доброзичливий графічний інтерфейс. Далі у статті розповідатиметься про APK Studio.

В APK Studio клацніть на маленьку зелену іконку, задайте ім'я проекту та вкажіть шлях до файлу APK. Потім вкажіть, щоб зберегти проект.

Рисунок 8: Створення нового проекту в APK Studio

Після відкриття APK виберіть файл AndroidManifest.xml і перегляньте параметри тега application. Якщо прапорець android:debuggable відсутній (або присутній, але встановлено значення false), значить програму налагоджувати не можна.

Малюнок 9: Вміст файлу AndroidManifest.xml

Модифікація файлу AndroidManifest.xml

За допомогою утиліти apktool або APK Studio ми можемо модифікувати файли та упаковувати вміст у пакет. Зараз ми змінимо файл AndroidManifest.xml так, щоб програму можна було налагоджувати. Додаємо всередину тега application рядок android:debuggable="true".

Рисунок 10: Змінюємо вміст тега application

Після додавання прапора натискаємо на іконку «молоток» і наново збираємо пакет. Перезібраний пакет буде в директорії build/apk.

Рисунок 11: Повторне складання пакета завершилося успішно

Після перескладання пакет підписується і його можна знову встановити на пристрої (всі Android-програми повинні бути підписані). Більшість програм не перевіряють сертифікат, за допомогою якого відбувається підпис. Інакше необхідно змінити код, який виконує цю перевірку.

Тепер потрібно встановити пакет, який було перезбрано. Спочатку видаляємо стару програму за допомогою наступної команди:

adb pm uninstall

Потім встановлюємо новий пакет:

adb install [.apk file]

Також можна видалити та встановити пакет однією командою:

adb install -r [.apk file]

Рисунок 12: Встановлення пакета

Перевірте, щоб перевстановлена ​​програма коректно запускалася на пристрої. Якщо все працює, переходимо назад до Android Device Monitor, де має з'явитися тестовий додаток.

Рисунок 13: Тепер перезібрану програму можна налагоджувати

Налаштування середовища розробки (IDE)

Тепер до перезібраної програми можна підчепити налагоджувач, але спочатку потрібно створити проект у середовищі розробки (у статті використовується IntelliJ IDEA). Створюємо новий проект. У полі Application name указуємо довільне ім'я. У полі Package name вказуємо ім'я, яке точно збігається з ієрархією папок перезбраного пакета.

Рисунок 14: Створення нового проекту в IntelliJ IDEA

Зазвичай ім'я файлу APK співпадає зі структурою папок, хоча, якщо ви не впевнені, в APK Studio перевірте ієрархію директорій до папки, де знаходяться файли програм. У моєму випадку ім'я та структура папок повністю збігаються (com.netspi.egruber.test).

Рисунок 15: Ієрархія директорій тестової програми

Зніміть прапорець "Create Hello World Activity" та завершіть створення проекту (всі інші параметри залишаються за замовчуванням). Новий проект має виглядати приблизно так:

Рисунок 16: Ієрархія папок та файлів нового проекту

Після створення проекту потрібно додати вихідний код з APK-файлу для того, щоб налагоджувач «знав» імена символів, методів, змінних і т.д. з оригіналом). Після декомпіляції вихідний текст імпортується у середовище розробки (IDE).

Отримання вихідних текстів із пакета програми

Для початку необхідно перетворити APK на jar-файл. Потім ми за допомогою java-декомпілятор отримаємо вихідний текст програми. Перетворення на jar будемо робити за допомогою утиліти dex2jar. У dex2jar є файл d2j-dex2jar.bat, який використовується для конвертування APK в jar. Синтаксис команди досить простий:

d2j-dex2jar.bat [.apk file]

Рисунок 17: Перетворення APK на jar

Потім відкриваємо або перетягуємо отриманий файл JD-GUI (це java-декомпілятор).

Малюнок 18: Структура jar-файлу

Jar-файл повинен відобразитись у вигляді ієрархічної структури, всередині якої знаходяться java-файли з читабельним вихідним кодом. Заходимо в File > Save All Sources, щоб упакувати всі вихідні тексти у zip-архів.

Рисунок 19: Збереження вихідних текстів декомпільованого файлу

Після збереження вихідних текстів розпаковуємо архів в окрему директорію.

Малюнок 20: Розпакований архів

Тепер потрібно імпортувати обидві директорії до створеного раніше проекту в IDE. В IntelliJ заходимо в папку src і копіюємо вміст розпакованого архіву (дві директорії).

Рисунок 21: Обидві папки скопійовані до директорії src

Повертаючись до Intellij, бачимо оновлений проект.

Малюнок 22: У проекті з'явилися вихідні тексти

Якщо ми клацнемо на якийсь елемент зі списку, то побачимо вихідний текст. Як видно на скріншоті нижче (вихідний текст класу LoginActivity), вихідний код обумовлений за допомогою ProGuard.

Рисунок 23: Об'єднаний вихідний текст класу LoginActivity

Підключення відладчика

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

Малюнок 24: Поставлено точку зупинки на обфусцований метод

Як тільки з'явилася точка зупинки, підключаємо наладчик до процесу на пристрої, клацнувши на іконку з екраном у правому верхньому кутку (на вашій IDE іконка може відрізнятися).

Рисунок 25: Підключаємо наладчик до процесу

Рисунок 26: Перелік процесів для підключення відладчика

Після вибору процесу налаштовувач приєднається до пристрою.

Рисунок 27: Налагоджувач підключено до процесу, запущеного на пристрої

У текстове поле я вводитиму число 42 (якщо пам'ятайте, на відповідному методі стоїть точка зупинки).

Рисунок 28: У текстове поле вводимо число 42

Після натискання на кнопку «Enter Code» виконання програми перерветься на точці зупинки, оскільки налагоджувач «обізнаний», який метод викликається на пристрої. Скомпільований Android-додаток містить налагоджувальну інформацію (наприклад, імена змінних), доступну будь-якому налагоджувачу, сумісному з Java Debug Wire Protocol (JDWP). Якщо в програмі дозволено налагодження, відладчик, сумісний з JDWP (в цю категорію потрапляє більшість налагоджувачів, що йдуть у складі середовищ розробки для Java), зможе приєднатися до віртуальної машини Android-програми, а потім зчитувати та виконувати налагоджувальні команди.

Рисунок 29: Спрацювала точка зупинки

На скріншоті нижче видно число, яке ми ввели в текстовому полі.

Рисунок 30: Перелік змінних поточного екземпляра класу

Висновок

Ми можемо не лише зчитувати дані у додатку, а й вставляти власні. Це може бути корисно, якщо ми, наприклад, захочемо перервати потік виконання коду та обійти деякі ділянки алгоритму. За допомогою відладчика ми можемо краще зрозуміти логіку роботи програми та проаналізувати те, що недоступне звичайному користувачеві. Наприклад, може бути дуже корисним перегляд функцій шифрування, що використовуються, і динамічні ключі. Крім того, іноді при налагодженні корисно знати, як функції взаємодіють з файловою системою або базою даних, щоб зрозуміти, яка інформація зберігається програмою. Подібні маніпуляції доступні на будь-якому Android пристрої без привілеїв суперкористувача.

Пісочниця

Бог сервера 18 вересня 2011 о 15:55

Огляд засобів запуску та налагодження програм на Android

  • Чулан *

Розробляючи свою першу програму під Android, я зіткнувся з проблемою запуску програми для перевірки та налагодження. Ця стаття повинна допомогти початківцю вибрати засіб емуляції.

Android Virtual Device (AVD)
Встановлення:
Цей засіб емуляції вбудований в Android SDK.

Налаштування:
(На прикладі використання в Eclipse)
Window > Android SDK and AVD Manager > New
Вписуємо ім'я віртуального пристрою, платформу, розмір карти пам'яті, тип дисплея.
Тиснемо Create AVD.

Запуск:
Перший запуск емулятора триває дуже довго, особливо на слабких пристроях. Наприклад, я так і не зміг дочекатись першого запуску на своєму нетбуку, а, запускаючи перший раз на комп'ютері, був упевнений, що емулятор пішов у вічний цикл.
Наступні запуски емулятора будуть трохи шутрішими.
Час між натисканням кнопки «Run» та появою головного активіті тестової програми на емуляторі минає в середньому 11 секунд. Вимірювання проводив на досить продуктивному комп'ютері.

Переваги і недоліки:
+ можливість протестувати програму на різних версіях ОС Android, на пристроях з різними типами дисплея.
+ різні настройки, необхідні для тестування, наприклад, зміна орієнтації екрана
+ емуляція SD-карти
- великий проміжок часу між натисканням кнопки «Run» та запуском програми на емуляторі
- емулятор працює дуже повільно, наприклад, те, що телефон обробляв 1-2 секунди, емулятор робив за 8-10 секунд

VirtualBox+Android x86
Встановлення та налаштування:
  1. Завантажуємо та встановлюємо VirtualBox.
  2. Завантажуємо образ.
  3. «Створюємо віртуальну машину Linux 2.6/Other Linux, 512 Mb RAM, Bridged Network, HD 2 Gb, Disable Mouse Integration. Підключаємо ISO файл і завантажуємося однією з опцій LiveCD (є варіант HDPI і MDPI)» або дотримуємося цієї інструкції .
  4. Натискаємо Alt-F1 для виходу в консоль і набираємо netcfg та запам'ятовуємо IP адресу емулятора. Для повернення до GUI натискаємо Alt-F7.
  5. adb connect

Запуск:
Час між натисканням кнопки «Run» та появою головного активіті тестової програми на емуляторі не засікав, але, за суб'єктивними відчуттями, це відбувається майже миттєво.

Переваги і недоліки:
+ маленький проміжок часу між натисканням кнопки «Run» та запуском програми на емуляторі
+ місцями спритна робота
- Досить тривала і іноді проблематична установка
- емулятор працює місцями повільно, є проблеми із зображенням (особливо на MDPI)
- проблеми з емуляцією SD-карти, зміною орієнтації екрана,...
- лише два (три) доступні версії ОС Android і лише два доступні типи дисплея

Телефон з ОС Android, підключений через USB
Встановлення та налаштування:
  1. Включаємо на телефоні режим налагодження. (Налаштування > Програми > Розробка > Налагодження USB).
  2. Викачуємо драйвер для вашого телефону.
  3. Підключаємо телефон до комп'ютера.
  4. Встановлюємо драйвери. У Диспетчері пристроїв має з'явитися розділ ADB Interface.
  5. adb devices. Якщо ваш телефон не відображається у списку, то встановлюємо драйвер ADB.

Запуск:
Між натисканням кнопки «Run» та появою головного активіті тестової програми на телефоні проходить близько 5 секунд.

Переваги і недоліки:
+ можливість побачити програму так, як її бачитиме користувач (дуже важливий момент, особливо при створенні інтерфейсу та дизайну програми)
+ мультитач (якщо є у телефоні)
+ Зміна орієнтації екрану, акселерометр (якщо є в телефоні)
- тільки одна версія ОС та один тип дисплея
- на фізичному робочому столі з'явиться ще один об'єкт

Висновки:
Я пробував працювати з кожним із цих засобів емуляції і зупинився на такому варіанті:
1. написання та тестування програми, використовуючи телефон;
2. тестування програми на численних Android Virtual Device з різними комбінаціями версії ОС та типу дисплея.
Сподіваюся, що читач зробив вибір емулятора або почерпнув собі щось нове.
Успіхів у тестуванні! Програми