Android studio отладка на реальном устройстве

ADB Shell

Android полноценная система Unix со своим Shell, к которому можно подключаться по adb.

или

Команда подключит ваш терминал к shell устройства и вы сможете взаимодействовать с ним используя Unix команды, cat, ls, df и другие, а также запускать скрипты.

Чтобы выполнить одну команду, не переходя в shell используйте команду оболочки следующим образом.

Например,

Команда выше выдаст информацию о количестве свободной памяти на устройстве.

Следующая команда откроет на устройстве экран с настройками.

А две последующие через ADB включают и отключают соответственно прокси в настройках сети.

Данные команды могут быть полезными, когда к настройкам устройства нет явного доступа, например на устройствах с голосовыми интерфейсами. Я часто пользуюсь ими при отладке Яндекс.Станции.

App Ops

App Ops — это фреймворк внутри Android, который позволяет настраивать разрешения отдельных приложений. Впервые он появился в Android 4.3, но как-то напрямую не отображался в интерфейсе.

Android 6.0 внес существенные изменения в работу разрешений Android

Что такое разрешения для Android и почему вас это должно волновать?

Что такое разрешения для Android и почему вас это должно волновать?Вы когда-нибудь устанавливали приложения для Android, не задумываясь? Вот все, что вам нужно знать о разрешениях приложений Android, как они изменились и как они влияют на вас.
Прочитайте больше
, Вместо старой модели разрешений «все или ничего» вы можете, наконец, контролировать отдельные разрешения для приложений в Разрешения приложений экран.

Однако разрешения, которыми вы управляете, не настолько гранулированы. Например, когда вы предоставляете WhatsApp доступ к своим контактам, он может как читать, так и изменять ваши контакты. Вы не можете выборочно разрешать или запрещать каждый компонент разрешения. App Ops предоставляет вам доступ ко всем разрешениям для любого приложения в красивом интерфейсе.

Настройка ADB

Приложение Ops требует Android 6.0 и выше. Вам также необходимо приложение Shizuku Manager для вызова и обработки API-интерфейсов системного уровня, а также для обеспечения эффективной работы App Ops.

После настройки ADB откройте Сидзуку Менеджер, Введите эту команду в PowerShell:

Теперь откройте App Ops, нажмите любое приложение и изучите глубину разрешений. Как только вы измените разрешения, нажмите обновление кнопку, чтобы сохранить настройки.

Уникальные черты

  • Поставляется с поддержкой 13 языков и красивых тем (включая ночной режим).
  • Резервное копирование и восстановление настроек не-каркасных приложений.
  • Вы можете разрешить или выборочно запретить разрешения для вновь установленных приложений, настроив шаблоны.
  • Несколько параметров группировки и сортировки — по имени приложения, разрешениям, времени установки и т. Д.

Скачать: App Ops (бесплатная, доступная премиум-версия)

Лучшая статистика батареи

Поиск приложений, вызывающих разрядку аккумулятора телефона, — загадка. Откуда вы знаете, что конкретное приложение переходит в состояние сна, когда вы выходите из него? И как вы можете измерить эффективность приложений для экономии заряда аккумулятора, таких как Naptime?

Better Battery Stats извлекает подробные данные о вашей батарее. Он показывает приложения, которые выводят ваше устройство из состояния глубокого сна, обнаруживает необычные изменения в поведении и происходящем за кулисами, а также собирает информацию об использовании приложений и блокировках пробуждения. Данные отображаются в разных категориях — начиная с загрузки, отключения, отключения экрана и т. Д.

Настройка ADB

Ранее это приложение было доступно только для рутованных устройств. Но с АБР любой может начать использовать его. Вставьте и выполните эти команды по порядку:

Уникальные черты

  • Показывает экран по отношению к бодрствующему. В идеале время экрана должно быть равно времени пробуждения.
  • Найдите изменения в профиле пробуждения / сна и быстро определите мошеннические приложения.
  • Статистика заряда батареи показывает вам подробные метрики Doze, чтобы вы могли проверить, насколько эффективны приложения по экономии заряда батареи.
  • Он может выбирать приложения, которые приводят к частичным wakelocks или приложениям, которые используют CPU в wakelocks ядра.

Скачать: Лучшая Статистика Батареи (2 $)

Установка ADB

