Отладка Android через Bluetooth
Я использовал более ранний adb для отладки приложений Android через Wi-Fi, usb — это было здорово. Сейчас мне интересно, можно ли подключить телефон к adb через bluetooth. Я сделал быстрое исследование, но ничего не нашел — вы уже пробовали его?
2 ответа
Он не поддерживается текущим программным обеспечением adb, однако вы, вероятно, можете сделать это, если у вас есть корневое устройство (или, возможно, даже если нет — см. ниже), либо путем изменения adb, либо с помощью bluetooth для туннелирования канала, который он делает поддержка, например, tcp. Вам нужно будет получить источник для программы adb — тот же источник используется для создания как ПК, так и версий устройства. Первый шаг состоит в том, чтобы просто создать его с немодифицированными функциональными возможностями, что может привести к значительному изменению системы сборки, если вы не сделаете это как часть полной сборки источника Android (как это было запланировано) Затем вы должны изменить его, чтобы добавить канал Bluetooth в качестве опции и установить его на устройстве (зачем вам нужен root) и в вашем пути на ПК. Вы могли бы подумать, что можете запустить его из альтернативного местоположения на ПК, и вы, вероятно, сможете, если используете его из командной строки, но если ваш DDM-код запускается, он может убить запущенный сервер adb и запустить новый используя значение по умолчанию в пути, так что в конечном итоге вам придется разместить свою измененную версию. ЕСЛИ вы уже можете заставить ваше устройство принимать соединения adb через tcp (возможно с root, возможно, в некоторых случаях это возможно) есть еще одна опция, которая заключается в том, чтобы не изменять ADB (или, по крайней мере, не изменять сторону устройства) и вместо этого придумать что-то на устройстве, которое принимает соединения Bluetooth и пересылает трафик через локальный шлейф в порт tcp, на котором работает adb. Это избавит вас от необходимости перестраивать adb. Если у вас есть какое-то привязное или подобное сетевое решение, вы даже можете использовать это для переноса adb-over-tcp-over-bluetooth без написания кода. Наконец, обратите внимание, что не важно, чтобы демон adb выполнялся как более привилегированный идентификатор пользователя или был установлен вместо официального: вы можете запустить демон adb как обычное приложение и выполнить многие ожидаемые действия с помощью Это. Однако, какой бы демона adb не запускался, он сначала захватит сокет debug java unix домена, и поэтому только демона adb сможет предоставить полные службы отладки java. Более примитивные вещи, такие как logcat, shell, список запущенных процессов, push/pull и т.д., Будут по крайней мере частично работать без этого, при условии, что ваш демон adb не прекратится (может потребоваться изменение), когда он не может требовать отладочный сокет. Если вы можете убить официального демона adb и использовать условие гонки, вы можете получить неофициальный запуск до его перезапуска — вам, вероятно, понадобится script или программа для этого и запустите его с помощью setid из официальная оболочка adb, то есть вам нужно будет сначала подключиться через USB. В этот момент вы также сможете запустить свой неофициальный демон adb, работающий как тот же идентификатор пользователя, что и официальный. Возможно, вы захотите потратить некоторое время на оценку или тестирование, если производительность (скорость) будет удовлетворительной, прежде чем инвестировать в много времени, настроив это на реальную.
Я знаю, что это немного устарело, но, похоже, я нашел сообщение, которое делает это. Все отзывы принадлежат автору fomori.org для нахождения этого и предоставления информации. Сегодня это помогло мне, может быть, завтра я помогу вам, облегчая его поиск. Источник
Поскольку источник является внешним по отношению к SO, вы должны копировать части, относящиеся к ответу. Ваша ссылка на источник теперь не работает (по крайней мере, для меня), а ваш ответ признан бесполезным. Вам по-прежнему рекомендуется связывать свои источники и отдавать должное, конечно, но гораздо полезнее не зависеть от третьих лиц, которые никогда не изменят свои ссылки или не удалят контент.
Ещё вопросы
- 1 Android: чтение файлов — проблема OutOfMemory
- 1 Как ограничить перенаправления в Android App родной рекламы?
- 0 AngularJS двусторонняя привязка
- 1 Как найти значения Min и Max для строк в словаре при использовании DictReader в Python 3
- 0 Угловой фильтр точного соответствия
- 0 C ++: При удалении динамически размещенного класса удаляются ли частные члены, которых нет в куче?
- 1 В ASP.NET MVC создайте форму только для одного члена модели представления
- 1 Сбой Android Lint для скриптов Gradle на основе Kotlin
- 1 A * с осознанием врага
- 0 Зачем нужен $ timeout здесь?
- 1 Как добавить p5.dom в p5.js в режиме экземпляра
- 0 C ++ Больше, чем странность
- 0 Сам триггерный элемент JQuery в привязке
- 0 Переменная из углового шаблона отображается как неопределенная в контроллере
- 1 Контейнер прокрутки в C # winform
- 0 Как использовать пользовательский поиск, чтобы получить данные в HTML-файл?
- 0 Почему создание этого представления вызывает ошибку 1350, когда SQL правильно работает на вкладке SQL?
- 0 Apache скинул 404 для файла в папке var / www
- 1 Как узнать, играет ли звук с помощью C #?
- 0 Как вставить новую строку в таблицу через angularjs?
- 1 Создать const для проекта VisualStudio SQL
- 1 Отправить строку в веб-сокет Python, используя JavaScript
- 1 Вывести toString () из отдельных классов
- 0 $ (). attr (). html ();
- 0 QRegularExpressionMatch потребление памяти
- 0 Как проверить 3 начальные цифры на ИД пользователя с PHP?
- 1 Как предотвратить IE-масштабирование всей страницы, когда кто-то «зажимает» сенсорный экран?
- 1 Использование ruamel.yaml для обновления блока yaml в файле yaml, который содержит несколько yaml
- 0 Попытка получить этот лайтбокс .js для отображения при загрузке страницы
- 0 Функция фильтрации wxCheckListBox
- 0 не могу понять термин «статический»
- 1 Версии веб-API со ссылкой по умолчанию
- 0 Пользователь Apache не может подключиться к SMTP (Centos)
- 0 HTML-таблица и выравнивание границ
- 1 Вызов ImageMagick конвертировать из Java с исполняемой исполняющей
- 0 ссылки на хеш-теги javascript
- 1 Обязательны ли определения типов для пакетов npm только на компьютере разработчика?
- 0 Как подключиться к серверу sql используя php в xampp
- 1 Python-запросы GET со строками из списка
- 1 EditText — Cap слов без предложений?
- 0 Вставка данных в MySQL DB с использованием Python [дубликаты]
- 1 getAdapter (). notifyDataSetChanged () не изменяет базу данных для повторного просмотра
- 1 Невозможно создать экземпляр класса в 2 разных проектах библиотеки классов
- 0 дополнительные элементы данных в объединенной структуре
- 0 Шаблон FlowType не изменяет размеры элементов
- 1 Поместите карту Java в JSON
- 0 Mysql time diff в группе по
- 1 Проблема с отображением приложения Android Studio
- 1 В чем разница между FindAll и Select?
- 1 Discord.py Бот отправляет файл на канал Discord
Android debugging over bluetooth (without root)
So I’m on a train to Reading and wanted to continue working on an app I’ve been hacking at but my USB cable is annoyingly inconvenient and Ubuntu keeps throwing a fit because I haven’t been able to configure it to properly handle MTP enabled devices. To get debugging going here’s what I’ve just done.
Connect the phone via USB and from the terminal enter (to run adb in tcp ip mode)
Now on the phone enable debugging from Settings -> Developer options -> enable debugging.
Next enable bluetooth and pair the phone with the laptop. Once paired, unpair the two and on the android device go to Settings -> Tethering and portable hotspot then enable «Bluetooth tethering»
Now go back to settings -> Blutetooth and repair the device with the laptop.
On Ubuntu click your network icon in the task bar to list the available networks
In Ubuntu click the network icon again after successfully connecting to the bluetooth network and click «Connection information» towards the bottom.
From the window that opens, note the Primary DNS IP. Copy it, write it down, whatever you need to but you need it for the next step.
Now from the command line again enter:
adb connect 192.168.44.1:4455
connected to 192.168.44.1:4455
Now if you’re using Eclipse, Intellij or any other IDE with adb support you can look at logcat to start seeing logs from the device:
From here on you can deploy your App to the device and/or debug it without a USB. And obviously each time just pair the devices and reconnect. You won’t have to repeat all the steps — just those two.
Below are a series of screenshots that might help. They’re in no particular order, I’m writing this post on the train and taking screenshots on the phone and laptop and uploading from both directly to the same post so it is what it is but should hopefully still be useful.
Any questions, suggestions, feel free to ask.
Android debugging via Bluetooth
I was using earlier adb to debug Android applications over wifi, usb — it was great. Right now I am wondering if it is possible to connect phone with adb via bluetooth. I did a quick research but didn’t find anything — have you tried it already ?
2 Answers 2
It is not supported by the current adb software, however you could probably make it possible if you have a rooted device (or possibly even if not — see below) either by modifying adb or by using bluetooth to tunnel a channel it does support, such as tcp.
You would need to obtain the source for the adb program — the same source is used to build both the PC and the device versions. First step is to just build it with unmodified functionality, which may take a fair amount of build system modification unless you do so as a part of a complete android source build (the way it was intended to be done)
Then you would modify it to add a bluetooth channel as an option and install it on the device (why you need root) and in your path on the PC. You’d think you could run it from an alternate location on the PC, and you likely can as long as you use it from the command line, but if your fire up DDMS it may kill off the running adb server and launch a new one using the default in the path, so ultimately you’ll have to put your modified version there.
IF you can already get your device to accept adb connections over tcp (possible with root, perhaps possible in some cases without) there is another option, which is to not modify ADB (or at least not modify the device side) and instead come up with something running on the device which accepts bluetooth connections and forwards the traffic via local loopback to the tcp port on which the stock adb is operating. This would save the trouble of having to rebuild adb.
If you have some kind of tethering or similar network-over-bluetooth solution, you might even be able to leverage that to carry adb-over-tcp-over-bluetooth without writing any code.
Finally note that it is not 100% essential that the adb daemon run as a more privileged userid or be installed in place of the official one — you can run an adb daemon as an ordinary application and do many of the expected things with it. However, whichever adb daemon is running first will grab the unix domain java debug socket, and so only that adb daemon will be able to provide the full java debug services. More primitive things like logcat, shell, running process list, push/pull, etc will at least partially work without this, provided that your adb daemon doesn’t quit (modification may be required) when it is unable to claim the debug socket. If you can kill the official adb daemon and exploit a race condition, you may be able to get an unofficial one started before it restarts — you would probably need to have a script or program to do this and run it with setsid from the official adb shell, meaning you’d need to connect via USB first. At that point, you’d also be able to start your unofficial adb daemon running as the same userid as the official one.
You may want to spend some time estimating or testing if the performance (speed) will be satisfactory before investing in a lot of time setting this up for real.