5 votos

¿Cómo habilitar adbd para escuchar un puerto al iniciar en Android?

Tengo un HTC Hero con root, y lo que quiero hacer es habilitar que el adbd escuche en un puerto al iniciar.

Probé un código que encontré 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 correctamente, pero cuando reinicio mi teléfono e intento conectar a través de:

adb connect :5555

la conexión no se establece.

¿Alguna idea?

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

4voto

Nick Pierpoint Puntos 7976

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

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

Por lo tanto, el script init.rc que se editó y se empujó es sobrescrito por el script propio de la imagen de arranque al reiniciar, ¡efectivamente los cambios se pierden!

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

Extracción

Cuando invocas el script split_bootimg.pl en una imagen de arranque, recreará lo siguiente:

  • boot.kernel
  • boot.ramdisk.gz

Los dos archivos son obviamente autoexplicativos. Para extraer el RAMDisk, crea un directorio llamado RAMDisk y desde ese directorio, invoca esto: gzip -dc | cpio -i, para recrear la estructura de directorios que se utiliza en el RAMDisk que se vuelca sobre el sistema de archivos en vivo al arrancar. Dentro, el archivo que contiene información pertinente es init.rc. Ahora puedes modificarlo a tu gusto.

Volver a unir

Regresa un nivel en el directorio, y emite esto - mkbootfs ***RAMDisk*** | gzip > my_custom_ramdisk.gz.

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

En este punto, 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;DR

Los cambios se pierden al reiniciar porque el script no está correctamente editado, lo que requería extraer la imagen de arranque, modificarla y volver a empaquetarla. Una vez reempaquetada y luego la imagen de arranque es reflasheada, los cambios serán permanentes.

Esto se hace cada vez que se necesitan cambios.

4voto

kevin Puntos 61

Sustituye "servicio" por "persistente" para mantenerlo después de reiniciar :

    setprop persist.adb.tcp.port 5555

0 votos

Trabajó para mí en Vibe UI 2.0, Android 4.4.2

0 votos

También funciona en Android 7.1.1. Gracias

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X