- Использование отладчика Android Studio по максимуму
- Шаг 1 — Необходимо определить конфигурацию запуска
- Эти приложения для Android помогут автоматизировать всё
- Tasker
- AutomateIt
- Automate
- Droid Automation
- MacroDroid
- Automagic * Automation
- Contextual App Folder (C.A.F.)
- E-Robot
- Командная строка Андроид, как открыть и запустить
- Где найти и запустить командную строку Android?
- Вариант 1 — Установка приложения «командная строка»
- Вариант 2 — Компьютер и утилита ADB
- Декомпиляция и отладка Android-приложений
Использование отладчика Android Studio по максимуму
Это хитрость, о которой я узнал совсем недавно у Senior Android разработчика в моей компании, и теперь я чувствую себя несчастным, сожалея о времени, которое я провел в ожидании сборки Gradle, чтобы проверить свои изменения при написании Android приложений.
Вот типичный сценарий, который каждый Android разработчик мог бы встретить, по крайней мере, один раз в течение своего жизненного цикла разработки. У вас есть список элементов, которые вы хотите показать в ListView или RecyclerView.
Ниже приведен наш возлюбленный метод onBindViewHolder , который связывает вашу модель с вашими view-компонентами RecyclerView.
Теперь, допустим, вы захотели изменить цвет текста для каждого третьего элемента в списке. Таким образом, код будет выглядеть примерно так:
Затем вы нажмёте Run и дождётесь завершения сборки и увидите ваши изменения, так?
Теперь вы бы подумали, существует ли другой путь для достижения этой же цели?
Твой выход, Android Studio! Да, нам не нужен внешний плагин или инструмент для достижения вышеупомянутой задачи и более того, нам даже не придется заново собирать проект. Вы не ослышались, мы обойдёмся без Gradle 🙂 Вот как!
Шаг 1 — Необходимо определить конфигурацию запуска
Такая конфигурация запуска позволит нам запускать наше приложение и присоединять к нему отладчик из Android Studio, а также вы сможете присоединить его к уже запущенному процессу.
Нажмите Run → Edit Configurations.
Edit Configurations» data-src=»https://habrastorage.org/getpro/habr/post_images/925/25e/e1a/92525ee1a0fa26e7cca96d237563c9fa.png»/>
В верхнем левом углу диалогового окна щелкните значок «+» и выберите Android App.
Теперь дайте ему имя, мне нравится называть его Run-Only, но вы можете называть его как угодно.
Выберите модуль, который содержит код вашего приложения, в приведенном ниже скриншоте он называется app.
Важный шаг:
В разделе Installation Options выберите Nothing;
В Launch Options выберите Default Activity;
В разделе Before Launch удалите Gradle-aware Make.
Таким образом, конфигурация должна выглядеть следующим образом:
Теперь вы можете применить и сохранить эту конфигурацию. Сейчас она должна быть выбрана автоматически. Если нет, то просто выберите её из списка.
Теперь поставьте breakpoint поближе к строке, которую вы хотите проверить. В нашем случае мы разместим ее там, где мы устанавливаем текст.
Щелкните правой кнопкой мыши на breakpoint и снимите флажок Suspend (рус. приостановить).
Как только вы снимете флажок, диалог расширится и покажет больше опций.
Нам интересен раздел Evaluate and log. Мы напишем там выражение, чтобы проверить изменения в нашем элементе RecyclerView. Нажмите на маленький значок голубого цвета справа от окна ввода Evaluate and log, чтобы развернуть его до более крупного редактора, и добавьте выражение для тестирования, и нажмите Ok, а затем Done.
Теперь нажмите на иконку Debug с выбранной конфигурацией Run-Only и посмотрите на эту магию.
Приложение должно запуститься с вашей Activity по умолчанию, и вы должны увидеть внесенные там изменения. Также, если вы уделяете пристальное внимание IDE, в самом низу вы увидите только одну запускаемую задачу: Launching Activity.
Хотелось бы услышать ваши впечатления, когда вы опробуете эту хитрость!
Источник
Эти приложения для Android помогут автоматизировать всё
Благодаря открытости для разработчиков Android может предложить своим пользователям функции, которых нет ни в одной другой мобильной ОС. Для каждой задачи существует множество приложений на любой вкус. В этот раз я расскажу о нескольких программах для автоматизации действий на смартфоне.
Tasker
Конечно, начать пост об автоматизации действий на Android нельзя ни с одного другого приложения. Tasker — одна из самых мощных, продвинутых и популярных программ в этой категории.
С её помощью можно не только автоматизировать работу сенсоров смартфона, добавлять пользовательские сценарии и тому подобное. С помощью Tasker можно управлять умными устройствами в доме. Вот лишь небольшой список примеров таких задач:
- Блокировка приложений;
- Управление настройками смартфона в зависимости от условий;
- Чтение сообщений вслух;
- Автозапуск приложений при подключении внешних устройств;
- Управление звуковыми профилями и звонками.
Кроме этого, программа может быть расширена при помощи огромного набора плагинов к ней. Единственный минус — Tasker стоит аж целых 100 рублей 😳.
AutomateIt
AutomateIt я бы порекомендовал тем, кто хочет иметь всю мощь Tasker, но при этом не смог справиться со сложными настройками. AutomateIt, как и конкурент, поддерживает пользовательские плагины и может управлять настройками смартфона по определённым сценариям.
Я предпочитаю именно эту программу другим альтернативам. Русский язык, простая и понятная настройка сценариев и множество параметров работы.
Сама программа бесплатна, а вот за готовые правила придётся заплатить. Но это нужно будет, если вам самому лень настраивать их.
Automate
Automate — хорошая альтернатива программам выше. Её основная особенность заключается в том, что правила настраиваются в виде диаграммы. Такое визуальное представление может быть для кого-то более простым и понятным. При этом для каждого блока диаграммы можно настроить несколько веток и объединять различные шаги в зависимости от условий.
Ещё программа бесплатна и поддерживает плагины от Tasker и Locale.
Droid Automation
Droid Automation поставляется в двух версиях: Pro за 190 рублей и бесплатной. В бесплатной версии недоступна работа с Root-девайсами.
Особых «фишек» у этой программы нет. Вы так же можете создавать различные сценарии автоматизации, управлять сенсорами и программами. Но все сценарии здесь разделены на профили, а не свалены в одну кучу. Профили можно активировать автоматически или с помощью виджетов на главном экране.
Для рут-боев доступны сценарии, включающие действия для смартфонов с рут-доступом.
MacroDroid
MacroDroid — это, пожалуй, самая юзер-френдли программа из всех. Красивый и понятный русскоязычный интерфейс поможет быстро настроить сценарии использования при помощи специального мастера, который проведёт по всем шагам.
Кроме этого, для популярных сценариев в программе сразу же предусмотрены шаблоны. А продвинутые пользователи смогут расширить возможности MacroDroid с помощью плагинов и условий вроде ЕСЛИ, ТОГДА, ИЛИ и других.
Automagic * Automation
Ищете альтернативу Automate? Automagic * Automation — и есть такая альтернатива за 113 рублей. И на самом деле, сказать что-то ещё про это приложение сложно. Вы так же настраиваете сценарии, указываете условия и действия. Всё это представлено в виде диаграмм с возможностью разветвления.
Contextual App Folder (C.A.F.)
C.A.F. нельзя назвать полноценной программой для автоматизации действий и работы устройства. «Фишка» приложения в контекстуально-зависимых папках с приложениями.
Во время первоначальной настройки вы разбиваете все (нужные) приложения на смартфоне по категориям. Например, дома вам нужен один набор программ, на работе — другой, а во время занятий спортом — третий. После этого Contextual App Folder при помощи одного из триггеров (геолокация, Wi-Fi, Bluetooth) автоматически будет создавать на рабочем столе папку с нужными приложениями.
E-Robot
E-Robot является прямой альтернативой Tasker и AutomateIt. Но, в отличие от них, сценарии оперируют таким понятием, как команда. На самом деле, от смены названия ничего не меняется, и вы всё так же создаёте различные сценарии в зависимости от наступающих событий.
Команды понадобятся лишь тем, кто знаком с JavaScript. Да, E-Robot может выполнять скрипты.
Если покопаться в Google Play, можно найти ещё с десяток подобных программ. Я в свой пост включил лишь самые лучшие или популярные из них. К тому же я опирался на возможность создания комплексных сценариев с различными результатами и максимальной автоматизацией.
Но если вы просто хотите включать автоматически музыку при подключении наушников, выключать звонки на работе, то для этого можно скачать более простые программы. Которые в один тап настраивают такие сценарии. Например, Profile Manager.
Источник
Командная строка Андроид, как открыть и запустить
вкл. 20 Сентябрь 2016 . Опубликовано в Android — Общее
Командная строка Андроид, как открыть и запустить. Очень частый вопрос который задают новички Android: «Где находится и как запустить командную строку Android?». Все очень просто, данная статья расскажет вам об этом!
С помощью командной строки многие пользователи выполняют кастомизацию Android (изменяют вид и функциональность), получают Root права, либо используют при разработке приложения.
К большому сожалению пользователей или к их счастью практически на 99% устройств Android отсутствует командная строка, но все это поправимо!
Где найти и запустить командную строку Android?
Есть 2 варианта «добычи» командной строки в Android и оба они вам понадобятся в дальнейшем использование на вашем устройстве.
Вариант 1 — Установка приложения «командная строка»
Если вы используете магазин Google Play , то тогда вам стоит перейти в него и строке поиска прописать следующую фразу — « командная строка » или « терминал » или « консоль «.
Запустите установленное приложение и перед вами окажется командная строка Android!
Недостатком этого решения будет, то что, если у вас нет Root прав, то у вас не будет возможности более полно использовать команды adb, поэтому вам понадобиться использовать и второй вариант, для которого необходим компьютер.
Вариант 2 — Компьютер и утилита ADB
Для того того чтобы управлять более полно вашим Android смартфоном или планшетом с помощью командной строки с вашего компьютера вам понадобиться выполнить несколько действий:
- Установить драйвер Android на компьютер
- Включить «Отладку по USB«
- Загрузить утилиту ADB или программу ADB RUN для работы с устройствами Android
После чего используя командую строку или программу ADB RUN используем команды ADB и Linux для настройки вашего Android смартфона или планшета.
Источник
Декомпиляция и отладка Android-приложений
В статье будет рассказано о том, как подключить отладчик к Android-приложению и пошагово пройти через вызываемые методы, используя информацию, полученную после декомпиляции приложения.
В статье будет рассказано о том, как подключить отладчик к Android-приложению и пошагово пройти через вызываемые методы, используя информацию, полученную после декомпиляции приложения. Хорошая новость в том, что для отладки не требуются привилегии суперпользователя. Описанные техники могут быть очень кстати во время пентестов мобильных приложений, поскольку мы можем «проникнуть» в код во время работы программы, получить и записать информацию, к которой обычно у нас нет доступа. Например, можно перехватить трафик перед шифрованием и на лету получить ключи, пароли и любую другую ценную информацию. Статья будет полезна пентестерам и разработчикам мобильных приложений, желающих получить более глубокие знания о возможных атаках на платформе 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 (в папке tools). В 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] [location]
Рисунок 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[package name]
Затем устанавливаем новый пакет:
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-файла для того, чтобы отладчик «знал» имена символов, методов, переменных и т. д. Хорошая новость в том, что Android-приложения можно декомпилировать практически без потери качества (исходный код будет совпадать с оригиналом). После декомпиляции исходный текст импортируется в среду разработки (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: Подключаем отладчик к процессу
Далее вам будет предложено выбрать процесс, к которому нужно подключиться. Будут отображены только процессы с флагом android:debuggable=»true».
Рисунок 26: Перечень процессов для подключения отладчика
После выбора процесса отладчик подсоединится к устройству.
Рисунок 27: Отладчик подключен к процессу, запущенному на устройстве
В текстовое поле я буду вводить число 42 (если помните, на соответствующем методе стоит точка останова).
Рисунок 28: В текстовое поле вводим число 42
После нажатия на кнопку «Enter Code» выполнение приложения прервется на точке останова, поскольку отладчик «осведомлен», какой метод вызывается на устройстве. Скомпилированное Android-приложение содержит отладочную информацию (например, имена переменных), доступную любому отладчику, совместимому с Java Debug Wire Protocol (JDWP). Если в приложении разрешена отладка, отладчик, совместимый с JDWP (в эту категорию попадает большинство отладчиков идущих в составе сред разработки для Java), сможет подсоединиться к виртуальной машине Android-приложения, а затем считывать и выполнять отладочные команды.
Рисунок 29: Сработала точка останова
На скриншоте ниже видно число, которое ранее мы ввели в текстовом поле.
Рисунок 30: Перечень переменных текущего экземпляра класса
Мы можем не только считывать данные в приложении, но и вставлять свои собственные. Это может быть полезно, если мы, например, захотим прервать поток выполнения кода и обойти некоторые участки алгоритма. При помощи отладчика мы можем лучше понять логику работы приложения и проанализировать то, что недоступно обычному пользователю. Например, может оказаться очень полезным просмотр используемых функций шифрования и динамические ключи. Кроме того, иногда при отладке полезно знать, как функции взаимодействуют с файловой системой или базой данных, чтобы понять какая информация сохраняется приложением. Подобные манипуляции доступны на любом Android-устройстве без привилегий суперпользователя.
Источник