Run ADB commands
Server
In this example, because the server didn't run any ADB commands, it only creates AdbTransport
s for the clients to use.
If needed, you can also run ADB commands in the server:
- JavaScript
- TypeScript
server/index.ts
import { Adb, AdbDaemonTransport } from "@yume-chan/adb";
const devices = new Map();
// ...
const connection = await device.connect();
const transport = await AdbDaemonTransport.authenticate({
serial,
connection,
credentialStore: CredentialStore,
});
const adb = new Adb(transport);
devices.set(serial, adb);
// ...
server/index.ts
import { Adb, AdbDaemonTransport } from "@yume-chan/adb";
const devices = new Map<string, Adb>();
// ...
const connection = await device.connect();
const transport = await AdbDaemonTransport.authenticate({
serial,
connection,
credentialStore: CredentialStore,
});
const adb = new Adb(transport);
devices.set(serial, adb);
// ...
Client
The client created an Adb
instance using the custom AdbTransport
, ran logcat
command, and printed the output to a <div>
element.
- JavaScript
- TypeScript
client/device.ts
import { AdbBanner, Adb } from "@yume-chan/adb";
const container = document.getElementById("app");
// ...
const data = await response.json();
const transport = new WebSocketTransport(
serial,
data.maxPayloadSize,
new AdbBanner(data.product, data.model, data.device, data.features),
);
const adb = new Adb(transport);
const process = await adb.subprocess.spawn("logcat");
for await (const chunk of process.stdout.pipeThrough(new TextDecoderStream())) {
container.textContent += chunk;
}
client/device.ts
import { AdbBanner, Adb } from "@yume-chan/adb";
const container = document.getElementById("app")!;
// ...
const data = await response.json();
const transport = new WebSocketTransport(
serial,
data.maxPayloadSize,
new AdbBanner(data.product, data.model, data.device, data.features),
);
const adb = new Adb(transport);
const process = await adb.subprocess.spawn("logcat");
for await (const chunk of process.stdout.pipeThrough(new TextDecoderStream())) {
container.textContent += chunk;
}
You can run other commands using the adb
instance.