@yume-chan/android-bin 2.1.0 → 3.0.0-beta.0

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.
Files changed (96) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +4 -1
  3. package/esm/am.d.ts +20 -15
  4. package/esm/am.d.ts.map +1 -1
  5. package/esm/am.js +60 -13
  6. package/esm/am.js.map +1 -1
  7. package/esm/bu.d.ts +22 -18
  8. package/esm/bu.d.ts.map +1 -1
  9. package/esm/bu.js +10 -4
  10. package/esm/bu.js.map +1 -1
  11. package/esm/bug-report.d.ts +21 -20
  12. package/esm/bug-report.d.ts.map +1 -1
  13. package/esm/bug-report.js +15 -21
  14. package/esm/bug-report.js.map +1 -1
  15. package/esm/cmd/index.d.ts +2 -0
  16. package/esm/cmd/index.d.ts.map +1 -0
  17. package/esm/cmd/index.js +2 -0
  18. package/esm/cmd/index.js.map +1 -0
  19. package/esm/cmd/none.d.ts +5 -0
  20. package/esm/cmd/none.d.ts.map +1 -0
  21. package/esm/cmd/none.js +39 -0
  22. package/esm/cmd/none.js.map +1 -0
  23. package/esm/cmd/service.d.ts +29 -0
  24. package/esm/cmd/service.d.ts.map +1 -0
  25. package/esm/cmd/service.js +24 -0
  26. package/esm/cmd/service.js.map +1 -0
  27. package/esm/cmd/shell.d.ts +5 -0
  28. package/esm/cmd/shell.d.ts.map +1 -0
  29. package/esm/cmd/shell.js +43 -0
  30. package/esm/cmd/shell.js.map +1 -0
  31. package/esm/cmd/utils.d.ts +5 -0
  32. package/esm/cmd/utils.d.ts.map +1 -0
  33. package/esm/cmd/utils.js +24 -0
  34. package/esm/cmd/utils.js.map +1 -0
  35. package/esm/demo-mode.d.ts +3 -4
  36. package/esm/demo-mode.d.ts.map +1 -1
  37. package/esm/demo-mode.js +13 -21
  38. package/esm/demo-mode.js.map +1 -1
  39. package/esm/dumpsys.d.ts +4 -2
  40. package/esm/dumpsys.d.ts.map +1 -1
  41. package/esm/dumpsys.js +13 -10
  42. package/esm/dumpsys.js.map +1 -1
  43. package/esm/index.d.ts +1 -1
  44. package/esm/index.d.ts.map +1 -1
  45. package/esm/index.js +1 -1
  46. package/esm/index.js.map +1 -1
  47. package/esm/intent.d.ts +37 -9
  48. package/esm/intent.d.ts.map +1 -1
  49. package/esm/intent.js +116 -53
  50. package/esm/intent.js.map +1 -1
  51. package/esm/logcat.d.ts +4 -2
  52. package/esm/logcat.d.ts.map +1 -1
  53. package/esm/logcat.js +9 -6
  54. package/esm/logcat.js.map +1 -1
  55. package/esm/overlay-display.d.ts +17 -14
  56. package/esm/overlay-display.d.ts.map +1 -1
  57. package/esm/overlay-display.js +2 -4
  58. package/esm/overlay-display.js.map +1 -1
  59. package/esm/pm.d.ts +131 -168
  60. package/esm/pm.d.ts.map +1 -1
  61. package/esm/pm.js +229 -112
  62. package/esm/pm.js.map +1 -1
  63. package/esm/settings.d.ts +1 -2
  64. package/esm/settings.d.ts.map +1 -1
  65. package/esm/settings.js +9 -9
  66. package/esm/settings.js.map +1 -1
  67. package/esm/utils.d.ts +4 -1
  68. package/esm/utils.d.ts.map +1 -1
  69. package/esm/utils.js +24 -13
  70. package/esm/utils.js.map +1 -1
  71. package/package.json +9 -9
  72. package/src/am.ts +94 -34
  73. package/src/bu.ts +31 -20
  74. package/src/bug-report.ts +42 -42
  75. package/src/cmd/index.ts +1 -0
  76. package/src/cmd/none.ts +62 -0
  77. package/src/cmd/service.ts +54 -0
  78. package/src/cmd/shell.ts +67 -0
  79. package/src/cmd/utils.ts +35 -0
  80. package/src/demo-mode.ts +13 -24
  81. package/src/dumpsys.ts +16 -10
  82. package/src/index.ts +1 -1
  83. package/src/intent.ts +187 -49
  84. package/src/logcat.ts +12 -6
  85. package/src/overlay-display.ts +21 -19
  86. package/src/pm.ts +374 -301
  87. package/src/settings.ts +11 -10
  88. package/src/utils.ts +30 -13
  89. package/tsconfig.build.json +0 -11
  90. package/CHANGELOG.md +0 -181
  91. package/esm/cmd.d.ts +0 -23
  92. package/esm/cmd.d.ts.map +0 -1
  93. package/esm/cmd.js +0 -104
  94. package/esm/cmd.js.map +0 -1
  95. package/src/cmd.ts +0 -166
  96. package/tsconfig.build.tsbuildinfo +0 -1
package/esm/pm.js CHANGED
@@ -2,10 +2,12 @@
2
2
  // cspell:ignore instantapp
3
3
  // cspell:ignore apks
4
4
  // cspell:ignore versioncode
5
- import { AdbServiceBase } from "@yume-chan/adb";
5
+ // cspell:ignore dexopt
6
+ import { escapeArg } from "@yume-chan/adb";
6
7
  import { ConcatStringStream, SplitStringStream, TextDecoderStream, } from "@yume-chan/stream-extra";
7
- import { CmdNoneProtocolService } from "./cmd.js";
8
- import { buildArguments } from "./utils.js";
8
+ import { Cmd } from "./cmd/index.js";
9
+ import { serializeIntent } from "./intent.js";
10
+ import { buildCommand } from "./utils.js";
9
11
  export var PackageManagerInstallLocation;
10
12
  (function (PackageManagerInstallLocation) {
11
13
  PackageManagerInstallLocation[PackageManagerInstallLocation["Auto"] = 0] = "Auto";
@@ -20,37 +22,60 @@ export var PackageManagerInstallReason;
20
22
  PackageManagerInstallReason[PackageManagerInstallReason["DeviceSetup"] = 3] = "DeviceSetup";
21
23
  PackageManagerInstallReason[PackageManagerInstallReason["UserRequest"] = 4] = "UserRequest";
22
24
  })(PackageManagerInstallReason || (PackageManagerInstallReason = {}));
