ADB: Инструкции для ОС Windows.Что такое LogCat и как им пользоваться?

Тема в разделе "Программы для Android-разработчиков", создана пользователем San San, 4/11/14.

  1. San San
    Offline

    San San Новичок

    image1.jpg
    Инструкции для ОС Windows:
    Установка ADB (Android Debug Bridge) и fastboot
    Качаем Android SDK (ADB является составной частью Android SDK) из официального источника. Я крайне не рекомендую качать бесплатное ПО на сторонних ресурсах, антивирус на самом деле не спасет, контрольки часто не совпадают, да и версия на официальном сайте всегда самая свежая. Вам нужен архив "ADT Bundle", "SDK Tools Only" не содержит нужных программ и драйвера (драйвера и в нем нет, необходимые программы лежат в папке adt-bundle-windows-*\sdk\platform-tools\, где "*"- разрядность и дата архива. Чтобы adb и fastboot работали, нужны 4 файла: AdbWinApi.dll, AdbWinUsbApi.dll, adb.exe, fastboot.exe).

    Распаковываем в любое удобное место, в примере я распаковываю свой архив в корень диска C:.
    Чтобы не нужно было писать полный путь ("c:\platform-tools\adb.exe"), или переходить в папку ("c:\platform-tools\") а просто вводить с любой папки"adb.exe", заходим в переменные среды (Компьютер -> Свойства -> Переменные среды):
    Ищем переменную Path и делаем одно из двух (пункт "а", или "б"):
    а) переносим программы из папки c:\platform-tools\ в любую папку, указанную в этой переменной ("%SystemRoot%"- папка "Windows", т.е. имя папки, куда вы установили свою ОС, ";"-разделитель, т.е. "C:\;D:\"-две переменные);
    б) дописываем (не перезаписываем!!!) в конце точку с запятой а после адрес папки, где находится adb: ";c:\platform-tools\".

    Можно было просто выкачать инсталлятор, он предложит скачать JDK и даст ссылку, потом и сам поставится. Пути и т.д. он сам пропишет, а установкой компонентов (включая установку Google USB Driver) будете управлять через "SDK Manager" (он будет находится в корне папки, в которую поставите Android SDK, но по идее инсталлятор и ярлыки сделает, вам нужно скачать и установить Android SDK Platform-tools и, возможно, Android SDK Tools).
    Если вам жалко трафика- используйте архив, находящийся под спойлером "Файлы для Windows", он свежее того, что в шапке.
    Если производитель не предоставляет своих драйверов, или умудрился и их поломать, или у нас вообще ноунейм с непонятной начинкой. Перед проверкой подключения пробуйте убивать процесс adb (иногда он перестает видеть устройства, причину я не выяснил, легче просто перезапустить):

    taskkill /IM adb.exe


    1. Качаем драйвер из официального источника: переходим по ссылке (Google USB Driver), жмем ссылку в виде кнопки с надписью "Downloading Google USB Driver", ставим галочку напротив "I have read and agree with the above terms and conditions" и опять жмем ссылку в виде кнопки с надписью "Downloading Google USB Driver" и распаковываем в любое удобное место, в примере я распаковываю архив в корень диска C:;

    2.Запускаем диспетчер устройств. Подключаем устройство (должен быть включен режим отладки, fastboot и т.д.) и ищем там наше устройство ("Android", "Android Composite ADB Interface" или что-то в этом стиле, обычно просто "Неизвестное устройство"). Щелкаем правой кнопкой мыши по устройству, открываем свойства устройства, выбираем вкладку "Сведения", далее выбираем пункт "ID оборудования" и видим такую картину:

    Если в "ИД оборудования" нет нужной нам строки, то выбираем пункт "код экземпляра устройства" и укорачиваем стоку (ее тоже можно скопировать) USB\VID_XXXX&PID_XXXX&MI_XX\X&XXXXXXXX&X&XXXX до вида USB\VID_XXXX&PID_XXXX&MI_XX и используем ее в пункте 3.

    3. Ищем в папке с драйвером (в моем случае "C:\usb_driver\") inf-файл (в моем случае "android_winusb.inf") и открываем его в текстовом редакторе. Ищем разделы [Google.NTx86] (для 32-х битной Windows) и [Google.NTamd64] (для 64-х битной Windows), советую добавлять в оба раздела (для разделов [Google.NTx86] и [Google.NTamd64] должны получиться одинаковые строки) и копируем любые 3 строки с следующим содержимым:

    ;Name Dev
    %SingleAdbInterface% = USB_Install, USB\VID_XXXX&PID_XXXX
    %CompositeAdbInterface% = USB_Install, USB\VID_XXXX&PID_XXXX&MI_XX
    Где Name Dev- произвольное имя устройства (на английском, можно использовать цифры и буквы), а XXXX- идентификаторы устройства. В нашем случае получим следующее (мы можем скопировать нужную, вернувшись к пункту 2):

    ;TM7025
    %SingleAdbInterface% = USB_Install, USB\VID_18D1&PID_0003
    %CompositeAdbInterface% = USB_Install, USB\VID_18D1&PID_0003&MI_01
    Т.е. файл изменится следующим образом:

    Убеждаемся, что все сделали правильно и сохраняем файл;

    4.Запускаем диспетчер устройств, щелкаем правой кнопкой мыши по устройству, открываем свойства устройства, выбираем вкладку "Драйвер", нажимаем кнопку "Обновить...", выбираем "Не выполнять поиск драйвера" -> "Установка из указанного места" -> "Не выполнять поиск. Я сам выберу нужный драйвер" -> "Установить с диска", и указываем путь к распакованной папке (в нашем случае "C:\usb_driver\");

    5. Необязательный. Если adb не находит девайс, а с inf-файлом вы не сделали ошибок, то добавляем в файл (если его нет- создаем) C:\Documents and Settings\NAME\.android\adb_usb.ini (где NAME-имя пользователя) следующую строку:

    0xXXXX
    где XXXX- VID нашего устройства (смотрите пункт 2). Для нашего примера, получим:

    0x18D1
    Если опять не работает и вы 100% нигде не ошиблись, то вам крупно не повезло, на некоторые девайсы придется подбирать ОЕМ-драйвер другого производителя, повторяя для него процедуру с пункта 3 (структура inf-файла тоже может отличаться).
    platform-tools: platform-tools_windows.zip ( 536,29 КБ )
    ADB version 1.0.31
    FastBoot (версия не указанна разработчиком)
    контрольные суммы в файле md5sum.txt

    Google USB Driver: latest_usb_driver_windows.zip ( 8,28 МБ )
    Version: 07/09/2013,8.0.0000.00000
    md5 архива: 1389bb2de0c9cacce27c76f1c71592ef
    Инструкции для OS X (инструкции желательна доработка, написана по памяти):
    1. Качаем Android SDK (ADB является составной частью Android SDK) из официального источника. Я крайне не рекомендую качать бесплатное ПО на сторонних ресурсах, контрольки часто не совпадают, да и версия на официальном сайте всегда самая свежая. Если вам плевать на безопасность, а трафик дорог, юзайте мой архив (распаковав его и перейдя сразу к пункту 4, пути естественно меняем).

    2. В отличии от Windows и Linux (в котором Java Oracle зачастую выпилена из репозиториев из-за соображений безопасности), в OS X нет необходимости предварительно скачивать и устанавливать Java, поэтому для экономии трафика выбираем архив "SDK Tools Only", распаковываем в любое удобное место (например в домашнюю папку пользователя) и запускаем в папке android-sdk-macosx/tools/ команду android (если не запускается, вызываем терминал и выполняем "sh ~/android-sdk-macosx/tools/android").

    3. В запустивщемся окне необходимо поставить галочку на "Android SDK Platform-tools", убрать остальные галочки (если стоят и на кнопке "Install n package..." больше 1 пакета) и нажать кнопку "Install 1 package...", с правой стороны выбрать пакет, поставить галочку рядом с "accept" и нажать кнопку "Intall". Папка platform-tools появится прямо в папке android-sdk-macosx.

    4. Чтобы не писать полный путь к файлу (~/android-sdk-macosx/platform-tools/adb), копируем программы в положенное место (возможные папки для программ пути перечислены в файле /etc/paths):

    sudo cp ~/android-sdk-macosx/platform-tools/adb /usr/bin/
    sudo cp ~/android-sdk-macosx/platform-tools/fastboot /usr/bin/

    и назначаем нормальные права:

    sudo chmod 755 /usr/bin/adb
    sudo chmod 755 /usr/bin/fastboot
    sudo chown root:root /usr/bin/adb
    sudo chown root:root /usr/bin/fastboot

    Программы сможете потом удалить, выполнив:

    sudo rm /usr/bin/adb /usr/bin/fastboot
    другие способы (PATH и ln) смотрите в разделе "Инструкции для ОС Linux".

    5. Удаляем архив и распакованную папку (если не планируете обновлять adb, или ставить другие пакеты Android SDK).

    6. Выполняем, если adb не видит девайс. Подключаем девайс в режиме отладки.
    Смотрим Vendor ID устройства (любым удобным для вас способом):

    system_profiler SPUSBDataType
    редактируем файл ~/.android/adb_usb.ini (если его нет- создаем). Предположим его нет. Создаем папку:

    mkdir ~/.android
    создаем файл и записываем в него необходимую строку:

    echo 0x04d9 >> ~/.android/adb_usb.ini
    где 0x04d9 - Vendor ID нашего устройства. По идее этот файл (~/.android/adb_usb.ini) создается (и переписывается) каждый раз при запуске команды android, которую вы юзали в пункте 2 и удалили в пупкте 5, с параметрами "sh ~/android-sdk-macosx/tools/android update adb".

    Проверяем.
    Убиваем сервер:

    adb kill-server
    Запускаем сервер:

    adb start-server
    Смотрим девайсы:

    adb devices
    platform-tools: platform-tools_mac.zip ( 559,07 КБ )
    ADB version 1.0.31 (предположительно, не запускал)
    FastBoot (версия не указанна разработчиком)
    контрольные суммы в файле md5sum.txt
    Инструкции для ОС Linux на примере дистрибутива Ubuntu:
    Все команды вводятся в терминале (почитайте про копирование/вставку команд и клавишу Tab).
    Shell-скрипт- автоматизация и не только
    Чтобы не копировать все команды и не жать enter кучу раз, можно создать файл вида:

    #!/bin/sh
    команда 1
    команда 2
    ...
    команда n

    сохранить его в домашней директории (в примере имя будет run.sh) и запустить, выполнив в терминале:

    sh ~/run.sh
    чтобы не писать "sh", нужно дать файлу права на исполнение:

    chmod 755 ~/run.sh
    теперь для вызова скрипта можем писать просто

    ~/run.sh

    Называется это чудо bash-скриптом. Есть куча книг с готовыми примерами, типа этой. По факту позволяет автоматизировать все, что можно, ограничивается лишь вашей фантазией и умением гуглить. Главное, что для этого хватает школьных знаний по программированию и примеров (которых в сети полно), т.е. на самом деле linux делают для обычных юзеров, а windows для упоротых красноглазиков и программистов. Скриптами можно кучу головняка убрать, например, можно перекачать с рутрекета торрент-файл (для выкачивания свежих серий и т.д.), выкачать сами файлы, конвертировать их, запаковать в архив и отправить архив на телефон (если у вас iOS, вы, как всегда, в пролете [​IMG] ). Чтобы даже скрипты сами запускались (потом даже их станет лень запускать), юзаем cron. Чтобы запускать скрипт кликом, кликаем правой кнопкой на рабочем столе, выбираем "Create Launcher..." и создаем ярлык на скрипт. [​IMG]
    Чтобы навсегда закрыть вопрос "в каком пакете лежит прога", читайте:
    К моему удивлению в сети не оказалось нормальной инструкции, ламерье да репостящие идиоты даже не вкурили, что правило создаем, чтобы adb можно было не из под рута юзать, по факту в итоге давали полный доступ к девайсу всем пользователям ОС (включая nobody) и часто еще запускали adb из под рута. [​IMG]
    Будем исправлять ситуацию. Нужно поправить правила udev, изменив права доступа так, чтобы пользователь мог его читать и писать.
    Сразу говорю, обычно можно просто подключить (думаю будет работать, но файл правил я не смотрел) персональный архив пакетов (PPA) из раздела "Установка ADB (Android Debug Bridge) и fastboot"->"Легкий способ. Не рекомендуется" и поставить пакет правил (на свой страх и риск):

    sudo apt-get install android-rules
    правила попадут в файл /lib/udev/rules.d/51-android.rules, т.е. пользовательские правила в /etc/udev/rules.d/ будут иметь больший приоритет. Если для установки ADB использовали раздел "Легкий способ. Не рекомендуется", то установка пакета правил не нужна (этот файл есть в пакете android-tools-adb).
    Первым делом редактируем файл ~/.android/adb_usb.ini (если его нет- создаем). создаем файл и записываем в него необходимую строку:

    echo 0xXXXX >> ~/.android/adb_usb.ini
    где XXXX - Vendor ID (значение ATTR{idVendor} для правил udev) нашего устройства. Для нашего случая:

    echo 0x18d1 >> ~/.android/adb_usb.ini
    если не помогло (проверяем, предварительно убив сервер: adb kill-server), то идем дальше.

    Далее все делается по аналогии с модемами (один раз потребовалось, ни одна ОС девайс не видела):

    1. Ставим необходимый софт (нужна утилитка usb_modeswitch и база устройств к ней usb-modeswitch-data (база поставится автоматом, т.к. утилита зависит от нее, но на официальном сайте может быть более свежая база):

    sudo apt-get install usb-modeswitch

    2. Смотрим инфу о usb-девайсах:

    lsusb
    в выводе смотрим: Bus 001 Device 010: ID 18d1:4e22 Google Inc. Nexus S (debug)

    3. запускаем:
    usb_modeswithc -c /etc/usb_modeswitch.d/18d1:4e22
    platform-tools_linux.zip ( 595,77 КБ )
    ADB version 1.0.31
    FastBoot (версия не указанна разработчиком)
    51-android.rules - файл правил из пакета "android-rules" PPA (в пакете файл ставится в папку /lib/udev/rules.d/)
    контрольные суммы в файле md5sum.txt Спасибо Martifik
    Что такое LogCat и как им пользоваться?
    Многие владельцы Android хотят иметь систему настроенную под себя, со своим оформлением, но далеко не у всех получается с первого раза и все приходится делать заново, не узнав причину, ведь причина может быть самая элементарная: забыли добавить файл, ошиблись в каком то файле и случайно добавили лишний символ, а ведь если вы делали по большой инструкции, несколько часов или дней (в связи такой сложностью, у вас редко бывает время или вы не понимали на тот момент как надо было делать), а у вас ваше приложение не заработало, как-же быть тогда?
    Есть одно решение, воспользоваться логом системы - LogCat.
    Пользоваться им не очень сложно и делается он запросто, для начала нам необходимо скачать программу ADB, скачать вы её можете - здесь. Распаковываем скачанный архив в папку C:/adb. Открываем командную строку и пишем

    cd C:/adb
    . Дальше включаем отладку по USB на телефоне и подключаем телефон к компьютеру.
    В командной строке пишем:

    adb logcat -> logcat.txt
    и открываем ваше нерабочее приложение, если это статус-бар, то ждём когда он выдаст ошибку. В папке C:/adb будет лежать logcat.txt, та и есть ваш logcat. Спасибо WinKarbik
    Чтение и запись логов(Logcat) в Linux
    Logcat – это логирующий класс, который можно использовать в коде для вывода сообщения в LogCat. Общие методы ведения журналов включают в себя:
    • V (String, String) (подробно)
    • D (String, String) (отладка)
    • I (String, String) (информация)
    • W (String, String) (предупреждение)
    • е (String, String) (ошибка)
    Установка ADB
    1.Откройте терминал ctrl+alt+T
    2.Введите там:

    sudo apt-get install android-tools-adb
    3.Система запросит пароль root,вводите и ждёте окончания Установки.
    1.Для того что бы компьютер видел ваше устройство надо включить режим откладки в настройках:
    [​IMG]
    Подключаем устройство к компьютеру и вводим в терминале:

    adb devices

    Должно выдать:[​IMG]
    Если у вас так значит комп видит ваше устройство.
    3.Вводим в терминале:

    adb logcat

    ADB начнёт запись логов в реальном времени.
    4.В следующей таблице описаны параметры командной строки LogCat :

    -c Очистка журнала и выход
    -d Дамп лога на экран и выход
    -f <filename> Запись логов в <filename>. По умолчанию stdout.
    -g Вывод размер указанного буфера журнала и выход
    -n <count> Устанавливает максимальное количество обновления логов из <count> . Значение по умолчанию 4. Требует -R опцию
    -r <kbytes> Обновление лог-файла каждые <kbytes> продукции. Значение по умолчанию равно 16. Требует F- опцию
    -s Задает спецификацию фильтров по умолчанию в беззвучный режим
    -v <format> Устанавливает формат вывода сообщений логов. По умолчанию brief-формат.

    Их можно добавлять в конец adb logcat:

    Пример:adb logcat -s
    Фильтрация вывода логов
    Каждое сообщение лога Android имеет тег и приоритет, связанные с ним.
    • Тег сообщения лога – короткая строка, указывающую на компонент системы, из которой сообщение исходит (например, " View " для представления системы).
    • Приоритет - один из следующих символов, в порядке приоритета от низшего к высшему:

    V - Verbose (самый низкий приоритет)
    D - Debug
    I - Info
    W - Warning
    E - Error
    F - Fatal
    S - Silent (самый высокий приоритет, на котором ничего даже не выводится)
    Просмотр альтернативных буферов логов
    Система регистрации Android хранит несколько кольцевых буферов логов, и не все из логов отправляются в кольцевой буфер по умолчанию. Для отображения дополнительных сообщений журнала, вы можете запустить LogCat команду с опцией –b для просмотра альтернативного кольцевого буфера. Вы можете просмотреть любой из этих альтернативных буферов:

    radio - просмотр буфера, содержащего логи радио/телефонии
    events - просмотр буфера, содержащего сообщения, связанных с событиями
    main - просмотр основного лог-буфера (по умолчанию)
    Log-сообщения содержат ещё ряд полей метаданных в дополнение к полям тег и приоритет. Вы можете изменить формат вывода логов, чтобы они отображали определенное поле метаданных. Чтобы сделать это, используйте опцию –V и укажите один из поддерживаемых форматов вывода, перечисленных ниже.

    brief - отображает приоритет/тег и PID процесса, который послал сообщение (формат по умолчанию)
    process - только PID
    tag - отображает приоритет/тег
    raw - отображает лог как raw, без других полей метаданных
    time - отображает дату, времени вызова, приоритет/тег, и PID процесса, который послал сообщение
    threadtime - отображает дату, времени вызова, приоритет, тег и PID и TID потока, который послал сообщение
    long - отображение всех полей метаданных и отдельно сообщения с пустыми строками.

    При запуске LogCat вы можете указать выходной формат, который вы хотите с помощью опции -v:

    [adb] logcat [- v <format>]

    Вот пример, который показывает, как создавать сообщения в формат вывода time:

    adb logcat - v time

    Обратите внимание, что можно указать только один выходной формат опцией –v
    Как выглядит logcat
    [​IMG]

    Спасибо говорим ilipnitsky

    Источник ТУТ
     

    Вложения:

    Матвей Соболев нравится это.