На устройствах под управлением Windows, установите драйвер для вашего Android-устройства.

Если драйвера для вашего устройства не нашлось на указанных страницах, попробуйте поискать его на сайте производителя.

Для MacOS и Linux установка драйверов не требуется.

Далее потребуется установить Android SDK Platform Tools. Если вы используете , скорее всего SDK Platform Tools у вас уже установлен.

Установка ADB в Windows

Скачайте и распакуйте папку platform-tools на диск (рекомендуется в С:\platform-tools).

В системную переменную Path добавьте путь к распакованной папке, для этого:

  • перейдите в Панель управления – Система и безопасность – Система;
  • выберите пункт Дополнительные параметры системы;
  • нажмите кнопку Переменные среды;
  • в поле Системные переменные выберите значение Path и нажмите кнопку Изменить, чтобы добавить новое значение;
  • укажите путь к папке platform-tools содержащую adb;
  • перезагрузите компьютер.

Установка ADB в Linux

Чтобы установить SDK Platform Tools в Ubuntu выполните следующую команду.

или

Либо вручную скачать , распаковать на диск и добавить путь к распакованной папке с platform-tools в переменную среды $PATH.

Установка ADB в MacOS

Самый простой способ установить SDK Platform Tools на MacOS, используя Homebrew.

Либо установить вручную.

Сперва удалите предыдущую версию android-platform-tools, если такая имеется.

Затем скачайте .

Перейдите в папку с загрузками, распакуйте скачанный архив и переместите файлы программы в удобное для вас место, например в домашнюю директорию.

Добавить путь к platform-tools в переменную среды $PATH.

Обновите bash профиль или перезапустите терминал.

Проверка ADB

Зайдите в консоль и введите следующую команду:

Если все сделали верно, в ответ в консоль будет выведена информация о версии ADB.

Как пользоваться?

Поздравляем, вы установили ADB на свой девайс! Поскольку ADB установлен в Termux, все ADB команды, которые вы хотите выполнить, нужно вводить в том же Termux’е. Скорее всего, для того, чтобы установить ADB связь между Android устройством и компьютером вы использовали USB кабель. В данном случае USB подключение работать не будет, поэтому мы будем использовать функцию “ADB по сети”. Эту функцию нужно включить на устройстве, к которому вы хотите подключиться.

В большинстве устройств “ADB по сети” можно активировать в настройках системы в разделе “Настройки разработчика”, но если такой переключатель отсутствует, то активировать данную функцию можно, подключив целевое устройство к ПК с установленным ADB и выполнив на компьютере следующую команду:

adb tcpip 5555

После выполнения этой команды можно отсоединить кабель, компьютер нам больше не нужен.

Также можно активировать функцию “ADB по сети” на том же самом устройстве, на которое вы установили ADB, если вы хотите работать только с текущим устройством.

Для работы ADB по сети необходимо, чтобы все устройства, с которыми мы будем работать, были подключены к одной и той же сети Wi-Fi.

После успешной активации сетевой функции нам необходимо узнать внутренний IP-адрес целевого устройства. Его можно узнать с помощью различных сайтов, таких как https://2ip.ua, https://2ip.ru или же посмотреть в настройках Wi-Fi на нашем девайсе. Например, у меня это адрес 192.168.0.105.

Узнав адрес, мы можем подключиться к этому устройству по ADB, для этого нужно ввести в Termux команду:

adb connect ip

Где ip — адрес, который вы узнали. У меня эта команда будет выглядеть так:

adb connect 192.168.0.105

После подключения к устройству, вы можете вводить в Termux ADB команды, как и на обычном компьютере.

Топ команд и лайфхаков в Android

1. Adb команда adb devices

Всегда в самом начале использования терминала используйте команду:

Так вы наверняка будете знать подключено ли все правильно, а не биться головой об стену и искать проблему в чем то другом.

2. Adb команда adb reboot normal

Застряли в меню Reocvery и не получается выйти? Выход есть! Используйте команду:

Данная команда поможет вывести из состояния «перезагрузка только в рекавери», при условии, что вы не поломали систему.

3. Adb команда adb install -r

Если вы устанавливаете и переустанавливаете приложения при помощи терминала, то стоит использовать команду:

Если не использовать приставку -r, то попытка переустановить приложение закончится не удачей.