23
- export const PACKAGE_MANAGER_INSTALL_OPTIONS_MAP = {
24
- skipExisting: "-R",
25
- installerPackageName: "-i",
26
- allowTest: "-t",
27
- internalStorage: "-f",
28
- requestDowngrade: "-d",
29
- grantRuntimePermissions: "-g",
30
- restrictPermissions: "--restrict-permissions",
31
- doNotKill: "--dont-kill",
32
- originatingUri: "--originating-uri",
33
- refererUri: "--referrer",
34
- inheritFrom: "-p",
35
- packageName: "--pkg",
36
- abi: "--abi",
37
- instantApp: "--instant",
38
- full: "--full",
39
- preload: "--preload",
40
- user: "--user",
41
- installLocation: "--install-location",
42
- installReason: "--install-reason",
43
- forceUuid: "--force-uuid",
44
- apex: "--apex",
45
- forceNonStaged: "--force-non-staged",
46
- staged: "--staged",
47
- forceQueryable: "--force-queryable",
48
- enableRollback: "--enable-rollback",
49
- stagedReadyTimeout: "--staged-ready-timeout",
50
- skipVerification: "--skip-verification",
51
- bypassLowTargetSdkBlock: "--bypass-low-target-sdk-block",
25
+ function option(name, minApiLevel, maxApiLevel) {
26
+ return {
27
+ name,
28
+ minApiLevel,
29
+ maxApiLevel,
30
+ };
31
+ }
32
+ // https://cs.android.com/android/platform/superproject/+/master:frameworks/base/services/core/java/com/android/server/pm/PackageManagerShellCommand.java;l=3046;drc=6d14d35d0241f6fee145f8e54ffd77252e8d29fd
33
+ const InstallOptionsDefinitions = {
34
+ forwardLock: option("-l", undefined, 28),
35
+ replaceExisting: option("-r", undefined, 27),
36
+ skipExisting: option("-R", 28),
37
+ installerPackageName: option("-i"),
38
+ allowTest: option("-t"),
39
+ externalStorage: option("-s", undefined, 28),
40
+ internalStorage: option("-f"),
41
+ requestDowngrade: option("-d"),
42
+ grantRuntimePermissions: option("-g", 23),
43
+ restrictPermissions: option("--restrict-permissions", 29),
44
+ doNotKill: option("--dont-kill"),
45
+ originatingUri: option("--originating-uri"),
46
+ referrerUri: option("--referrer"),
47
+ inheritFrom: option("-p", 24),
48
+ packageName: option("--pkg", 28),
49
+ abi: option("--abi", 21),
50
+ instantApp: option("--ephemeral", 24),
51
+ full: option("--full", 26),
52
+ preload: option("--preload", 28),
53
+ user: option("--user", 21),
54
+ installLocation: option("--install-location", 24),
55
+ installReason: option("--install-reason", 29),
56
+ updateOwnership: option("--update-ownership", 34),
57
+ forceUuid: option("--force-uuid", 24),
58
+ forceSdk: option("--force-sdk", 24),
59
+ apex: option("--apex", 29),
60
+ forceNonStaged: option("--force-non-staged", 31),
61
+ multiPackage: option("--multi-package", 29),
62
+ staged: option("--staged", 29),
63
+ nonStaged: option("--non-staged", 35),
64
+ forceQueryable: option("--force-queryable", 30),
65
+ enableRollback: option("--enable-rollback", 29),
66
+ rollbackImpactLevel: option("--rollback-impact-level", 35),
67
+ wait: option("--wait", 30, 30),
68
+ noWait: option("--no-wait", 30, 30),
69
+ stagedReadyTimeout: option("--staged-ready-timeout", 31),
70
+ skipVerification: option("--skip-verification", 30),
71
+ skipEnable: option("--skip-enable", 34),
72
+ bypassLowTargetSdkBlock: option("--bypass-low-target-sdk-block", 34),
73
+ ignoreDexoptProfile: option("--ignore-dexopt-profile", 35),
74
+ packageSource: option("--package-source", 35),
75
+ dexoptCompilerFilter: option("--dexopt-compiler-filter", 35),
76
+ disableAutoInstallDependencies: option("--disable-auto-install-dependencies", 36),
52
77
  };
53
- export const PACKAGE_MANAGER_LIST_PACKAGES_OPTIONS_MAP = {
78
+ const ListPackagesOptionsMap = {
54
79
  listDisabled: "-d",
55
80
  listEnabled: "-e",
56
81
  showSourceDir: "-f",
@@ -64,17 +89,17 @@ export const PACKAGE_MANAGER_LIST_PACKAGES_OPTIONS_MAP = {
64
89
  uid: "--uid",
65
90
  filter: "",
66
91
  };
67
- const PACKAGE_MANAGER_UNINSTALL_OPTIONS_MAP = {
92
+ const UninstallOptionsMap = {
68
93
  keepData: "-k",
69
94
  user: "--user",
70
95
  versionCode: "--versionCode",
71
96
  splitNames: "",
72
97
  };
73
- const PACKAGE_MANAGER_RESOLVE_ACTIVITY_OPTIONS_MAP = {
98
+ const ResolveActivityOptionsMap = {
74
99
  user: "--user",
75
100
  };
76
- function buildInstallArguments(command, options) {
77
- const args = buildArguments([PackageManager.ServiceName, command], options, PACKAGE_MANAGER_INSTALL_OPTIONS_MAP);
101
+ function buildInstallCommand(command, options, apiLevel) {
102
+ const args = [PackageManager.ServiceName, command];
78
103
  if (!options?.skipExisting) {
79
104
  /*
80
105
  * | behavior | previous version | modern version |
@@ -89,15 +114,55 @@ function buildInstallArguments(command, options) {
89
114
  */
90
115
  args.push("-r");
91
116
  }
117
+ if (!options) {
118
+ return args;
119
+ }
120
+ for (const [key, value] of Object.entries(options)) {
121
+ if (value === undefined || value === null) {
122
+ continue;
123
+ }
124
+ const option = InstallOptionsDefinitions[key];
125
+ if (option === undefined) {
126
+ continue;
127
+ }
128
+ if (apiLevel !== undefined) {
129
+ if (option.minApiLevel !== undefined &&
130
+ apiLevel < option.minApiLevel) {
131
+ continue;
132
+ }
133
+ if (option.maxApiLevel !== undefined &&
134
+ apiLevel > option.maxApiLevel) {
135
+ continue;
136
+ }
137
+ }
138
+ switch (typeof value) {
139
+ case "boolean":
140
+ if (value) {
141
+ args.push(option.name);
142
+ }
143
+ break;
144
+ case "number":
145
+ args.push(option.name, value.toString());
146
+ break;
147
+ case "string":
148
+ args.push(option.name, value);
149
+ break;
150
+ default:
151
+ throw new Error(`Unsupported type for option ${key}: ${typeof value}`);
152
+ }
153
+ }
92
154
  return args;
93
155
  }
94
- export class PackageManager extends AdbServiceBase {
156
+ export class PackageManager {
95
157
  static ServiceName = "package";
96
158
  static CommandName = "pm";
159
+ #adb;
160
+ #apiLevel;
97
161
  #cmd;
98
- constructor(adb) {
99
- super(adb);
100
- this.#cmd = new CmdNoneProtocolService(adb, PackageManager.CommandName);
162
+ constructor(adb, apiLevel) {
163
+ this.#adb = adb;
164
+ this.#apiLevel = apiLevel;
165
+ this.#cmd = Cmd.createNoneProtocol(adb, PackageManager.CommandName);
101
166
  }
102
167
  /**
103
168
  * Install the apk file.
@@ -105,60 +170,57 @@ export class PackageManager extends AdbServiceBase {
105
170
  * @param apks Path to the apk file. It must exist on the device. On Android 10 and lower, only one apk can be specified.
106
171
  */
107
172
  async install(apks, options) {
108
- const args = buildInstallArguments("install", options);
109
- args[0] = PackageManager.CommandName;
173
+ const command = buildInstallCommand("install", options, this.#apiLevel);
174
+ command[0] = PackageManager.CommandName;
110
175
  // WIP: old version of pm doesn't support multiple apks
111
- args.push(...apks);
176
+ for (const apk of apks) {
177
+ command.push(apk);
178
+ }
112
179
  // Starting from Android 7, `pm` becomes a wrapper to `cmd package`.
113
180
  // The benefit of `cmd package` is it starts faster than the old `pm`,
114
181
  // because it connects to the already running `system` process,
115
182
  // instead of initializing all system components from scratch.
116
183
  //
117
- // But launching `cmd package` directly causes it to not be able to
118
- // read files in `/data/local/tmp` (and many other places) due to SELinux policies,
119
- // so installing files must still use `pm`.
184
+ // But `cmd` executable can't read files in `/data/local/tmp`
185
+ // (and many other places) due to SELinux policies,
186
+ // so installing from files must still use `pm`.
120
187
  // (the starting executable file decides which SELinux policies to apply)
121
- const output = await this.adb.subprocess.noneProtocol
122
- .spawnWaitText(args)
188
+ const output = await this.#adb.subprocess.noneProtocol
189
+ .spawn(command.map(escapeArg))
190
+ .wait()
191
+ .toString()
123
192
  .then((output) => output.trim());
124
193
  if (output !== "Success") {
125
194
  throw new Error(output);
126
195
  }
127
- return output;
128
196
  }
129
197
  async pushAndInstallStream(stream, options) {
130
198
  const fileName = Math.random().toString().substring(2);
131
199
  const filePath = `/data/local/tmp/${fileName}.apk`;
132
- const sync = await this.adb.sync();
200
+ await this.#adb.sync.write({
201
+ filename: filePath,
202
+ file: stream,
203
+ });
133
204
  try {
134
- await sync.write({
135
- filename: filePath,
136
- file: stream,
137
- });
205
+ await this.install([filePath], options);
138
206
  }
139
207
  finally {
140
- await sync.dispose();
141
- }
142
- try {
143
- return await this.install([filePath], options);
144
- }
145
- finally {
146
- await this.adb.rm(filePath);
208
+ await this.#adb.rm(filePath);
147
209
  }
148
210
  }
149
211
  async installStream(size, stream, options) {
150
- // Android 7 added both `cmd` command and streaming install support,
151
- // It's hard to detect whether `pm` supports streaming install (unless actually trying),
152
- // so check for whether `cmd` is supported,
153
- // and assume `pm` streaming install support status is same as that.
154
- if (!this.#cmd.isSupported) {
212
+ // Technically, support for `cmd` and streaming install are unrelated,
213
+ // but it's impossible to detect streaming install support without actually trying it.
214
+ // As they are both added in Android 7,
215
+ // assume `cmd` support also means streaming install support (and vice versa).
216
+ if (this.#cmd.mode === Cmd.Mode.Fallback) {
155
217
  // Fall back to push file then install
156
218
  await this.pushAndInstallStream(stream, options);
157
219
  return;
158
220
  }
159
- const args = buildInstallArguments("install", options);
160
- args.push("-S", size.toString());
161
- const process = await this.#cmd.spawn(args);
221
+ const command = buildInstallCommand("install", options, this.#apiLevel);
222
+ command.push("-S", size.toString());
223
+ const process = await this.#cmd.spawn(command);
162
224
  const output = process.output
163
225
  .pipeThrough(new TextDecoderStream())
164
226
  .pipeThrough(new ConcatStringStream())
@@ -172,8 +234,9 @@ export class PackageManager extends AdbServiceBase {
172
234
  }),
173
235
  ]);
174
236
  }
237
+ static PackageListItemPrefix = "package:";
175
238
  static parsePackageListItem(line) {
176
- line = line.substring("package:".length);
239
+ line = line.substring(PackageManager.PackageListItemPrefix.length);
177
240
  let packageName;
178
241
  let sourceDir;
179
242
  let versionCode;
@@ -215,54 +278,84 @@ export class PackageManager extends AdbServiceBase {
215
278
  };
216
279
  }
217
280
  async *listPackages(options) {
218
- const args = buildArguments(["package", "list", "packages"], options, PACKAGE_MANAGER_LIST_PACKAGES_OPTIONS_MAP);
281
+ const command = buildCommand(["package", "list", "packages"], options, ListPackagesOptionsMap);
219
282
  if (options?.filter) {
220
- args.push(options.filter);
283
+ command.push(options.filter);
221
284
  }
222
- const process = await this.#cmd.spawn(args);
223
- const reader = process.output
285
+ const process = await this.#cmd.spawn(command);
286
+ const output = process.output
224
287
  .pipeThrough(new TextDecoderStream())
225
- .pipeThrough(new SplitStringStream("\n"))
226
- .getReader();
227
- while (true) {
228
- const { done, value } = await reader.read();
229
- if (done) {
230
- break;
288
+ .pipeThrough(new SplitStringStream("\n", { trim: true }));
289
+ for await (const line of output) {
290
+ if (!line.startsWith(PackageManager.PackageListItemPrefix)) {
291
+ continue;
231
292
  }
232
- yield PackageManager.parsePackageListItem(value);
293
+ yield PackageManager.parsePackageListItem(line);
233
294
  }
234
295
  }
235
- async getPackageSources(packageName) {
236
- const args = [PackageManager.ServiceName, "-p", packageName];
237
- const process = await this.#cmd.spawn(args);
238
- const result = [];
239
- for await (const line of process.output
296
+ /**
297
+ * Gets APK file paths for a package.
298
+ *
299
+ * On supported Android versions, all split APKs are included.
300
+ * @param packageName The package name to query
301
+ * @param options The user ID to query
302
+ * @returns An array of APK file paths
303
+ */
304
+ async getPackageSources(packageName, options) {
305
+ // `pm path` and `pm -p` are the same,
306
+ // but `pm path` allows an optional `--user` option.
307
+ const command = [PackageManager.ServiceName, "path"];
308
+ if (options?.user !== undefined) {
309
+ command.push("--user", options.user.toString());
310
+ }
311
+ command.push(packageName);
312
+ // Android 7 and 8 support `cmd package` but not `cmd package path` command
313
+ let process;
314
+ if (this.#apiLevel !== undefined && this.#apiLevel <= 27) {
315
+ command[0] = PackageManager.CommandName;
316
+ process = await this.#adb.subprocess.noneProtocol.spawn(command.map(escapeArg));
317
+ }
318
+ else {
319
+ process = await this.#cmd.spawn(command);
320
+ }
321
+ const lines = process.output
240
322
  .pipeThrough(new TextDecoderStream())
241
- .pipeThrough(new SplitStringStream("\n"))) {
242
- if (line.startsWith("package:")) {
243
- result.push(line.substring("package:".length));
323
+ .pipeThrough(new SplitStringStream("\n", { trim: true }));
324
+ const result = [];
325
+ for await (const line of lines) {
326
+ if (!line.startsWith(PackageManager.PackageListItemPrefix)) {
327
+ continue;
244
328
  }
329
+ result.push(line.substring(PackageManager.PackageListItemPrefix.length));
245
330
  }
246
331
  return result;
247
332
  }
248
333
  async uninstall(packageName, options) {
249
- const args = buildArguments([PackageManager.ServiceName, "uninstall"], options, PACKAGE_MANAGER_UNINSTALL_OPTIONS_MAP);
250
- args.push(packageName);
334
+ const command = buildCommand([PackageManager.ServiceName, "uninstall"], options, UninstallOptionsMap);
335
+ command.push(packageName);
251
336
  if (options?.splitNames) {
252
- args.push(...options.splitNames);
337
+ for (const splitName of options.splitNames) {
338
+ command.push(splitName);
339
+ }
253
340
  }
254
341
  const output = await this.#cmd
255
- .spawnWaitText(args)
342
+ .spawn(command)
343
+ .wait()
344
+ .toString()
256
345
  .then((output) => output.trim());
257
346
  if (output !== "Success") {
258
347
  throw new Error(output);
259
348
  }
260
349
  }
261
350
  async resolveActivity(options) {
262
- let args = buildArguments([PackageManager.ServiceName, "resolve-activity", "--components"], options, PACKAGE_MANAGER_RESOLVE_ACTIVITY_OPTIONS_MAP);
263
- args = args.concat(options.intent.build());
351
+ const command = buildCommand([PackageManager.ServiceName, "resolve-activity", "--components"], options, ResolveActivityOptionsMap);
352
+ for (const arg of serializeIntent(options.intent)) {
353
+ command.push(arg);
354
+ }
264
355
  const output = await this.#cmd
265
- .spawnWaitText(args)
356
+ .spawn(command)
357
+ .wait()
358
+ .toString()
266
359
  .then((output) => output.trim());
267
360
  if (output === "No activity found") {
268
361
  return undefined;
@@ -280,15 +373,19 @@ export class PackageManager extends AdbServiceBase {
280
373
  * @returns ID of the new install session
281
374
  */
282
375
  async sessionCreate(options) {
283
- const args = buildInstallArguments("install-create", options);
376
+ const command = buildInstallCommand("install-create", options, this.#apiLevel);
284
377
  const output = await this.#cmd
285
- .spawnWaitText(args)
378
+ .spawn(command)
379
+ .wait()
380
+ .toString()
286
381
  .then((output) => output.trim());
287
- const sessionIdString = output.match(/.*\[(\d+)\].*/);
288
- if (!sessionIdString) {
289
- throw new Error("Failed to create install session");
382
+ // The output format won't change to make it easier to parse
383
+ // https://cs.android.com/android/platform/superproject/+/android-latest-release:frameworks/base/services/core/java/com/android/server/pm/PackageManagerShellCommand.java;l=1744;drc=e38fa24e5738513d721ec2d9fd2dd00f32e327c1
384
+ const match = output.match(/\[(\d+)\]/);
385
+ if (!match) {
386
+ throw new Error(output);
290
387
  }
291
- return Number.parseInt(sessionIdString[1], 10);
388
+ return Number.parseInt(match[1], 10);
292
389
  }
293
390
  async checkResult(stream) {
294
391
  const output = await stream
@@ -300,18 +397,19 @@ export class PackageManager extends AdbServiceBase {
300
397
  }
301
398
  }
302
399
  async sessionAddSplit(sessionId, splitName, path) {
303
- const args = [
304
- "pm",
400
+ const command = [
401
+ PackageManager.CommandName,
305
402
  "install-write",
306
403
  sessionId.toString(),
307
404
  splitName,
308
405
  path,
309
406
  ];
310
- const process = await this.adb.subprocess.noneProtocol.spawn(args);
407
+ // Similar to `install`, must use `adb.subprocess` so it can read `path`
408
+ const process = await this.#adb.subprocess.noneProtocol.spawn(command.map(escapeArg));
311
409
  await this.checkResult(process.output);
312
410
  }
313
411
  async sessionAddSplitStream(sessionId, splitName, size, stream) {
314
- const args = [
412
+ const command = [
315
413
  PackageManager.ServiceName,
316
414
  "install-write",
317
415
  "-S",
@@ -320,28 +418,43 @@ export class PackageManager extends AdbServiceBase {
320
418
  splitName,
321
419
  "-",
322
420
  ];
323
- const process = await this.#cmd.spawn(args);
421
+ const process = await this.#cmd.spawn(command);
324
422
  await Promise.all([
325
423
  stream.pipeTo(process.stdin),
326
424
  this.checkResult(process.output),
327
425
  ]);
328
426
  }
427
+ /**
428
+ * Commit an install session.
429
+ * @param sessionId ID of install session returned by `createSession`
430
+ * @returns A `Promise` that resolves when the session is committed
431
+ */
329
432
  async sessionCommit(sessionId) {
330
- const args = [
433
+ const command = [
331
434
  PackageManager.ServiceName,
332
435
  "install-commit",
333
436
  sessionId.toString(),
334
437
  ];
335
- const process = await this.#cmd.spawn(args);
438
+ // Android 7 did support `cmd package install-commit` command,
439
+ // but it wrote the "Success" message to an incorrect output stream,
440
+ // causing `checkResult` to fail with an empty message
441
+ let process;
442
+ if (this.#apiLevel !== undefined && this.#apiLevel <= 25) {
443
+ command[0] = PackageManager.CommandName;
444
+ process = await this.#adb.subprocess.noneProtocol.spawn(command.map(escapeArg));
445
+ }
446
+ else {
447
+ process = await this.#cmd.spawn(command);
448
+ }
336
449
  await this.checkResult(process.output);
337
450
  }
338
451
  async sessionAbandon(sessionId) {
339
- const args = [
452
+ const command = [
340
453
  PackageManager.ServiceName,
341
454
  "install-abandon",
342
455
  sessionId.toString(),
343
456
  ];
344
- const process = await this.#cmd.spawn(args);
457
+ const process = await this.#cmd.spawn(command);
345
458
  await this.checkResult(process.output);
346
459
  }
347
460
  }
@@ -365,6 +478,10 @@ export class PackageManagerInstallSession {
365
478
  addSplitStream(splitName, size, stream) {
366
479
  return this.#packageManager.sessionAddSplitStream(this.#id, splitName, size, stream);
367
480
  }
481
+ /**
482
+ * Commit this install session.
483
+ * @returns A `Promise` that resolves when the session is committed
484
+ */
368
485
  commit() {
369
486
  return this.#packageManager.sessionCommit(this.#id);
370
487
  }
package/esm/pm.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pm.js","sourceRoot":"","sources":["../src/pm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pm.js","sourceRoot":"","sources":["../src/pm.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,2BAA2B;AAC3B,qBAAqB;AACrB,4BAA4B;AAC5B,uBAAuB;AAGvB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EACH,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,GACpB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAErC,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,MAAM,CAAN,IAAY,6BAIX;AAJD,WAAY,6BAA6B;IACrC,iFAAI,CAAA;IACJ,iGAAY,CAAA;IACZ,qGAAc,CAAA;AAClB,CAAC,EAJW,6BAA6B,KAA7B,6BAA6B,QAIxC;AAED,MAAM,CAAN,IAAY,2BAMX;AAND,WAAY,2BAA2B;IACnC,mFAAO,CAAA;IACP,2FAAW,CAAA;IACX,+FAAa,CAAA;IACb,2FAAW,CAAA;IACX,2FAAW,CAAA;AACf,CAAC,EANW,2BAA2B,KAA3B,2BAA2B,QAMtC;AASD,SAAS,MAAM,CACX,IAAY,EACZ,WAAoB,EACpB,WAAoB;IAEpB,OAAO;QACH,IAAI;QACJ,WAAW;QACX,WAAW;KACS,CAAC;AAC7B,CAAC;AAED,6MAA6M;AAC7M,MAAM,yBAAyB,GAAG;IAC9B,WAAW,EAAE,MAAM,CAAU,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;IACjD,eAAe,EAAE,MAAM,CAAU,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;IACrD,YAAY,EAAE,MAAM,CAAU,IAAI,EAAE,EAAE,CAAC;IACvC,oBAAoB,EAAE,MAAM,CAAS,IAAI,CAAC;IAC1C,SAAS,EAAE,MAAM,CAAU,IAAI,CAAC;IAChC,eAAe,EAAE,MAAM,CAAU,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC;IACrD,eAAe,EAAE,MAAM,CAAU,IAAI,CAAC;IACtC,gBAAgB,EAAE,MAAM,CAAU,IAAI,CAAC;IACvC,uBAAuB,EAAE,MAAM,CAAU,IAAI,EAAE,EAAE,CAAC;IAClD,mBAAmB,EAAE,MAAM,CAAU,wBAAwB,EAAE,EAAE,CAAC;IAClE,SAAS,EAAE,MAAM,CAAU,aAAa,CAAC;IACzC,cAAc,EAAE,MAAM,CAAS,mBAAmB,CAAC;IACnD,WAAW,EAAE,MAAM,CAAS,YAAY,CAAC;IACzC,WAAW,EAAE,MAAM,CAAS,IAAI,EAAE,EAAE,CAAC;IACrC,WAAW,EAAE,MAAM,CAAS,OAAO,EAAE,EAAE,CAAC;IACxC,GAAG,EAAE,MAAM,CAAS,OAAO,EAAE,EAAE,CAAC;IAChC,UAAU,EAAE,MAAM,CAAU,aAAa,EAAE,EAAE,CAAC;IAC9C,IAAI,EAAE,MAAM,CAAU,QAAQ,EAAE,EAAE,CAAC;IACnC,OAAO,EAAE,MAAM,CAAU,WAAW,EAAE,EAAE,CAAC;IACzC,IAAI,EAAE,MAAM,CAAkB,QAAQ,EAAE,EAAE,CAAC;IAC3C,eAAe,EAAE,MAAM,CACnB,oBAAoB,EACpB,EAAE,CACL;IACD,aAAa,EAAE,MAAM,CAA8B,kBAAkB,EAAE,EAAE,CAAC;IAC1E,eAAe,EAAE,MAAM,CAAU,oBAAoB,EAAE,EAAE,CAAC;IAC1D,SAAS,EAAE,MAAM,CAAS,cAAc,EAAE,EAAE,CAAC;IAC7C,QAAQ,EAAE,MAAM,CAAS,aAAa,EAAE,EAAE,CAAC;IAC3C,IAAI,EAAE,MAAM,CAAU,QAAQ,EAAE,EAAE,CAAC;IACnC,cAAc,EAAE,MAAM,CAAU,oBAAoB,EAAE,EAAE,CAAC;IACzD,YAAY,EAAE,MAAM,CAAU,iBAAiB,EAAE,EAAE,CAAC;IACpD,MAAM,EAAE,MAAM,CAAU,UAAU,EAAE,EAAE,CAAC;IACvC,SAAS,EAAE,MAAM,CAAU,cAAc,EAAE,EAAE,CAAC;IAC9C,cAAc,EAAE,MAAM,CAAU,mBAAmB,EAAE,EAAE,CAAC;IACxD,cAAc,EAAE,MAAM,CAAmB,mBAAmB,EAAE,EAAE,CAAC;IACjE,mBAAmB,EAAE,MAAM,CAAS,yBAAyB,EAAE,EAAE,CAAC;IAClE,IAAI,EAAE,MAAM,CAAmB,QAAQ,EAAE,EAAE,EAAE,EAAE,CAAC;IAChD,MAAM,EAAE,MAAM,CAAU,WAAW,EAAE,EAAE,EAAE,EAAE,CAAC;IAC5C,kBAAkB,EAAE,MAAM,CAAS,wBAAwB,EAAE,EAAE,CAAC;IAChE,gBAAgB,EAAE,MAAM,CAAU,qBAAqB,EAAE,EAAE,CAAC;IAC5D,UAAU,EAAE,MAAM,CAAU,eAAe,EAAE,EAAE,CAAC;IAChD,uBAAuB,EAAE,MAAM,CAC3B,+BAA+B,EAC/B,EAAE,CACL;IACD,mBAAmB,EAAE,MAAM,CAAU,yBAAyB,EAAE,EAAE,CAAC;IACnE,aAAa,EAAE,MAAM,CAAS,kBAAkB,EAAE,EAAE,CAAC;IACrD,oBAAoB,EAAE,MAAM,CAAS,0BAA0B,EAAE,EAAE,CAAC;IACpE,8BAA8B,EAAE,MAAM,CAClC,qCAAqC,EACrC,EAAE,CACL;CACK,CAAC;AAEX,MAAM,sBAAsB,GAGxB;IACA,YAAY,EAAE,IAAI;IAClB,WAAW,EAAE,IAAI;IACjB,aAAa,EAAE,IAAI;IACnB,aAAa,EAAE,IAAI;IACnB,UAAU,EAAE,IAAI;IAChB,OAAO,EAAE,IAAI;IACb,cAAc,EAAE,IAAI;IACpB,eAAe,EAAE,oBAAoB;IACrC,YAAY,EAAE,aAAa;IAC3B,IAAI,EAAE,QAAQ;IACd,GAAG,EAAE,OAAO;IACZ,MAAM,EAAE,EAAE;CACb,CAAC;AAEF,MAAM,mBAAmB,GAGrB;IACA,QAAQ,EAAE,IAAI;IACd,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,eAAe;IAC5B,UAAU,EAAE,EAAE;CACjB,CAAC;AAEF,MAAM,yBAAyB,GAE3B;IACA,IAAI,EAAE,QAAQ;CACjB,CAAC;AAEF,SAAS,mBAAmB,CACxB,OAAe,EACf,OAAkD,EAClD,QAA4B;IAE5B,MAAM,IAAI,GAAG,CAAC,cAAc,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAEnD,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC;QACzB;;;;;;;;;;WAUG;QACH,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACxC,SAAS;QACb,CAAC;QAED,MAAM,MAAM,GACR,yBAAyB,CACrB,GAA0C,CAC7C,CAAC;QAEN,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACvB,SAAS;QACb,CAAC;QAED,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACzB,IACI,MAAM,CAAC,WAAW,KAAK,SAAS;gBAChC,QAAQ,GAAG,MAAM,CAAC,WAAW,EAC/B,CAAC;gBACC,SAAS;YACb,CAAC;YACD,IACI,MAAM,CAAC,WAAW,KAAK,SAAS;gBAChC,QAAQ,GAAG,MAAM,CAAC,WAAW,EAC/B,CAAC;gBACC,SAAS;YACb,CAAC;QACL,CAAC;QAED,QAAQ,OAAO,KAAK,EAAE,CAAC;YACnB,KAAK,SAAS;gBACV,IAAI,KAAK,EAAE,CAAC;oBACR,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC3B,CAAC;gBACD,MAAM;YACV,KAAK,QAAQ;gBACT,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACzC,MAAM;YACV,KAAK,QAAQ;gBACT,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC9B,MAAM;YACV;gBACI,MAAM,IAAI,KAAK,CACX,+BAA+B,GAAG,KAAK,OAAO,KAAK,EAAE,CACxD,CAAC;QACV,CAAC;IACL,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,MAAM,OAAO,cAAc;IACvB,MAAM,CAAU,WAAW,GAAG,SAAS,CAAC;IACxC,MAAM,CAAU,WAAW,GAAG,IAAI,CAAC;IAE1B,IAAI,CAAM;IACV,SAAS,CAAqB;IAC9B,IAAI,CAA0B;IAEvC,YAAY,GAAQ,EAAE,QAAiB;QACnC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;QAChB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,kBAAkB,CAAC,GAAG,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;IACxE,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO,CACT,IAAuB,EACvB,OAAuC;QAEvC,MAAM,OAAO,GAAG,mBAAmB,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAExE,OAAO,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,WAAW,CAAC;QAExC,uDAAuD;QACvD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;QAED,oEAAoE;QACpE,sEAAsE;QACtE,+DAA+D;QAC/D,8DAA8D;QAC9D,EAAE;QACF,6DAA6D;QAC7D,mDAAmD;QACnD,gDAAgD;QAChD,yEAAyE;QACzE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY;aACjD,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;aAC7B,IAAI,EAAE;aACN,QAAQ,EAAE;aACV,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAErC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;IAED,KAAK,CAAC,oBAAoB,CACtB,MAAmD,EACnD,OAAuC;QAEvC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,mBAAmB,QAAQ,MAAM,CAAC;QAEnD,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YACvB,QAAQ,EAAE,QAAQ;YAClB,IAAI,EAAE,MAAM;SACf,CAAC,CAAC;QAEH,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC;gBAAS,CAAC;YACP,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,aAAa,CACf,IAAY,EACZ,MAAmD,EACnD,OAAuC;QAEvC,sEAAsE;QACtE,sFAAsF;QACtF,uCAAuC;QACvC,8EAA8E;QAC9E,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACvC,sCAAsC;YACtC,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACjD,OAAO;QACX,CAAC;QAED,MAAM,OAAO,GAAG,mBAAmB,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACxE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACpC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAE/C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM;aACxB,WAAW,CAAC,IAAI,iBAAiB,EAAE,CAAC;aACpC,WAAW,CAAC,IAAI,kBAAkB,EAAE,CAAC;aACrC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAErC,MAAM,OAAO,CAAC,GAAG,CAAC;YACd,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBACnB,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBACvB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC5B,CAAC;YACL,CAAC,CAAC;SACL,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAU,qBAAqB,GAAG,UAAU,CAAC;IAEnD,MAAM,CAAC,oBAAoB,CAAC,IAAY;QACpC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAEnE,IAAI,WAAmB,CAAC;QACxB,IAAI,SAA6B,CAAC;QAClC,IAAI,WAA+B,CAAC;QACpC,IAAI,SAA6B,CAAC;QAClC,IAAI,GAAuB,CAAC;QAE5B,oDAAoD;QACpD,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACf,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;YAClE,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACpC,CAAC;QAED,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACpC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACf,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;YACzD,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACpC,CAAC;QAED,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACtC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACf,WAAW,GAAG,MAAM,CAAC,QAAQ,CACzB,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,EAC9C,EAAE,CACL,CAAC;YACF,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACpC,CAAC;QAED,yCAAyC;QACzC,sFAAsF;QACtF,uBAAuB;QACvB,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACf,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACrC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACJ,WAAW,GAAG,IAAI,CAAC;QACvB,CAAC;QAED,OAAO;YACH,WAAW;YACX,SAAS;YACT,WAAW;YACX,SAAS;YACT,GAAG;SACN,CAAC;IACN,CAAC;IAED,KAAK,CAAC,CAAC,YAAY,CACf,OAAsD;QAEtD,MAAM,OAAO,GAAG,YAAY,CACxB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAC/B,OAAO,EACP,sBAAsB,CACzB,CAAC;QAEF,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAE/C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM;aACxB,WAAW,CAAC,IAAI,iBAAiB,EAAE,CAAC;aACpC,WAAW,CAAC,IAAI,iBAAiB,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAE9D,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,qBAAqB,CAAC,EAAE,CAAC;gBACzD,SAAS;YACb,CAAC;YAED,MAAM,cAAc,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACpD,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,iBAAiB,CACnB,WAAmB,EACnB,OAKC;QAED,sCAAsC;QACtC,oDAAoD;QACpD,MAAM,OAAO,GAAG,CAAC,cAAc,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAErD,IAAI,OAAO,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACpD,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE1B,2EAA2E;QAC3E,IAAI,OAA+B,CAAC;QACpC,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;YACvD,OAAO,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,WAAW,CAAC;YACxC,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CACnD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CACzB,CAAC;QACN,CAAC;aAAM,CAAC;YACJ,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM;aACvB,WAAW,CAAC,IAAI,iBAAiB,EAAE,CAAC;aACpC,WAAW,CAAC,IAAI,iBAAiB,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAE9D,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,qBAAqB,CAAC,EAAE,CAAC;gBACzD,SAAS;YACb,CAAC;YAED,MAAM,CAAC,IAAI,CACP,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAC9D,CAAC;QACN,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,KAAK,CAAC,SAAS,CACX,WAAmB,EACnB,OAAmD;QAEnD,MAAM,OAAO,GAAG,YAAY,CACxB,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,EACzC,OAAO,EACP,mBAAmB,CACtB,CAAC;QAEF,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE1B,IAAI,OAAO,EAAE,UAAU,EAAE,CAAC;YACtB,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACzC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5B,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI;aACzB,KAAK,CAAC,OAAO,CAAC;aACd,IAAI,EAAE;aACN,QAAQ,EAAE;aACV,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACrC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;IAED,KAAK,CAAC,eAAe,CACjB,OAA8C;QAE9C,MAAM,OAAO,GAAG,YAAY,CACxB,CAAC,cAAc,CAAC,WAAW,EAAE,kBAAkB,EAAE,cAAc,CAAC,EAChE,OAAO,EACP,yBAAyB,CAC5B,CAAC;QAEF,KAAK,MAAM,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI;aACzB,KAAK,CAAC,OAAO,CAAC;aACd,IAAI,EAAE;aACN,QAAQ,EAAE;aACV,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAErC,IAAI,MAAM,KAAK,mBAAmB,EAAE,CAAC;YACjC,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,aAAa,CACf,OAAuC;QAEvC,MAAM,OAAO,GAAG,mBAAmB,CAC/B,gBAAgB,EAChB,OAAO,EACP,IAAI,CAAC,SAAS,CACjB,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI;aACzB,KAAK,CAAC,OAAO,CAAC;aACd,IAAI,EAAE;aACN,QAAQ,EAAE;aACV,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAErC,4DAA4D;QAC5D,6NAA6N;QAC7N,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;QAED,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAkC;QAChD,MAAM,MAAM,GAAG,MAAM,MAAM;aACtB,WAAW,CAAC,IAAI,iBAAiB,EAAE,CAAC;aACpC,WAAW,CAAC,IAAI,kBAAkB,EAAE,CAAC;aACrC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAErC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;IACL,CAAC;IAED,KAAK,CAAC,eAAe,CACjB,SAAiB,EACjB,SAAiB,EACjB,IAAY;QAEZ,MAAM,OAAO,GAAa;YACtB,cAAc,CAAC,WAAW;YAC1B,eAAe;YACf,SAAS,CAAC,QAAQ,EAAE;YACpB,SAAS;YACT,IAAI;SACP,CAAC;QAEF,wEAAwE;QACxE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CACzD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CACzB,CAAC;QACF,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,qBAAqB,CACvB,SAAiB,EACjB,SAAiB,EACjB,IAAY,EACZ,MAAmD;QAEnD,MAAM,OAAO,GAAa;YACtB,cAAc,CAAC,WAAW;YAC1B,eAAe;YACf,IAAI;YACJ,IAAI,CAAC,QAAQ,EAAE;YACf,SAAS,CAAC,QAAQ,EAAE;YACpB,SAAS;YACT,GAAG;SACN,CAAC;QAEF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,OAAO,CAAC,GAAG,CAAC;YACd,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;YAC5B,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;SACnC,CAAC,CAAC;IACP,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,aAAa,CAAC,SAAiB;QACjC,MAAM,OAAO,GAAa;YACtB,cAAc,CAAC,WAAW;YAC1B,gBAAgB;YAChB,SAAS,CAAC,QAAQ,EAAE;SACvB,CAAC;QAEF,8DAA8D;QAC9D,oEAAoE;QACpE,sDAAsD;QACtD,IAAI,OAA+B,CAAC;QACpC,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;YACvD,OAAO,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,WAAW,CAAC;YACxC,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CACnD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CACzB,CAAC;QACN,CAAC;aAAM,CAAC;YACJ,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC;QAED,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,SAAiB;QAClC,MAAM,OAAO,GAAa;YACtB,cAAc,CAAC,WAAW;YAC1B,iBAAiB;YACjB,SAAS,CAAC,QAAQ,EAAE;SACvB,CAAC;QACF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/C,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;;AAmDL,MAAM,OAAO,4BAA4B;IACrC,MAAM,CAAC,KAAK,CAAC,MAAM,CACf,cAA8B,EAC9B,OAAuC;QAEvC,MAAM,EAAE,GAAG,MAAM,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACvD,OAAO,IAAI,4BAA4B,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,eAAe,CAAiB;IAEhC,GAAG,CAAS;IACZ,IAAI,EAAE;QACF,OAAO,IAAI,CAAC,GAAG,CAAC;IACpB,CAAC;IAED,YAAY,cAA8B,EAAE,EAAU;QAClD,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;QACtC,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;IAClB,CAAC;IAED,QAAQ,CAAC,SAAiB,EAAE,IAAY;QACpC,OAAO,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAC3E,CAAC;IAED,cAAc,CACV,SAAiB,EACjB,IAAY,EACZ,MAAmD;QAEnD,OAAO,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAC7C,IAAI,CAAC,GAAG,EACR,SAAS,EACT,IAAI,EACJ,MAAM,CACT,CAAC;IACN,CAAC;IAED;;;OAGG;IACH,MAAM;QACF,OAAO,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxD,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzD,CAAC;CACJ"}
package/esm/settings.d.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  import type { Adb } from "@yume-chan/adb";
2
- import { AdbServiceBase } from "@yume-chan/adb";
3
2
  import type { SingleUser } from "./utils.js";
4
3
  export type SettingsNamespace = "system" | "secure" | "global";
5
4
  export declare const SettingsResetMode: {
@@ -15,7 +14,7 @@ export interface SettingsPutOptions extends SettingsOptions {
15
14
  tag?: string;
16
15
  makeDefault?: boolean;
17
16
  }
18
- export declare class Settings extends AdbServiceBase {
17
+ export declare class Settings {
19
18
  #private;
20
19
  static ServiceName: string;
21
20
  static CommandName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGhD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE/D,eAAO,MAAM,iBAAiB;;;;CAIpB,CAAC;AAEX,MAAM,MAAM,iBAAiB,GACzB,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC;AAE/D,MAAM,WAAW,eAAe;IAC5B,IAAI,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACvD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAGD,qBAAa,QAAS,SAAQ,cAAc;;IACxC,MAAM,CAAC,WAAW,SAAc;IAChC,MAAM,CAAC,WAAW,SAAc;gBAIpB,GAAG,EAAE,GAAG;IAKpB,IAAI,CACA,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,eAAe,GAAG,SAAS,EACpC,GAAG,IAAI,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,MAAM,CAAC;IAaZ,GAAG,CACL,SAAS,EAAE,iBAAiB,EAC5B,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,eAAe,GAC1B,OAAO,CAAC,MAAM,CAAC;IAMZ,MAAM,CACR,SAAS,EAAE,iBAAiB,EAC5B,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,eAAe,GAC1B,OAAO,CAAC,IAAI,CAAC;IAIV,GAAG,CACL,SAAS,EAAE,iBAAiB,EAC5B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,kBAAkB,GAC7B,OAAO,CAAC,IAAI,CAAC;IAWhB,KAAK,CACD,SAAS,EAAE,iBAAiB,EAC5B,IAAI,EAAE,iBAAiB,EACvB,OAAO,CAAC,EAAE,eAAe,GAC1B,OAAO,CAAC,IAAI,CAAC;IAChB,KAAK,CACD,SAAS,EAAE,iBAAiB,EAC5B,WAAW,EAAE,MAAM,EACnB,GAAG,CAAC,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,eAAe,GAC1B,OAAO,CAAC,IAAI,CAAC;CAmBnB"}
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAG1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE/D,eAAO,MAAM,iBAAiB;;;;CAIpB,CAAC;AAEX,MAAM,MAAM,iBAAiB,GACzB,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC;AAE/D,MAAM,WAAW,eAAe;IAC5B,IAAI,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACvD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAGD,qBAAa,QAAQ;;IACjB,MAAM,CAAC,WAAW,SAAc;IAChC,MAAM,CAAC,WAAW,SAAc;gBAIpB,GAAG,EAAE,GAAG;IAIpB,IAAI,CACA,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,iBAAiB,EAC5B,OAAO,EAAE,eAAe,GAAG,SAAS,EACpC,GAAG,IAAI,EAAE,MAAM,EAAE,GAClB,OAAO,CAAC,MAAM,CAAC;IAgBZ,GAAG,CACL,SAAS,EAAE,iBAAiB,EAC5B,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,eAAe,GAC1B,OAAO,CAAC,MAAM,CAAC;IAMZ,MAAM,CACR,SAAS,EAAE,iBAAiB,EAC5B,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,eAAe,GAC1B,OAAO,CAAC,IAAI,CAAC;IAIV,GAAG,CACL,SAAS,EAAE,iBAAiB,EAC5B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,kBAAkB,GAC7B,OAAO,CAAC,IAAI,CAAC;IAWhB,KAAK,CACD,SAAS,EAAE,iBAAiB,EAC5B,IAAI,EAAE,iBAAiB,EACvB,OAAO,CAAC,EAAE,eAAe,GAC1B,OAAO,CAAC,IAAI,CAAC;IAChB,KAAK,CACD,SAAS,EAAE,iBAAiB,EAC5B,WAAW,EAAE,MAAM,EACnB,GAAG,CAAC,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,eAAe,GAC1B,OAAO,CAAC,IAAI,CAAC;CAmBnB"}
package/esm/settings.js CHANGED
@@ -1,32 +1,32 @@
1
- import { AdbServiceBase } from "@yume-chan/adb";
2
- import { CmdNoneProtocolService } from "./cmd.js";
1
+ import { Cmd } from "./cmd/index.js";
3
2
  export const SettingsResetMode = {
4
3
  UntrustedDefaults: "untrusted_defaults",
5
4
  UntrustedClear: "untrusted_clear",
6
5
  TrustedDefaults: "trusted_defaults",
7
6
  };
8
7
  // frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsService.java
9
- export class Settings extends AdbServiceBase {
8
+ export class Settings {
10
9
  static ServiceName = "settings";
11
10
  static CommandName = "settings";
12
11
  #cmd;
13
12
  constructor(adb) {
14
- super(adb);
15
- this.#cmd = new CmdNoneProtocolService(adb, Settings.CommandName);
13
+ this.#cmd = Cmd.createNoneProtocol(adb, Settings.CommandName);
16
14
  }
17
15
  base(verb, namespace, options, ...args) {
18
- let command = [Settings.ServiceName];
16
+ const command = [Settings.ServiceName];
19
17
  if (options?.user !== undefined) {
20
18
  command.push("--user", options.user.toString());
21
19
  }
22
20
  command.push(verb, namespace);
23
- command = command.concat(args);
24
- return this.#cmd.spawnWaitText(command);
21
+ for (const arg of args) {
22
+ command.push(arg);
23
+ }
24
+ return this.#cmd.spawn(command).wait().toString();
25
25
  }
26
26
  async get(namespace, key, options) {
27
27
  const output = await this.base("get", namespace, options, key);
28
28
  // Remove last \n
29
- return output.substring(0, output.length - 1);
29
+ return output.endsWith("\n") ? output.slice(0, -1) : output;
30
30
  }
31
31
  async delete(namespace, key, options) {
32
32
  await this.base("delete", namespace, options, key);