Первое приложение. Обзор средств запуска и отладки приложений на Android Разрешение отладки через USB

Песочница

Бог сервера 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 с различными комбинациями версии ОС и типа дисплея.
Надеюсь, что читающий сделал выбор эмулятора или почерпнул для себя что-то новое.
Удачи в тестировании!

Были показаны основные шаги по созданию 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 приложений большинство разработчиков пользуются различными эмуляторами. Это удобно, поскольку не нужно хранить кучу различных аппаратов в ящиках стола, нет головной боли с подключением устройств к компьютеру, нет кучи проводов на столе. Щелкаем мышкой и видим работу своей программы на экране компьютера. Просто и элегантно. Тем не менее, эмулятор - не телефон. Он ограничен в своих возможностях. Если Ваше приложение использует какие-нибудь специфичные аппаратные функции, например связанные с работой камеры, 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.У меня есть прекрасный 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 (в папке 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]

Рисунок 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-файла для того, чтобы отладчик «знал» имена символов, методов, переменных и т. д. Хорошая новость в том, что 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: Подключаем отладчик к процессу

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

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

Рисунок 27: Отладчик подключен к процессу, запущенному на устройстве

В текстовое поле я буду вводить число 42 (если помните, на соответствующем методе стоит точка останова).

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

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

Рисунок 29: Сработала точка останова

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

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

Заключение

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

 
Статьи по теме:
Найди красивый и короткий E-mail!
Сегодня каждому пользователю интернета рано или поздно придется создать электронную почту . Без зарегистрированного e-mail адреса вы не сможете в полной мере пользоваться всей доступной информацией интернета. Что бы зарегистрироваться в социальной сети ил
Обострение спора с продавцом на Aliexpress
В данном видео ролике подробно рассказано как открыть спор на АлиЭкспресс. А так же как сделать скриншот к вашему диспуту. Кэшбэк сервис Letyshops: " https://goo.gl/4J8Uv2 " А мы плавно перейдём к тому, как выиграть его. Как выиграть с
Подробная инструкция по чистке реестра Скачать программу для чистки реестра и исправления ошибок
09/10/2018 Auslogics Registry Cleaner – бесплатная программа для очистки вашего реестра, отличающаяся высокой скоростью работы и уникальными алгоритмами. Реестр – это единая база для всех записей операционной системы, программ, драйверов и т.п. При испо
Формы HTML Безнадежный form html
Зачастую на Web – сайтах можно встретить страницы с размещенными на них HTML - формами. Веб-формы – удобный способ получения информации от посетителей вашего сайта. Пример тому – , – которая обеспечивает обратную связь с посетителями и разработчиками сайт