4. ADB команда adb shell pm list packages

Просмотреть все установленные приложения на вашем Android, также можно легко и просто с помощью adb:

После чего перед вами появится список всех приложений которые когда либо устанавливали.

5. ADB команда запуска приложения

После того как знаем список приложений можно запустить его из терминала, для этого вводим команду:

adb shell am start -n Nazvanie.app/EGO.ACTIVITY

Узнать ACTIVITY приложения можно ознакомившись с этой статьей.

6. Adb команда adb shell su -c «команда»

Если вы начали использовать bat и shell скрипты,  то при попытки выполнить, что-то из под Root закончится мигающим курсором в терминале, а сама linux команда не будет выполнена! Выход есть! используйте связку su -c :

Теперь ваши скрипты будут работать как надо!

7. Linux команда mount

Root права у вас установлена, но система не дает возможности записать, создать папку?

Все очень просто (если у вас не HTC), вам нужно перемонтировать раздел под запись — mount -o rw,remount,rw /раздел , чтобы все заработало:

с компьютера, через командную строку

с терминала на устройстве Android

8. Linux команда cd

Возможно вам знакома команда cd, вы знаете как ей пользоваться, как перейти в необходимый каталог, но есть лайфхак который вам поможет перемещаться быстрей. Используйте команду:

Для того чтобы быстро переместиться в самый корень файловой системы, а не набирать каждый раз cd ..

9. Используйте Linux команду pwd и ls

Эти две команды помогут вам не потеряться в обилие файлов и каталогов, разделов Android.

Linux команда:

Покажет полный путь от корня до текущего вашего положения.

Linux команда:

Покажет абсолютно все файлы и каталоги, в том числе и скрытые, в текущем расположение.

10. Linux команда chmod

Возможно вам также знакома команда, необходимая для того чтобы задавать права для каталогов и файлов. Но можно перейти на новый уровень, автоматизировав действия, и задавать их массово, а не нудно вводить по одиночке:

Данная команда, назначит права абсолютно всем файлам в текущем каталоге.

11. Fastboot команда erase

Всегда! Перед тем как что либо прошить в режиме fastboot форматируйте раздел, данное действие поможет избеганию проблем в работе Android.

12. Fastboot команда boot

Только что прошили Recovery, но не охота держать руками кнопки чтобы перезагрузиться в него? Тогда выполним с помощью команды:

12. На заметку, клавиша «TAB»

Клавиша на клавиатуре является очень полезной и необходимой! Если вам нужно набрать длинное каталога, то вам достаточно написать первые три буквы и нажать «TAB» и все уже написано за вас, также это касается команд и файлов.

Вот и все! Больше статей и инструкций читайте в разделе Статьи и Хаки Android. Оставайтесь вместе с сайтом Android +1, дальше будет еще интересней!

Как пользоваться ADB RUN WEB?

Все очень просто! Для этого у вас должен быть установлен браузер на движке Chromium не ниже 89.X версии:

  • Chrome
  • EDGE
  • Opera

Для того чтобы все заработало, необходимо в экспериментальных настройках активировать параметр (перевести в значение ENABLE) параметр «Enable new USB backend»:

  • В Chrome перейдете по адресу chrome://flags/#new-usb-backend
  • В EDGE перейдете по адресу edge://flags и вбейте в поисковую строку «USB backend» и активируйте параметр
  • В Opera перейдите по адресу opera://flags/ и вбейте в поисковую строку «USB backend» и активируйте параметр

После включения параметра, перезапустите браузер!

  • Перейдите на страницу
  • Активируйте отладку по USB на телефоне и подключите к компьютеру, нажмите ADD Device и выберите устройство. Далее нажмите Connect и не забудьте разрешить авторизацию на телефоне!

команда adb shell vm

Команда adb shelll vm доступна только в версиях после 4.3. Используйте ее для простого просмотра или установки разрешения и плотности экрана.

  • adb shell vm size  Проверьте разрешение, мой компьютер выводит следующее:  Если вы хотите установить другое разрешение, добавьте нужные параметры после размера, такие как
  • adb shell vm density  Проверьте плотность экрана, результат вывода моей машины выглядит следующим образом:  Аналогично, желаемое значение плотности также может быть добавлено после плотности, например

  • adb shell wm overscan  Установите положение отображения окна. Например, если вы хотите, чтобы интерфейс отображался в области отображения 200 слева, 300 сверху, 400 справа и 500 снизу, вы можете установить его следующим образом.

