¿Cómo habilitar adbd para escuchar un puerto en el momento del arranque en Android?

Tengo un HTC Hero rooteado, y lo que quiero hacer es habilitar adbd para escuchar un puerto en el momento del arranque.

Probé un código encontrado aquí :

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

en un shell de Android y funciona muy bien.

Intenté cambiar el archivo init.rc. Agregué el código anterior en init.rc y lo reemplacé con el archivo original, a través de estos comandos:

adb push init.rc sdcard

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

El archivo se reemplaza con éxito, pero cuando reinicio mi teléfono e intento conectarme a través de:

adb connect <IP>:5555

la conexión no se está estableciendo.

¿Algunas ideas?

(PD. No quiero usar la aplicación remoteADB y un comando de shell como am start -n ...)

Respuestas (2)

La razón por la que no funciona correctamente es esta:

El init.rcscript reside dentro del RAMDisk adjunto a la imagen de arranque.

Por lo tanto, el init.rcscript que se editó y se envió ahora se sobrescribe con el propio script de la imagen de arranque al reiniciar; ¡efectivamente, los cambios se pierden!

Debe extraer la imagen de arranque, utilizando cada imagen de arranque que tenga el kernel y el RAMDisk. Las herramientas disponibles para hacer esto se pueden encontrar aquí .

extrayendo

Al invocar el script split_bootimg.plen una imagen de arranque, recreará lo siguiente:

  • boot.kernel
  • boot.ramdisk.gz

Los dos archivos obviamente se explican por sí mismos. Para extraer el ramdisk, cree un directorio llamado RAMDisk y desde ese directorio, invoque esto: gzip -dc | cpio -i, para recrear la estructura de directorios que se usa en el RAMDisk que se voltea al sistema de archivos en vivo al arrancar. Allí, el archivo que es de información pertinente es init.rc. Ahora eso se puede modificar al contenido de su corazón.

Poniéndolo de nuevo juntos

Vuelva a subir un nivel de directorio y emita esto: mkbootfs ***RAMDisk*** | gzip > my_custom_ramdisk.gz.

Luego, para "adjuntar" el núcleo original a la imagen de arranque, emita lo siguiente: mkbootimg -base 0x.... -kernel boot.kernel -ramdisk my_custom_ramdisk.gz -o my_custom_boot.img.

En este punto ahora, se ha construido una imagen de arranque, luego esa imagen de arranque tendrá que ser flasheada a través de fastboot flash boot my_custom_boot.img.

TL;RD

Los cambios se pierden al reiniciar porque la secuencia de comandos no se editó correctamente, lo que requirió extraer la imagen de inicio, modificarla y volver a empaquetarla. Una vez que se vuelva a empaquetar y luego se vuelva a actualizar la imagen de arranque, los cambios serán permanentes.

Esto se hace cada vez que se necesitan cambios.

Reemplace "servicio" por "persistir" para mantenerlo al reiniciar:

    setprop persist.adb.tcp.port 5555
funcionó para mí en Vibe UI 2.0, Android 4.4.2
También funciona en Android 7.1.1. Gracias