3ec7be7a84
Test: actually build both device and client adb this time
This reverts commit c77904e3c5
.
Change-Id: I8c2b8f24884ff36ff2460dab2500bad777100dfd
42 lines
1.4 KiB
Text
42 lines
1.4 KiB
Text
adb can be configured to work with systemd-style socket activation,
|
|
allowing the daemon to start automatically when the adb control port
|
|
is forwarded across a network. You need two files, placed in the usual
|
|
systemd service directories (e.g., ~/.config/systemd/user for a user
|
|
service).
|
|
|
|
adb.service:
|
|
|
|
--- START adb.service CUT HERE ---
|
|
[Unit]
|
|
Description=adb
|
|
After=adb.socket
|
|
Requires=adb.socket
|
|
[Service]
|
|
Type=simple
|
|
# FD 3 is part of the systemd interface
|
|
ExecStart=/path/to/adb server nodaemon -L acceptfd:3
|
|
--- END adb.service CUT HERE ---
|
|
|
|
--- START adb.socket CUT HERE ---
|
|
[Unit]
|
|
Description=adb
|
|
PartOf=adb.service
|
|
[Socket]
|
|
ListenStream=127.0.0.1:5037
|
|
Accept=no
|
|
[Install]
|
|
WantedBy=sockets.target
|
|
--- END adb.socket CUT HERE ---
|
|
|
|
After installing the adb service, the adb server will be started
|
|
automatically on any connection to 127.0.0.1:5037 (the default adb
|
|
control port), even after adb kill-server kills the server.
|
|
|
|
Other "superserver" launcher systems (like macOS launchd) can be
|
|
configured analogously. The important part is that adb be started with
|
|
"server" and "nodaemon" command line arguments and that the listen
|
|
address (passed to -L) name a file descriptor that's ready to
|
|
accept(2) connections and that's already bound to the desired address
|
|
and listening. inetd-style pre-accepted sockets do _not_ work in this
|
|
configuration: the file descriptor passed to acceptfd must be the
|
|
serve socket, not the accepted connection socket.
|