Значение, установленное vm, все равно вступит в силу после перезагрузки телефона. Если вы хотите восстановить настройки по умолчанию, вы можете обратиться к методу настройки ниже

Расширенная версия (Extended)

Настройки интерфейсаМеню настроек Расширенной Версии позволяет вам настроить внешний вид программы «под себя». В настоящий момент доступны настройка прозрачности, размера шрифта и размера иконок. В дальнейшем, на основе отзывов пользователей, будут добавляться новые, востребованные настройки. Настройки применятся после нажатия кнопки Сохранить Настройки.Тёмная темаРаскрашивает интерфейс в темные цвета, которые порадуют ваши глаза в вечернее время.Точные размеры приложений (требуется Android 8 или выше)После включения этой опции размеры приложений будут загружаться при помощи приложения ACBridge, каждый раз, когда происходит обновление данных. Необходимо выдать приложению ACBridge разрешение PACKAGE_USAGE_STATS (можно сделать через ADB AppControl).Показывать иконки приложенийОтключив эту опцию вы скроете иконки в списке приложений. Поскольку иконки больше не будут загружать с устройства, скорость обновления данных увеличится.Автообновление данныхВыключите эту опцию если НЕ хотите, чтобы программа автоматически получала данные приложений через ACBridge при подключении устройства. Это удобно для пользователей, которые много работают с разными устройствами, или для тех, у кого проблемы при подключении. Во всех остальных случаях рекомендовано оставить эту опцию включенной.Сохранение кэша иконокЭто особый режим работы программы с данными приложений, кардинально отличающийся от работы обычной версии. Если эта опция включена, то при первом подключении устройства значки всех его установленных приложений загружаются на ПК и сохраняются в кэш. При каждом следующем подключении этого или других устройств программа будет загружать только те иконки, которые отсутствуют в кэше. Это позволяет заметно увеличить скорость работы программы во время подключения к устройству, но может привести к тому, что в программе будут показаны иконки с разных устройств, отличающиеся стилем и формой. Если сохранение кэша отключено, программа работает в штатном режиме, загружая иконки всех приложений при каждом подключении — это занимает больше времени, особенно по сети, но внешний вид иконок всегда соответствует подключенному устройству. Эта опция отключена по-умолчанию и ее рекомендуется включать, только если вы испытываете проблемы со скоростью подключения устройств и обновления данных приложений.История IP адресовПрограмма будет запоминать IP-адреса и имена подключенных устройств, и вы сможете быстро подключиться к ним, выбрав нужный в выпадающем списке, без необходимости ручного набора (нажмите на иконку часов возле IP адреса). Это очень удобно, если у вас больше одного android-устройства. Историю всегда можно удалить нажав кнопку Очистить Историю.Использовать системный adb (%PATH%)Программа будет использовать adb установленный в систему. Не включайте эту опцию, если не знаете зачем.Останавливать adb при выходеЕсли эта опция выключена, программа останавливает adb сервер при закрытии. Можно включить только если активна опция Использовать системный adb.Тихий режим (без подтверждений)Опытные пользователи могут отключить окна предупреждений и подтверждений перед операциями с приложениями.СортировкаНажмите на заголовок столбца в списке, чтобы отсортировать приложения по имени, имени пакета или размеру (если доступен). Нажмите М, чтобы показать отмеченные приложения.Другие возможностиВы сможете отправлять более одного файлы при использовании функции Отправить Файл. также вам будет доступна возможность добавления apk в список для установки перетаскиванием файла на окно программы. И, разумеется, вы больше не увидите напоминания о донате. 

Brevent

Приложения, работающие в фоновом режиме, могут потреблять системные ресурсы и сокращать время автономной работы. Есть много приложений, которые могут помочь предотвратить это, в том числе популярное приложение Greenify. Но они часто бывают беспорядочными, и сложно реализовать определенные функции.

Brevent может запускать приложения в режиме ожидания или принудительно останавливать приложения, просто используя ADB.

Настройка ADB

Запустите приложение и настройте ADB. Затем введите эту команду:

