Wie aktiviere ich adbd, um beim Booten in Android auf einen Port zu hören?

Ich habe ein gerootetes HTC Hero und möchte dem adbd ermöglichen, beim Booten auf einen Port zu hören.

Ich habe einen Code ausprobiert, der hier gefunden wurde :

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

in einer Android-Shell und es funktioniert großartig.

Ich habe versucht, die Datei init.rc zu ändern . Ich habe den obigen Code in init.rc hinzugefügt und ihn mit den folgenden Befehlen durch die Originaldatei ersetzt:

adb push init.rc sdcard

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

Die Datei wurde erfolgreich ersetzt, aber wenn ich mein Telefon neu starte und versuche, eine Verbindung herzustellen:

adb connect <IP>:5555

die Verbindung wird nicht aufgebaut.

Irgendwelche Ideen?

(PS. Ich möchte nicht die remoteADB- Anwendung und einen Shell-Befehl wie verwenden am start -n ...)

Antworten (2)

Der Grund, warum es nicht richtig funktioniert, ist folgender:

Das init.rcSkript befindet sich in der RAMDisk, die an das Boot-Image angehängt ist.

Daher wird das init.rcSkript, das bearbeitet und übertragen wurde, jetzt beim Neustart durch das eigene Skript des Boot-Images überschrieben - Änderungen gehen effektiv verloren!

Sie müssen das Boot-Image extrahieren, wobei jedes Boot-Image den Kernel und die RAMDisk enthält. Die dafür verfügbaren Tools finden Sie hier .

Extrahieren

Beim Aufrufen des Skripts split_bootimg.plauf einem Boot-Image wird Folgendes neu erstellt:

  • boot.kernel
  • boot.ramdisk.gz

Die beiden Dateien sind offensichtlich selbsterklärend. Um die Ramdisk zu extrahieren, erstellen Sie ein Verzeichnis namens RAMDisk und rufen Sie aus diesem Verzeichnis Folgendes auf: gzip -dc | cpio -i, um die Verzeichnisstruktur wiederherzustellen, die in der RAMDisk verwendet wird, die beim Booten auf das Live-Dateisystem umgeschaltet wird. Darin ist die Datei mit relevanten Informationen init.rc. Nun, das kann nach Herzenslust geändert werden.

Setze es wieder zusammen

Gehen Sie eine Verzeichnisebene zurück und geben Sie Folgendes aus - mkbootfs ***RAMDisk*** | gzip > my_custom_ramdisk.gz.

Geben Sie dann Folgendes aus, um den ursprünglichen Kernel an das Boot-Image „anzuhängen“: mkbootimg -base 0x.... -kernel boot.kernel -ramdisk my_custom_ramdisk.gz -o my_custom_boot.img.

An diesem Punkt wurde nun ein Boot-Image erstellt, dann muss dieses Boot-Image nun über geflasht werden fastboot flash boot my_custom_boot.img.

TL;DR

Änderungen gehen beim Neustart verloren, da das Skript nicht richtig bearbeitet wurde, was das Extrahieren und Modifizieren und Neupacken des Boot-Images erforderte. Einmal neu gepackt und dann das Boot-Image erneut geflasht, sind die Änderungen dauerhaft.

Dies wird jedes Mal durchgeführt, wenn die Änderungen erforderlich sind.

Ersetzen Sie "service" durch "persist", um es beim Neustart beizubehalten:

    setprop persist.adb.tcp.port 5555
funktionierte für mich auf Vibe UI 2.0, Android 4.4.2
Es funktioniert auch in Android 7.1.1. Vielen Dank