@yume-chan/android-bin 0.0.18 → 0.0.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.json +15 -0
- package/CHANGELOG.md +9 -1
- package/esm/bu.d.ts +14 -14
- package/esm/bu.js +13 -13
- package/esm/bug-report.d.ts +37 -37
- package/esm/bug-report.d.ts.map +1 -1
- package/esm/bug-report.js +136 -135
- package/esm/bug-report.js.map +1 -1
- package/esm/cmd.d.ts +15 -0
- package/esm/cmd.d.ts.map +1 -0
- package/esm/cmd.js +54 -0
- package/esm/cmd.js.map +1 -0
- package/esm/demo-mode.d.ts +43 -42
- package/esm/demo-mode.d.ts.map +1 -1
- package/esm/demo-mode.js +179 -178
- package/esm/demo-mode.js.map +1 -1
- package/esm/index.d.ts +6 -4
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +7 -5
- package/esm/index.js.map +1 -1
- package/esm/logcat.d.ts +91 -89
- package/esm/logcat.d.ts.map +1 -1
- package/esm/logcat.js +288 -200
- package/esm/logcat.js.map +1 -1
- package/esm/overlay-display.d.ts +21 -0
- package/esm/overlay-display.d.ts.map +1 -0
- package/esm/overlay-display.js +78 -0
- package/esm/overlay-display.js.map +1 -0
- package/esm/pm.d.ts +139 -0
- package/esm/pm.d.ts.map +1 -0
- package/esm/pm.js +125 -0
- package/esm/pm.js.map +1 -0
- package/esm/settings.d.ts +12 -12
- package/esm/settings.d.ts.map +1 -1
- package/esm/settings.js +29 -24
- package/esm/settings.js.map +1 -1
- package/package.json +10 -9
- package/src/bug-report.ts +1 -1
- package/src/cmd.ts +67 -0
- package/src/demo-mode.ts +4 -3
- package/src/index.ts +6 -4
- package/src/logcat.ts +231 -19
- package/src/overlay-display.ts +115 -0
- package/src/pm.ts +281 -0
- package/src/settings.ts +45 -16
- package/tsconfig.build.tsbuildinfo +1 -1
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { AdbCommandBase } from "@yume-chan/adb";
|
|
2
|
+
import { Settings } from "./settings.js";
|
|
3
|
+
class OverlayDisplay extends AdbCommandBase {
|
|
4
|
+
settings;
|
|
5
|
+
static OVERLAY_DISPLAY_DEVICES_KEY = "overlay_display_devices";
|
|
6
|
+
constructor(adb) {
|
|
7
|
+
super(adb);
|
|
8
|
+
this.settings = new Settings(adb);
|
|
9
|
+
}
|
|
10
|
+
async get() {
|
|
11
|
+
const devices = [];
|
|
12
|
+
const settingString = await this.settings.get("global", OverlayDisplay.OVERLAY_DISPLAY_DEVICES_KEY);
|
|
13
|
+
for (const displayString of settingString.split(";")) {
|
|
14
|
+
const [modesString, ...flagStrings] = displayString.split(",");
|
|
15
|
+
if (!modesString) {
|
|
16
|
+
continue;
|
|
17
|
+
}
|
|
18
|
+
const device = {
|
|
19
|
+
modes: [],
|
|
20
|
+
secure: false,
|
|
21
|
+
ownContentOnly: false,
|
|
22
|
+
showSystemDecorations: false,
|
|
23
|
+
};
|
|
24
|
+
for (const modeString of modesString.split("|")) {
|
|
25
|
+
const match = modeString.match(/(\d+)x(\d+)\/(\d+)/);
|
|
26
|
+
if (!match) {
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
device.modes.push({
|
|
30
|
+
width: parseInt(match[1], 10),
|
|
31
|
+
height: parseInt(match[2], 10),
|
|
32
|
+
density: parseInt(match[3], 10),
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
if (device.modes.length === 0) {
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
for (const flagString of flagStrings) {
|
|
39
|
+
switch (flagString) {
|
|
40
|
+
case "secure":
|
|
41
|
+
device.secure = true;
|
|
42
|
+
break;
|
|
43
|
+
case "own_content_only":
|
|
44
|
+
device.ownContentOnly = true;
|
|
45
|
+
break;
|
|
46
|
+
case "show_system_decorations":
|
|
47
|
+
device.showSystemDecorations = true;
|
|
48
|
+
break;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
devices.push(device);
|
|
52
|
+
}
|
|
53
|
+
return devices;
|
|
54
|
+
}
|
|
55
|
+
async set(devices) {
|
|
56
|
+
let settingString = "";
|
|
57
|
+
for (const device of devices) {
|
|
58
|
+
if (settingString) {
|
|
59
|
+
settingString += ";";
|
|
60
|
+
}
|
|
61
|
+
settingString += device.modes
|
|
62
|
+
.map((mode) => `${mode.width}x${mode.height}/${mode.density}`)
|
|
63
|
+
.join("|");
|
|
64
|
+
if (device.secure) {
|
|
65
|
+
settingString += ",secure";
|
|
66
|
+
}
|
|
67
|
+
if (device.ownContentOnly) {
|
|
68
|
+
settingString += ",own_content_only";
|
|
69
|
+
}
|
|
70
|
+
if (device.showSystemDecorations) {
|
|
71
|
+
settingString += ",show_system_decorations";
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
await this.settings.put("global", OverlayDisplay.OVERLAY_DISPLAY_DEVICES_KEY, settingString);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
export { OverlayDisplay };
|
|
78
|
+
//# sourceMappingURL=overlay-display.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overlay-display.js","sourceRoot":"","sources":["../src/overlay-display.ts"],"names":[],"mappings":"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"}
|
package/esm/pm.d.ts
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import type { Adb } from "@yume-chan/adb";
|
|
2
|
+
import { AdbCommandBase } from "@yume-chan/adb";
|
|
3
|
+
import type { Consumable, ReadableStream } from "@yume-chan/stream-extra";
|
|
4
|
+
export declare enum PackageManagerInstallLocation {
|
|
5
|
+
Auto = 0,
|
|
6
|
+
InternalOnly = 1,
|
|
7
|
+
PreferExternal = 2
|
|
8
|
+
}
|
|
9
|
+
export declare enum PackageManagerInstallReason {
|
|
10
|
+
Unknown = 0,
|
|
11
|
+
AdminPolicy = 1,
|
|
12
|
+
DeviceRestore = 2,
|
|
13
|
+
DeviceSetup = 3,
|
|
14
|
+
UserRequest = 4
|
|
15
|
+
}
|
|
16
|
+
export interface PackageManagerInstallOptions {
|
|
17
|
+
/**
|
|
18
|
+
* `-R`
|
|
19
|
+
*/
|
|
20
|
+
skipExisting: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* `-i`
|
|
23
|
+
*/
|
|
24
|
+
installerPackageName: string;
|
|
25
|
+
/**
|
|
26
|
+
* `-t`
|
|
27
|
+
*/
|
|
28
|
+
allowTest: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* `-f`
|
|
31
|
+
*/
|
|
32
|
+
internalStorage: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* `-d`
|
|
35
|
+
*/
|
|
36
|
+
requestDowngrade: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* `-g`
|
|
39
|
+
*/
|
|
40
|
+
grantRuntimePermissions: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* `--restrict-permissions`
|
|
43
|
+
*/
|
|
44
|
+
restrictPermissions: boolean;
|
|
45
|
+
/**
|
|
46
|
+
* `--dont-kill`
|
|
47
|
+
*/
|
|
48
|
+
doNotKill: boolean;
|
|
49
|
+
/**
|
|
50
|
+
* `--originating-uri`
|
|
51
|
+
*/
|
|
52
|
+
originatingUri: string;
|
|
53
|
+
/**
|
|
54
|
+
* `--referrer`
|
|
55
|
+
*/
|
|
56
|
+
refererUri: string;
|
|
57
|
+
/**
|
|
58
|
+
* `-p`
|
|
59
|
+
*/
|
|
60
|
+
inheritFrom: string;
|
|
61
|
+
/**
|
|
62
|
+
* `--pkg`
|
|
63
|
+
*/
|
|
64
|
+
packageName: string;
|
|
65
|
+
/**
|
|
66
|
+
* `--abi`
|
|
67
|
+
*/
|
|
68
|
+
abi: string;
|
|
69
|
+
/**
|
|
70
|
+
* `--ephemeral`/`--instant`/`--instantapp`
|
|
71
|
+
*/
|
|
72
|
+
instantApp: boolean;
|
|
73
|
+
/**
|
|
74
|
+
* `--full`
|
|
75
|
+
*/
|
|
76
|
+
full: boolean;
|
|
77
|
+
/**
|
|
78
|
+
* `--preload`
|
|
79
|
+
*/
|
|
80
|
+
preload: boolean;
|
|
81
|
+
/**
|
|
82
|
+
* `--user`
|
|
83
|
+
*/
|
|
84
|
+
userId: number;
|
|
85
|
+
/**
|
|
86
|
+
* `--install-location`
|
|
87
|
+
*/
|
|
88
|
+
installLocation: PackageManagerInstallLocation;
|
|
89
|
+
/**
|
|
90
|
+
* `--install-reason`
|
|
91
|
+
*/
|
|
92
|
+
installReason: PackageManagerInstallReason;
|
|
93
|
+
/**
|
|
94
|
+
* `--force-uuid`
|
|
95
|
+
*/
|
|
96
|
+
forceUuid: string;
|
|
97
|
+
/**
|
|
98
|
+
* `--apex`
|
|
99
|
+
*/
|
|
100
|
+
apex: boolean;
|
|
101
|
+
/**
|
|
102
|
+
* `--force-non-staged`
|
|
103
|
+
*/
|
|
104
|
+
forceNonStaged: boolean;
|
|
105
|
+
/**
|
|
106
|
+
* `--staged`
|
|
107
|
+
*/
|
|
108
|
+
staged: boolean;
|
|
109
|
+
/**
|
|
110
|
+
* `--force-queryable`
|
|
111
|
+
*/
|
|
112
|
+
forceQueryable: boolean;
|
|
113
|
+
/**
|
|
114
|
+
* `--enable-rollback`
|
|
115
|
+
*/
|
|
116
|
+
enableRollback: boolean;
|
|
117
|
+
/**
|
|
118
|
+
* `--staged-ready-timeout`
|
|
119
|
+
*/
|
|
120
|
+
stagedReadyTimeout: number;
|
|
121
|
+
/**
|
|
122
|
+
* `--skip-verification`
|
|
123
|
+
*/
|
|
124
|
+
skipVerification: boolean;
|
|
125
|
+
/**
|
|
126
|
+
* `--bypass-low-target-sdk-block`
|
|
127
|
+
*/
|
|
128
|
+
bypassLowTargetSdkBlock: boolean;
|
|
129
|
+
}
|
|
130
|
+
export declare const PACKAGE_MANAGER_INSTALL_OPTIONS_MAP: Record<keyof PackageManagerInstallOptions, string>;
|
|
131
|
+
export declare class PackageManager extends AdbCommandBase {
|
|
132
|
+
private _cmd;
|
|
133
|
+
constructor(adb: Adb);
|
|
134
|
+
private buildInstallArgs;
|
|
135
|
+
install(apks: string[], options?: Partial<PackageManagerInstallOptions>): Promise<string>;
|
|
136
|
+
pushAndInstallStream(stream: ReadableStream<Consumable<Uint8Array>>, options?: Partial<PackageManagerInstallOptions>): Promise<ReadableStream<string>>;
|
|
137
|
+
installStream(size: number, stream: ReadableStream<Consumable<Uint8Array>>, options?: Partial<PackageManagerInstallOptions>): Promise<ReadableStream<string>>;
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=pm.d.ts.map
|
package/esm/pm.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pm.d.ts","sourceRoot":"","sources":["../src/pm.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EACH,cAAc,EAGjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAK1E,oBAAY,6BAA6B;IACrC,IAAI,IAAA;IACJ,YAAY,IAAA;IACZ,cAAc,IAAA;CACjB;AAED,oBAAY,2BAA2B;IACnC,OAAO,IAAA;IACP,WAAW,IAAA;IACX,aAAa,IAAA;IACb,WAAW,IAAA;IACX,WAAW,IAAA;CACd;AAGD,MAAM,WAAW,4BAA4B;IACzC;;OAEG;IACH,YAAY,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,oBAAoB,EAAE,MAAM,CAAC;IAC7B;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,eAAe,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,gBAAgB,EAAE,OAAO,CAAC;IAC1B;;OAEG;IACH,uBAAuB,EAAE,OAAO,CAAC;IACjC;;OAEG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,cAAc,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;OAEG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,IAAI,EAAE,OAAO,CAAC;IACd;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,eAAe,EAAE,6BAA6B,CAAC;IAC/C;;OAEG;IACH,aAAa,EAAE,2BAA2B,CAAC;IAC3C;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,IAAI,EAAE,OAAO,CAAC;IACd;;OAEG;IACH,cAAc,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB;;OAEG;IACH,cAAc,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,cAAc,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,kBAAkB,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,gBAAgB,EAAE,OAAO,CAAC;IAC1B;;OAEG;IACH,uBAAuB,EAAE,OAAO,CAAC;CACpC;AAED,eAAO,MAAM,mCAAmC,EAAE,MAAM,CACpD,MAAM,4BAA4B,EAClC,MAAM,CA8BT,CAAC;AAEF,qBAAa,cAAe,SAAQ,cAAc;IAC9C,OAAO,CAAC,IAAI,CAAM;gBAEC,GAAG,EAAE,GAAG;IAK3B,OAAO,CAAC,gBAAgB;IA4BX,OAAO,CAChB,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE,OAAO,CAAC,4BAA4B,CAAC,GAChD,OAAO,CAAC,MAAM,CAAC;IAOL,oBAAoB,CAC7B,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAC9C,OAAO,CAAC,EAAE,OAAO,CAAC,4BAA4B,CAAC,GAChD,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IA6BrB,aAAa,CACtB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAC9C,OAAO,CAAC,EAAE,OAAO,CAAC,4BAA4B,CAAC,GAChD,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;CAmBrC"}
|
package/esm/pm.js
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
// cspell:ignore dont
|
|
2
|
+
// cspell:ignore instantapp
|
|
3
|
+
// cspell:ignore apks
|
|
4
|
+
import { AdbCommandBase, AdbSubprocessNoneProtocol, escapeArg, } from "@yume-chan/adb";
|
|
5
|
+
import { DecodeUtf8Stream, WrapReadableStream } from "@yume-chan/stream-extra";
|
|
6
|
+
import { Cmd } from "./cmd.js";
|
|
7
|
+
export var PackageManagerInstallLocation;
|
|
8
|
+
(function (PackageManagerInstallLocation) {
|
|
9
|
+
PackageManagerInstallLocation[PackageManagerInstallLocation["Auto"] = 0] = "Auto";
|
|
10
|
+
PackageManagerInstallLocation[PackageManagerInstallLocation["InternalOnly"] = 1] = "InternalOnly";
|
|
11
|
+
PackageManagerInstallLocation[PackageManagerInstallLocation["PreferExternal"] = 2] = "PreferExternal";
|
|
12
|
+
})(PackageManagerInstallLocation = PackageManagerInstallLocation || (PackageManagerInstallLocation = {}));
|
|
13
|
+
export var PackageManagerInstallReason;
|
|
14
|
+
(function (PackageManagerInstallReason) {
|
|
15
|
+
PackageManagerInstallReason[PackageManagerInstallReason["Unknown"] = 0] = "Unknown";
|
|
16
|
+
PackageManagerInstallReason[PackageManagerInstallReason["AdminPolicy"] = 1] = "AdminPolicy";
|
|
17
|
+
PackageManagerInstallReason[PackageManagerInstallReason["DeviceRestore"] = 2] = "DeviceRestore";
|
|
18
|
+
PackageManagerInstallReason[PackageManagerInstallReason["DeviceSetup"] = 3] = "DeviceSetup";
|
|
19
|
+
PackageManagerInstallReason[PackageManagerInstallReason["UserRequest"] = 4] = "UserRequest";
|
|
20
|
+
})(PackageManagerInstallReason = PackageManagerInstallReason || (PackageManagerInstallReason = {}));
|
|
21
|
+
export const PACKAGE_MANAGER_INSTALL_OPTIONS_MAP = {
|
|
22
|
+
skipExisting: "-R",
|
|
23
|
+
installerPackageName: "-i",
|
|
24
|
+
allowTest: "-t",
|
|
25
|
+
internalStorage: "-f",
|
|
26
|
+
requestDowngrade: "-d",
|
|
27
|
+
grantRuntimePermissions: "-g",
|
|
28
|
+
restrictPermissions: "--restrict-permissions",
|
|
29
|
+
doNotKill: "--dont-kill",
|
|
30
|
+
originatingUri: "--originating-uri",
|
|
31
|
+
refererUri: "--referrer",
|
|
32
|
+
inheritFrom: "-p",
|
|
33
|
+
packageName: "--pkg",
|
|
34
|
+
abi: "--abi",
|
|
35
|
+
instantApp: "--instant",
|
|
36
|
+
full: "--full",
|
|
37
|
+
preload: "--preload",
|
|
38
|
+
userId: "--user",
|
|
39
|
+
installLocation: "--install-location",
|
|
40
|
+
installReason: "--install-reason",
|
|
41
|
+
forceUuid: "--force-uuid",
|
|
42
|
+
apex: "--apex",
|
|
43
|
+
forceNonStaged: "--force-non-staged",
|
|
44
|
+
staged: "--staged",
|
|
45
|
+
forceQueryable: "--force-queryable",
|
|
46
|
+
enableRollback: "--enable-rollback",
|
|
47
|
+
stagedReadyTimeout: "--staged-ready-timeout",
|
|
48
|
+
skipVerification: "--skip-verification",
|
|
49
|
+
bypassLowTargetSdkBlock: "--bypass-low-target-sdk-block",
|
|
50
|
+
};
|
|
51
|
+
export class PackageManager extends AdbCommandBase {
|
|
52
|
+
_cmd;
|
|
53
|
+
constructor(adb) {
|
|
54
|
+
super(adb);
|
|
55
|
+
this._cmd = new Cmd(adb);
|
|
56
|
+
}
|
|
57
|
+
buildInstallArgs(options) {
|
|
58
|
+
const args = ["pm", "install"];
|
|
59
|
+
if (options) {
|
|
60
|
+
for (const [key, value] of Object.entries(options)) {
|
|
61
|
+
if (value) {
|
|
62
|
+
const option = PACKAGE_MANAGER_INSTALL_OPTIONS_MAP[key];
|
|
63
|
+
if (option) {
|
|
64
|
+
args.push(option);
|
|
65
|
+
switch (typeof value) {
|
|
66
|
+
case "number":
|
|
67
|
+
args.push(value.toString());
|
|
68
|
+
break;
|
|
69
|
+
case "string":
|
|
70
|
+
args.push(value);
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return args;
|
|
78
|
+
}
|
|
79
|
+
async install(apks, options) {
|
|
80
|
+
const args = this.buildInstallArgs(options);
|
|
81
|
+
// WIP: old version of pm doesn't support multiple apks
|
|
82
|
+
args.push(...apks);
|
|
83
|
+
return await this.adb.subprocess.spawnAndWaitLegacy(args);
|
|
84
|
+
}
|
|
85
|
+
async pushAndInstallStream(stream, options) {
|
|
86
|
+
const sync = await this.adb.sync();
|
|
87
|
+
const fileName = Math.random().toString().substring(2);
|
|
88
|
+
const filePath = `/data/local/tmp/${fileName}.apk`;
|
|
89
|
+
try {
|
|
90
|
+
await sync.write({
|
|
91
|
+
filename: filePath,
|
|
92
|
+
file: stream,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
finally {
|
|
96
|
+
await sync.dispose();
|
|
97
|
+
}
|
|
98
|
+
const args = this.buildInstallArgs(options);
|
|
99
|
+
args.push(filePath);
|
|
100
|
+
const process = await AdbSubprocessNoneProtocol.raw(this.adb, args.map(escapeArg).join(" "));
|
|
101
|
+
return new WrapReadableStream({
|
|
102
|
+
start: () => process.stdout.pipeThrough(new DecodeUtf8Stream()),
|
|
103
|
+
close: async () => {
|
|
104
|
+
await this.adb.rm(filePath);
|
|
105
|
+
},
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
async installStream(size, stream, options) {
|
|
109
|
+
if (!this._cmd.supportsCmd) {
|
|
110
|
+
return this.pushAndInstallStream(stream, options);
|
|
111
|
+
}
|
|
112
|
+
// Android 7 added `cmd package` and piping apk to stdin,
|
|
113
|
+
// the source code suggests using `cmd package` over `pm`, but didn't say why.
|
|
114
|
+
// However, `cmd package install` can't read `/data/local/tmp` folder due to SELinux policy,
|
|
115
|
+
// so even ADB today is still using `pm install` for non-streaming installs.
|
|
116
|
+
const args = this.buildInstallArgs(options);
|
|
117
|
+
// Remove `pm` from args, final command will be `cmd package install`
|
|
118
|
+
args.shift();
|
|
119
|
+
args.push("-S", size.toString());
|
|
120
|
+
const process = await this._cmd.spawn(false, "package", ...args);
|
|
121
|
+
await stream.pipeTo(process.stdin);
|
|
122
|
+
return process.stdout.pipeThrough(new DecodeUtf8Stream());
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=pm.js.map
|
package/esm/pm.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pm.js","sourceRoot":"","sources":["../src/pm.ts"],"names":[],"mappings":"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"}
|
package/esm/settings.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { AdbCommandBase } from "@yume-chan/adb";
|
|
2
|
-
export type SettingsNamespace =
|
|
3
|
-
export type SettingsResetMode =
|
|
4
|
-
export declare class Settings extends AdbCommandBase {
|
|
5
|
-
base(command: string, namespace: SettingsNamespace, ...args: string[]): Promise<string>;
|
|
6
|
-
get(namespace: SettingsNamespace, key: string): Promise<string>;
|
|
7
|
-
delete(namespace: SettingsNamespace, key: string): Promise<string>;
|
|
8
|
-
put(namespace: SettingsNamespace, key: string, value: string, tag?: string, makeDefault?: boolean): Promise<string>;
|
|
9
|
-
reset(namespace: SettingsNamespace, mode: SettingsResetMode): Promise<string>;
|
|
10
|
-
reset(namespace: SettingsNamespace, packageName: string, tag?: string): Promise<string>;
|
|
11
|
-
list(namespace: SettingsNamespace): Promise<string[]>;
|
|
12
|
-
}
|
|
1
|
+
import { AdbCommandBase } from "@yume-chan/adb";
|
|
2
|
+
export type SettingsNamespace = "system" | "secure" | "global";
|
|
3
|
+
export type SettingsResetMode = "untrusted_defaults" | "untrusted_clear" | "trusted_defaults";
|
|
4
|
+
export declare class Settings extends AdbCommandBase {
|
|
5
|
+
base(command: string, namespace: SettingsNamespace, ...args: string[]): Promise<string>;
|
|
6
|
+
get(namespace: SettingsNamespace, key: string): Promise<string>;
|
|
7
|
+
delete(namespace: SettingsNamespace, key: string): Promise<string>;
|
|
8
|
+
put(namespace: SettingsNamespace, key: string, value: string, tag?: string, makeDefault?: boolean): Promise<string>;
|
|
9
|
+
reset(namespace: SettingsNamespace, mode: SettingsResetMode): Promise<string>;
|
|
10
|
+
reset(namespace: SettingsNamespace, packageName: string, tag?: string): Promise<string>;
|
|
11
|
+
list(namespace: SettingsNamespace): Promise<string[]>;
|
|
12
|
+
}
|
|
13
13
|
//# sourceMappingURL=settings.d.ts.map
|
package/esm/settings.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE/D,MAAM,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE/D,MAAM,MAAM,iBAAiB,GACvB,oBAAoB,GACpB,iBAAiB,GACjB,kBAAkB,CAAC;AAGzB,qBAAa,QAAS,SAAQ,cAAc;IAGjC,IAAI,CACP,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,iBAAiB,EAC5B,GAAG,IAAI,EAAE,MAAM,EAAE;IAUd,GAAG,CAAC,SAAS,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM;IAI7C,MAAM,CAAC,SAAS,EAAE,iBAAiB,EAAE,GAAG,EAAE,MAAM;IAIhD,GAAG,CACN,SAAS,EAAE,iBAAiB,EAC5B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,GAAG,CAAC,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,OAAO;IAYlB,KAAK,CACR,SAAS,EAAE,iBAAiB,EAC5B,IAAI,EAAE,iBAAiB,GACxB,OAAO,CAAC,MAAM,CAAC;IACX,KAAK,CACR,SAAS,EAAE,iBAAiB,EAC5B,WAAW,EAAE,MAAM,EACnB,GAAG,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC;IAcL,IAAI,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAIrE"}
|
package/esm/settings.js
CHANGED
|
@@ -1,25 +1,30 @@
|
|
|
1
|
-
import { AdbCommandBase } from "@yume-chan/adb";
|
|
2
|
-
// frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsService.java
|
|
3
|
-
export class Settings extends AdbCommandBase {
|
|
4
|
-
// TODO: `--user <user>` argument
|
|
5
|
-
base(command, namespace, ...args) {
|
|
6
|
-
return this.adb.subprocess.spawnAndWaitLegacy([
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}
|
|
1
|
+
import { AdbCommandBase } from "@yume-chan/adb";
|
|
2
|
+
// frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsService.java
|
|
3
|
+
export class Settings extends AdbCommandBase {
|
|
4
|
+
// TODO: `--user <user>` argument
|
|
5
|
+
base(command, namespace, ...args) {
|
|
6
|
+
return this.adb.subprocess.spawnAndWaitLegacy([
|
|
7
|
+
"settings",
|
|
8
|
+
command,
|
|
9
|
+
namespace,
|
|
10
|
+
...args,
|
|
11
|
+
]);
|
|
12
|
+
}
|
|
13
|
+
get(namespace, key) {
|
|
14
|
+
return this.base("get", namespace, key);
|
|
15
|
+
}
|
|
16
|
+
delete(namespace, key) {
|
|
17
|
+
return this.base("delete", namespace, key);
|
|
18
|
+
}
|
|
19
|
+
put(namespace, key, value, tag, makeDefault) {
|
|
20
|
+
return this.base("put", namespace, key, value, ...(tag ? [tag] : []), ...(makeDefault ? ["default"] : []));
|
|
21
|
+
}
|
|
22
|
+
reset(namespace, modeOrPackageName, tag) {
|
|
23
|
+
return this.base("reset", namespace, modeOrPackageName, ...(tag ? [tag] : []));
|
|
24
|
+
}
|
|
25
|
+
async list(namespace) {
|
|
26
|
+
const output = await this.base("list", namespace);
|
|
27
|
+
return output.split("\n");
|
|
28
|
+
}
|
|
29
|
+
}
|
|
25
30
|
//# sourceMappingURL=settings.js.map
|
package/esm/settings.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAShD,oGAAoG;AACpG,MAAM,OAAO,QAAS,SAAQ,cAAc;IACxC,iCAAiC;IAE1B,IAAI,CACP,OAAe,EACf,SAA4B,EAC5B,GAAG,IAAc;QAEjB,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,kBAAkB,CAAC;YAC1C,UAAU;YACV,OAAO;YACP,SAAS;YACT,GAAG,IAAI;SACV,CAAC,CAAC;IACP,CAAC;IAEM,GAAG,CAAC,SAA4B,EAAE,GAAW;QAChD,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;IAC5C,CAAC;IAEM,MAAM,CAAC,SAA4B,EAAE,GAAW;QACnD,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;IAC/C,CAAC;IAEM,GAAG,CACN,SAA4B,EAC5B,GAAW,EACX,KAAa,EACb,GAAY,EACZ,WAAqB;QAErB,OAAO,IAAI,CAAC,IAAI,CACZ,KAAK,EACL,SAAS,EACT,GAAG,EACH,KAAK,EACL,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EACrB,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CACtC,CAAC;IACN,CAAC;IAWM,KAAK,CACR,SAA4B,EAC5B,iBAAyB,EACzB,GAAY;QAEZ,OAAO,IAAI,CAAC,IAAI,CACZ,OAAO,EACP,SAAS,EACT,iBAAiB,EACjB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CACxB,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,SAA4B;QAC1C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAClD,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;CACJ"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yume-chan/android-bin",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.19",
|
|
4
4
|
"description": "Wrappers for Android built-in executables.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"adb",
|
|
@@ -24,21 +24,22 @@
|
|
|
24
24
|
"type": "module",
|
|
25
25
|
"main": "esm/index.js",
|
|
26
26
|
"types": "esm/index.d.ts",
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"@yume-chan/adb": "^0.0.19",
|
|
29
|
+
"@yume-chan/stream-extra": "^0.0.19",
|
|
30
|
+
"@yume-chan/struct": "^0.0.19",
|
|
31
|
+
"tslib": "^2.4.1"
|
|
32
|
+
},
|
|
27
33
|
"devDependencies": {
|
|
28
34
|
"@yume-chan/eslint-config": "^1.0.0",
|
|
29
35
|
"@yume-chan/tsconfig": "^1.0.0",
|
|
30
|
-
"eslint": "^8.
|
|
36
|
+
"eslint": "^8.36.0",
|
|
37
|
+
"prettier": "^2.8.4",
|
|
31
38
|
"typescript": "^4.9.4"
|
|
32
39
|
},
|
|
33
|
-
"dependencies": {
|
|
34
|
-
"@yume-chan/adb": "^0.0.18",
|
|
35
|
-
"@yume-chan/stream-extra": "^0.0.18",
|
|
36
|
-
"@yume-chan/struct": "^0.0.18",
|
|
37
|
-
"tslib": "^2.4.1"
|
|
38
|
-
},
|
|
39
40
|
"scripts": {
|
|
40
41
|
"build": "tsc -b tsconfig.build.json",
|
|
41
42
|
"build:watch": "tsc -b tsconfig.build.json",
|
|
42
|
-
"lint": "eslint src/**/*.ts --fix"
|
|
43
|
+
"lint": "eslint src/**/*.ts --fix && prettier src/**/*.ts --write --tab-width 4"
|
|
43
44
|
}
|
|
44
45
|
}
|
package/src/bug-report.ts
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
// cspell: ignore bugreportz
|
|
3
3
|
|
|
4
4
|
import { AdbCommandBase, AdbSubprocessShellProtocol } from "@yume-chan/adb";
|
|
5
|
+
import type { ReadableStream } from "@yume-chan/stream-extra";
|
|
5
6
|
import {
|
|
6
7
|
DecodeUtf8Stream,
|
|
7
8
|
PushReadableStream,
|
|
8
9
|
SplitStringStream,
|
|
9
10
|
WrapReadableStream,
|
|
10
11
|
WritableStream,
|
|
11
|
-
type ReadableStream,
|
|
12
12
|
} from "@yume-chan/stream-extra";
|
|
13
13
|
|
|
14
14
|
export interface BugReportZVersion {
|
package/src/cmd.ts
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { Adb, AdbSubprocessProtocolConstructor } from "@yume-chan/adb";
|
|
2
|
+
import {
|
|
3
|
+
AdbCommandBase,
|
|
4
|
+
AdbFeature,
|
|
5
|
+
AdbSubprocessNoneProtocol,
|
|
6
|
+
AdbSubprocessShellProtocol,
|
|
7
|
+
} from "@yume-chan/adb";
|
|
8
|
+
|
|
9
|
+
export class Cmd extends AdbCommandBase {
|
|
10
|
+
private _supportsShellV2: boolean;
|
|
11
|
+
private _supportsCmd: boolean;
|
|
12
|
+
private _supportsAbb: boolean;
|
|
13
|
+
private _supportsAbbExec: boolean;
|
|
14
|
+
|
|
15
|
+
public get supportsShellV2() {
|
|
16
|
+
return this._supportsShellV2;
|
|
17
|
+
}
|
|
18
|
+
public get supportsCmd() {
|
|
19
|
+
return this._supportsCmd;
|
|
20
|
+
}
|
|
21
|
+
public get supportsAbb() {
|
|
22
|
+
return this._supportsAbb;
|
|
23
|
+
}
|
|
24
|
+
public get supportsAbbExec() {
|
|
25
|
+
return this._supportsAbbExec;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
public constructor(adb: Adb) {
|
|
29
|
+
super(adb);
|
|
30
|
+
this._supportsShellV2 = adb.supportsFeature(AdbFeature.ShellV2);
|
|
31
|
+
this._supportsCmd = adb.supportsFeature(AdbFeature.Cmd);
|
|
32
|
+
this._supportsAbb = adb.supportsFeature(AdbFeature.Abb);
|
|
33
|
+
this._supportsAbbExec = adb.supportsFeature(AdbFeature.AbbExec);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
public async spawn(
|
|
37
|
+
shellProtocol: boolean,
|
|
38
|
+
command: string,
|
|
39
|
+
...args: string[]
|
|
40
|
+
) {
|
|
41
|
+
let supportAbb: boolean;
|
|
42
|
+
let supportCmd: boolean = this.supportsCmd;
|
|
43
|
+
let service: string;
|
|
44
|
+
let Protocol: AdbSubprocessProtocolConstructor;
|
|
45
|
+
if (shellProtocol) {
|
|
46
|
+
supportAbb = this._supportsAbb;
|
|
47
|
+
supportCmd &&= this.supportsShellV2;
|
|
48
|
+
service = "abb";
|
|
49
|
+
Protocol = AdbSubprocessShellProtocol;
|
|
50
|
+
} else {
|
|
51
|
+
supportAbb = this._supportsAbbExec;
|
|
52
|
+
service = "abb_exec";
|
|
53
|
+
Protocol = AdbSubprocessNoneProtocol;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
if (supportAbb) {
|
|
57
|
+
const socket = await this.adb.createSocket(
|
|
58
|
+
`${service}:${command}\0${args.join("\0")}\0`
|
|
59
|
+
);
|
|
60
|
+
return new Protocol(socket);
|
|
61
|
+
} else if (supportCmd) {
|
|
62
|
+
return Protocol.raw(this.adb, `cmd ${command} ${args.join(" ")}`);
|
|
63
|
+
} else {
|
|
64
|
+
throw new Error("Not supported");
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
package/src/demo-mode.ts
CHANGED
|
@@ -4,7 +4,8 @@
|
|
|
4
4
|
// cspell: ignore systemui
|
|
5
5
|
// cspell: ignore sysui
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import type { Adb } from "@yume-chan/adb";
|
|
8
|
+
import { AdbCommandBase } from "@yume-chan/adb";
|
|
8
9
|
|
|
9
10
|
import { Settings } from "./settings.js";
|
|
10
11
|
|
|
@@ -37,7 +38,7 @@ export const DemoModeMobileDataTypes = [
|
|
|
37
38
|
"null",
|
|
38
39
|
] as const;
|
|
39
40
|
|
|
40
|
-
export type DemoModeMobileDataType = typeof DemoModeMobileDataTypes[number];
|
|
41
|
+
export type DemoModeMobileDataType = (typeof DemoModeMobileDataTypes)[number];
|
|
41
42
|
|
|
42
43
|
// https://cs.android.com/android/platform/superproject/+/master:frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java;l=3136
|
|
43
44
|
export const DemoModeStatusBarModes = [
|
|
@@ -48,7 +49,7 @@ export const DemoModeStatusBarModes = [
|
|
|
48
49
|
"warning",
|
|
49
50
|
] as const;
|
|
50
51
|
|
|
51
|
-
export type DemoModeStatusBarMode = typeof DemoModeStatusBarModes[number];
|
|
52
|
+
export type DemoModeStatusBarMode = (typeof DemoModeStatusBarModes)[number];
|
|
52
53
|
|
|
53
54
|
export class DemoMode extends AdbCommandBase {
|
|
54
55
|
private settings: Settings;
|
package/src/index.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
// cspell: ignore logcat
|
|
2
2
|
|
|
3
|
-
export * from
|
|
4
|
-
export * from
|
|
5
|
-
export * from
|
|
6
|
-
export * from
|
|
3
|
+
export * from "./bug-report.js";
|
|
4
|
+
export * from "./cmd.js";
|
|
5
|
+
export * from "./demo-mode.js";
|
|
6
|
+
export * from "./logcat.js";
|
|
7
|
+
export * from "./pm.js";
|
|
8
|
+
export * from "./settings.js";
|