Brevent не принудительно останавливает приложения и не переводит их в режим ожидания по умолчанию. Вы должны сначала поместить их в список нарушений. Нажмите и удерживайте любое приложение, затем нажмите Отрицать кнопка. Как только ваше приложение окажется в этом списке, оно больше не будет оставаться активным в фоновом режиме.

Нажмите на приложение и выберите Разрешить синхронизацию из диалогового окна, чтобы получать уведомления или выполнять задачи.

Уникальные черты

  • Вы можете ограничить приложения, расходующие заряд аккумулятора, такие как Facebook, но при этом разрешать синхронизацию для получения уведомлений.
  • Для редко используемых приложений вы можете установить агрессивные параметры, чтобы принудительно остановить их, как только вы нажмете кнопку возврата.

Скачать: Brevent (бесплатная премиум-версия доступна)

Плитка

Меню быстрых настроек может выполнять все виды полезных задач прямо из тени уведомлений. Но вы также можете улучшить его, добавив настраиваемые переключатели быстрой настройки.

Tiles собирает эти пользовательские переключатели быстрых настроек в одном месте. Существует почти 70 категорий, позволяющих управлять жизненно важными настройками телефона, включая яркость, громкость, местоположение, данные сотовой связи и многое другое. Вы можете активировать или деактивировать каждую плитку, чтобы не загромождать экран быстрых настроек.

Настройка ADB

Некоторые быстрые настройки переключателей требуют ADB. Для этого настройте ADB и вставьте эту команду:

Получив доступ, вы можете контролировать или управлять анимацией, роумингом данных, режимом погружения, расположением, отладкой по USB и многим другим.

Уникальные черты

  • У вас есть контроль, чтобы показать или скрыть видимость плитки.
  • С плитками активности вы можете добавлять плитки для запуска скрытой активности некоторых приложений.
  • Вы можете выбрать режим выборочного местоположения с помощью плиток местоположения. Опции включают высокую точность, экономию батареи и режим только устройства.

Скачать: Плитка (1 доллар)

Команды ADB

Перед выполнением команд adb полезно знать, какие экземпляры устройств подключены к серверу adb. Список подключенных устройств можно посмотреть следующей командой.

В ответ adb выведет серийный номер, состояние и описание (параметр -l) подключенных устройств.

В примере ниже показаны три устройства. Первые два — эмуляторы, третье — аппаратное устройство, подключенное к компьютеру.

Если запущен только один эмулятор или подключено только одно устройство, команда adb отправится на это устройство по умолчанию. Если же запущено несколько эмуляторов и / или устройств, необходимо использовать параметры -d, -e или -s, чтобы указать устройство, на которое должна быть направлена команда.

Нижеприведенная команда отправится на устройство с указанным серийным номером.

Команда отправится только на устройство подключенное через USB. Выдаст ошибку, если подключено больше одного устройства.

Команда отправится на устройство в эмуляторе. Выдаст ошибку, если подключено больше одного эмулятора.

Подсоединиться к андроид хосту по протоколу TCP/IP (по умолчанию порт 5555, если не указан другой).

Отсоединиться от андроид подключенного через TCP/IP (по умолчанию порт 5555). Если не задан ни один параметр, отключиться от всех активных соединений.

Перезапуск демона с правами root.

В некоторых случаях может потребоваться остановить сервер adb, и перезапустить его, чтобы решить проблему (например, если adb не отвечает на команды).

Остановить сервер.

Запустить сервер.

Копировать файл или папку на устройство.

Например,

Копировать файл или папку с устройства на компьютер.

Копировать с компьютера на устройство только новые файлы. С ключом -l не копировать, только создать список.

Установить приложение на устройство.

Например,

Ключи:-l блокировка приложения;-r переустановить приложение, с сохранением данных;-s установить приложение на карту памяти.

Чтобы удалить приложение с устройства используйте следующую команду.

Ключ -k означает, не удалять сохраненные данные приложения и пользователя.

Сделать скриншот экрана устройства.

Полученный скриншот можно сразу забрать на компьютер.

Для записи видео с экрана устройства используйте команду screenrecord.

или с параметрами

Чтобы остановить запись используйте комбинацию клавиш Control + C (Command + C на Mac). По умолчанию максимальный лимит для видео составляет 3 минуты.

