Как включить adbd для прослушивания порта во время загрузки в Android?

У меня HTC Hero с root-правами, и я хочу, чтобы adbd прослушивал порт во время загрузки.

Я попробовал код, найденный здесь :

setprop service.adb.tcp.port 5555
stop adbd
start adbd

в оболочке Android и прекрасно работает.

Я попытался изменить файл init.rc. Я добавил приведенный выше код в init.rc и заменил его исходным файлом с помощью следующих команд:

adb push init.rc sdcard

adb shell
adb su
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /
adb cp sdcard/init.rc /

Файл успешно заменен, но когда я перезагружаю телефон и пытаюсь подключиться через:

adb connect <IP>:5555

соединение не устанавливается.

Есть идеи?

(PS. Я не хочу использовать приложение remoteADB и команду оболочки, например am start -n ...)

Ответы (2)

Причина, по которой он не работает должным образом, заключается в следующем:

Скрипт init.rcнаходится на RAMDisk, прикрепленном к загрузочному образу.

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

Вам нужно извлечь загрузочный образ, используя каждый загрузочный образ, содержащий ядро ​​и RAMDisk. Доступные для этого инструменты можно найти здесь .

Извлечение

При вызове сценария split_bootimg.plна загрузочном образе он воссоздает следующее:

  • boot.kernel
  • boot.ramdisk.gz

Два файла, очевидно, говорят сами за себя. Чтобы извлечь виртуальный диск, создайте каталог с именем RAMDisk и из этого каталога вызовите это: gzip -dc | cpio -i, чтобы воссоздать структуру каталогов, которая используется в RAMDisk, которая при загрузке переключается на живую файловую систему. Там находится файл с соответствующей информацией init.rc. Теперь это можно изменить на свое усмотрение.

Собираем обратно

Вернитесь на уровень каталога и введите это - mkbootfs ***RAMDisk*** | gzip > my_custom_ramdisk.gz.

Затем, чтобы «прикрепить» исходное ядро ​​к загрузочному образу, выполните следующее: mkbootimg -base 0x.... -kernel boot.kernel -ramdisk my_custom_ramdisk.gz -o my_custom_boot.img.

На данный момент загрузочный образ создан, и теперь этот загрузочный образ нужно будет прошить через fastboot flash boot my_custom_boot.img.

TL;DR

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

Это делается каждый раз, когда необходимы изменения.

Замените «service» на «persist», чтобы сохранить его после перезагрузки:

    setprop persist.adb.tcp.port 5555
у меня работало на Vibe UI 2.0, Android 4.4.2
Он также работает в Android 7.1.1. Спасибо