С полным списком команд adb можно ознакомиться на сайте .

Summary

ADB tool has many possibilities, which can help interact with the device, install applications, verify different use cases, etc.

We discussed commands, which can be helpful to developers and QA engineers.

  • provides the possibility to enter text, emulate pressing hardware buttons, do swipe gestures, etc.
  • command allows us to execute tests use the monkey testing approach which can verify stability of our application by sending random inputs to the device (click, enter text, pressing hardware buttons, etc).
  • and provide us with the possibility to change the permissions of installed application. It helps to start application with a required set of permissions. This approach can then be used for reproducing issues with specific permissions.
  • helps to simulate the process «death» which can happen when the OS decides to kill an application because of running into low memory.

Android-хаки не нуждаются в руте

Rooting открывает ваш телефон целой кучей отличных настроек. Но это может помешать работе некоторых приложений и увеличить риск для вашего устройства с потенциальными проблемами безопасности. Для многих пользователей рутирование не является жизнеспособным вариантом.

С помощью ADB и некоторых удивительных сторонних приложений, как обсуждалось выше, вы можете улучшить взаимодействие с пользователем даже без рутирования. Для получения дополнительной информации взгляните на некоторые популярные хаки, которые вы можете выполнять без рутирования вашего устройства.

7 продвинутых хаков для Android, которые не нуждаются в руте

7 продвинутых хаков для Android, которые не нуждаются в рутеВам не нужно рутировать свой телефон, чтобы получить отличные настройки.
Прочитайте больше
,

Узнайте больше о: приложениях Android, настройке Android.

6. Лучшая статистика батареи

Поиск приложений, вызывающих разрядку аккумулятора вашего телефона, — загадка. Откуда вы знаете, что конкретное приложение переходит в состояние сна, когда вы выходите из него? И как вы можете измерить эффективность приложений для экономии заряда аккумулятора, таких как Naptime?

Better Battery Stats извлекает подробные данные о вашей батарее. Он показывает приложения, которые выводят ваше устройство из состояния глубокого сна, обнаруживает необычные изменения в поведении и происходящем за кулисами, а также собирает информацию об использовании приложений и блокировках пробуждения. Данные отображаются в разных категориях — начиная с загрузки, отключения, отключения экрана и т. Д.

Настройка ADB

Ранее это приложение было доступно только для корневых устройств. Но с АБР любой может начать использовать его. Вставьте и выполните эти команды по порядку:

Уникальные черты

  • Показывает экран по отношению к бодрствующему. В идеале время экрана должно быть равно времени пробуждения.
  • Найдите изменения в профиле пробуждения / сна и быстро определите мошеннические приложения.
  • Статистика заряда батареи показывает вам подробные метрики Doze, чтобы вы могли проверить, насколько эффективны приложения по экономии заряда батареи.
  • Он может выбирать приложения, которые приводят к частичным wakelocks или приложениям, которые используют CPU в wakelocks ядра.

Скачать: Лучшая статистика аккумулятора ($ 2)

4. Жесткие навигационные жесты

Использование жестов для навигации по вашему устройству не является чем-то новым. Но большинство производителей Android используют собственные жесты, которые работают по-разному. С таким большим количеством вариантов они не являются интуитивно понятными или настраиваемыми. В большинстве случаев вы можете только включить или выключить их.

Жидкие навигационные жесты позволяют настраивать практически все аспекты навигационных жестов. Для начала он предлагает три основных жеста: пролистывание, удерживание и перетаскивание. Вы можете использовать эти жесты на левом и правом краях экрана, внизу слева и справа и внизу по центру.

Настройка ADB

Чтобы использовать определенные функции и скрыть клавиши навигации, используйте эту команду:

Чтобы восстановить клавиши навигации, отключите приложение и удалите. Или введите эту команду:

Уникальные черты

  • Вы можете скрыть клавиши навигации и использовать жесты для навигации.
  • Установите действия для быстрого и во время удержания. Сконфигурируйте кнопку «Назад» для быстрого пролистывания, недавних приложений при пролистывании и удержании, переключения быстрых настроек и многого другого.
  • Вы можете установить чувствительность, местоположение и звук для обратной связи жеста.

Загрузить: Жидкие навигационные жесты (бесплатная, премиум-версия доступна)

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: