appium-adb 14.3.1 → 14.3.2
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.md +7 -0
- package/build/lib/helpers.d.ts +2 -2
- package/build/lib/helpers.d.ts.map +1 -1
- package/build/lib/helpers.js +5 -5
- package/build/lib/helpers.js.map +1 -1
- package/build/lib/index.d.ts +8 -0
- package/build/lib/index.d.ts.map +1 -0
- package/build/{index.js → lib/index.js} +4 -4
- package/build/lib/index.js.map +1 -0
- package/build/lib/tools/aab-utils.d.ts +2 -2
- package/build/lib/tools/aab-utils.d.ts.map +1 -1
- package/build/lib/tools/aab-utils.js +10 -10
- package/build/lib/tools/aab-utils.js.map +1 -1
- package/build/lib/tools/android-manifest.d.ts +2 -2
- package/build/lib/tools/android-manifest.d.ts.map +1 -1
- package/build/lib/tools/android-manifest.js +27 -27
- package/build/lib/tools/android-manifest.js.map +1 -1
- package/build/lib/tools/apk-signing.d.ts +2 -2
- package/build/lib/tools/apk-signing.d.ts.map +1 -1
- package/build/lib/tools/apk-signing.js +34 -34
- package/build/lib/tools/apk-signing.js.map +1 -1
- package/build/lib/tools/apk-utils.d.ts +2 -2
- package/build/lib/tools/apk-utils.d.ts.map +1 -1
- package/build/lib/tools/apk-utils.js +50 -50
- package/build/lib/tools/apk-utils.js.map +1 -1
- package/build/lib/tools/apks-utils.d.ts +2 -2
- package/build/lib/tools/apks-utils.d.ts.map +1 -1
- package/build/lib/tools/apks-utils.js +18 -18
- package/build/lib/tools/apks-utils.js.map +1 -1
- package/build/lib/tools/app-commands.d.ts +2 -2
- package/build/lib/tools/app-commands.d.ts.map +1 -1
- package/build/lib/tools/app-commands.js +36 -36
- package/build/lib/tools/app-commands.js.map +1 -1
- package/build/lib/tools/device-settings.d.ts +2 -2
- package/build/lib/tools/device-settings.d.ts.map +1 -1
- package/build/lib/tools/device-settings.js +15 -15
- package/build/lib/tools/device-settings.js.map +1 -1
- package/build/lib/tools/emulator-commands.d.ts +2 -2
- package/build/lib/tools/emulator-commands.d.ts.map +1 -1
- package/build/lib/tools/emulator-commands.js +7 -7
- package/build/lib/tools/emulator-commands.js.map +1 -1
- package/build/lib/tools/fs-commands.d.ts +1 -1
- package/build/lib/tools/fs-commands.d.ts.map +1 -1
- package/build/lib/tools/general-commands.d.ts +2 -2
- package/build/lib/tools/general-commands.d.ts.map +1 -1
- package/build/lib/tools/general-commands.js +7 -7
- package/build/lib/tools/general-commands.js.map +1 -1
- package/build/lib/tools/keyboard-commands.d.ts +2 -2
- package/build/lib/tools/keyboard-commands.d.ts.map +1 -1
- package/build/lib/tools/keyboard-commands.js +3 -3
- package/build/lib/tools/keyboard-commands.js.map +1 -1
- package/build/lib/tools/lockmgmt.d.ts +1 -1
- package/build/lib/tools/lockmgmt.d.ts.map +1 -1
- package/build/lib/tools/lockmgmt.js +8 -8
- package/build/lib/tools/lockmgmt.js.map +1 -1
- package/build/lib/tools/logcat-commands.d.ts +2 -2
- package/build/lib/tools/logcat-commands.d.ts.map +1 -1
- package/build/lib/tools/network-commands.d.ts +2 -2
- package/build/lib/tools/network-commands.d.ts.map +1 -1
- package/build/lib/tools/network-commands.js +10 -10
- package/build/lib/tools/network-commands.js.map +1 -1
- package/build/lib/tools/process-commands.d.ts +1 -1
- package/build/lib/tools/process-commands.d.ts.map +1 -1
- package/build/lib/tools/process-commands.js +10 -10
- package/build/lib/tools/process-commands.js.map +1 -1
- package/build/lib/tools/system-calls.d.ts +2 -2
- package/build/lib/tools/system-calls.d.ts.map +1 -1
- package/build/lib/tools/system-calls.js +72 -72
- package/build/lib/tools/system-calls.js.map +1 -1
- package/lib/helpers.ts +3 -3
- package/lib/index.ts +8 -0
- package/lib/tools/aab-utils.ts +4 -4
- package/lib/tools/android-manifest.ts +4 -4
- package/lib/tools/apk-signing.ts +4 -4
- package/lib/tools/apk-utils.ts +4 -4
- package/lib/tools/apks-utils.ts +4 -4
- package/lib/tools/app-commands.ts +3 -3
- package/lib/tools/device-settings.ts +3 -3
- package/lib/tools/emulator-commands.ts +3 -3
- package/lib/tools/fs-commands.ts +1 -1
- package/lib/tools/general-commands.ts +3 -3
- package/lib/tools/keyboard-commands.ts +3 -3
- package/lib/tools/lockmgmt.ts +2 -2
- package/lib/tools/logcat-commands.ts +2 -2
- package/lib/tools/network-commands.ts +3 -3
- package/lib/tools/process-commands.ts +2 -2
- package/lib/tools/system-calls.ts +4 -4
- package/package.json +4 -6
- package/build/index.d.ts +0 -8
- package/build/index.d.ts.map +0 -1
- package/build/index.js.map +0 -1
- package/index.ts +0 -8
|
@@ -16,10 +16,10 @@ const lodash_1 = __importDefault(require("lodash"));
|
|
|
16
16
|
const node_fs_1 = __importDefault(require("node:fs"));
|
|
17
17
|
const teen_process_1 = require("teen_process");
|
|
18
18
|
const node_path_1 = __importDefault(require("node:path"));
|
|
19
|
-
const
|
|
19
|
+
const logger_1 = require("../logger");
|
|
20
20
|
const support_1 = require("@appium/support");
|
|
21
21
|
const lru_cache_1 = require("lru-cache");
|
|
22
|
-
const
|
|
22
|
+
const helpers_1 = require("../helpers");
|
|
23
23
|
const DEFAULT_PRIVATE_KEY = node_path_1.default.join('keys', 'testkey.pk8');
|
|
24
24
|
const DEFAULT_CERTIFICATE = node_path_1.default.join('keys', 'testkey.x509.pem');
|
|
25
25
|
const BUNDLETOOL_TUTORIAL = 'https://developer.android.com/studio/command-line/bundletool';
|
|
@@ -45,8 +45,8 @@ const SIGNED_APPS_CACHE = new lru_cache_1.LRUCache({
|
|
|
45
45
|
*/
|
|
46
46
|
async function executeApksigner(args) {
|
|
47
47
|
const apkSignerJar = await getApksignerForOs.bind(this)();
|
|
48
|
-
const fullCmd = [await (0,
|
|
49
|
-
|
|
48
|
+
const fullCmd = [await (0, helpers_1.getJavaForOs)(), '-Xmx1024M', '-Xss1m', '-jar', apkSignerJar, ...args];
|
|
49
|
+
logger_1.log.debug(`Starting apksigner: ${support_1.util.quote(fullCmd)}`);
|
|
50
50
|
// It is necessary to specify CWD explicitly; see https://github.com/appium/appium/issues/14724#issuecomment-737446715
|
|
51
51
|
const { stdout, stderr } = await (0, teen_process_1.exec)(fullCmd[0], fullCmd.slice(1), {
|
|
52
52
|
cwd: node_path_1.default.dirname(apkSignerJar),
|
|
@@ -64,10 +64,10 @@ async function executeApksigner(args) {
|
|
|
64
64
|
.split('\n')
|
|
65
65
|
.filter((line) => !line.includes('WARNING:'))
|
|
66
66
|
.join('\n');
|
|
67
|
-
|
|
67
|
+
logger_1.log.debug(`apksigner ${name}: ${filteredStream}`);
|
|
68
68
|
}
|
|
69
69
|
else {
|
|
70
|
-
|
|
70
|
+
logger_1.log.debug(`apksigner ${name}: ${stream}`);
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
return stdout;
|
|
@@ -79,16 +79,16 @@ async function executeApksigner(args) {
|
|
|
79
79
|
* @throws If signing fails.
|
|
80
80
|
*/
|
|
81
81
|
async function signWithDefaultCert(apk) {
|
|
82
|
-
|
|
82
|
+
logger_1.log.debug(`Signing '${apk}' with default cert`);
|
|
83
83
|
if (!(await support_1.fs.exists(apk))) {
|
|
84
84
|
throw new Error(`${apk} file doesn't exist.`);
|
|
85
85
|
}
|
|
86
86
|
const args = [
|
|
87
87
|
'sign',
|
|
88
88
|
'--key',
|
|
89
|
-
await (0,
|
|
89
|
+
await (0, helpers_1.getResourcePath)(DEFAULT_PRIVATE_KEY),
|
|
90
90
|
'--cert',
|
|
91
|
-
await (0,
|
|
91
|
+
await (0, helpers_1.getResourcePath)(DEFAULT_CERTIFICATE),
|
|
92
92
|
apk,
|
|
93
93
|
];
|
|
94
94
|
try {
|
|
@@ -107,7 +107,7 @@ async function signWithDefaultCert(apk) {
|
|
|
107
107
|
* @throws If signing fails.
|
|
108
108
|
*/
|
|
109
109
|
async function signWithCustomCert(apk) {
|
|
110
|
-
|
|
110
|
+
logger_1.log.debug(`Signing '${apk}' with custom cert`);
|
|
111
111
|
if (!(await support_1.fs.exists(this.keystorePath))) {
|
|
112
112
|
throw new Error(`Keystore: ${this.keystorePath} doesn't exist.`);
|
|
113
113
|
}
|
|
@@ -130,16 +130,16 @@ async function signWithCustomCert(apk) {
|
|
|
130
130
|
}
|
|
131
131
|
catch (err) {
|
|
132
132
|
const error = err;
|
|
133
|
-
|
|
133
|
+
logger_1.log.warn(`Cannot use apksigner tool for signing. Defaulting to jarsigner. ` +
|
|
134
134
|
`Original error: ${error.stderr || error.stdout || error.message}`);
|
|
135
135
|
try {
|
|
136
136
|
if (await unsignApk(apk)) {
|
|
137
|
-
|
|
137
|
+
logger_1.log.debug(`'${apk}' has been successfully unsigned`);
|
|
138
138
|
}
|
|
139
139
|
else {
|
|
140
|
-
|
|
140
|
+
logger_1.log.debug(`'${apk}' does not need to be unsigned`);
|
|
141
141
|
}
|
|
142
|
-
const jarsigner = node_path_1.default.resolve(await (0,
|
|
142
|
+
const jarsigner = node_path_1.default.resolve(await (0, helpers_1.getJavaHome)(), 'bin', `jarsigner${support_1.system.isWindows() ? '.exe' : ''}`);
|
|
143
143
|
const fullCmd = [
|
|
144
144
|
jarsigner,
|
|
145
145
|
'-sigalg',
|
|
@@ -155,7 +155,7 @@ async function signWithCustomCert(apk) {
|
|
|
155
155
|
apk,
|
|
156
156
|
this.keyAlias,
|
|
157
157
|
];
|
|
158
|
-
|
|
158
|
+
logger_1.log.debug(`Starting jarsigner: ${support_1.util.quote(fullCmd)}`);
|
|
159
159
|
await (0, teen_process_1.exec)(fullCmd[0], fullCmd.slice(1));
|
|
160
160
|
}
|
|
161
161
|
catch (e) {
|
|
@@ -174,7 +174,7 @@ async function signWithCustomCert(apk) {
|
|
|
174
174
|
* @throws If signing fails.
|
|
175
175
|
*/
|
|
176
176
|
async function sign(appPath) {
|
|
177
|
-
if (appPath.endsWith(
|
|
177
|
+
if (appPath.endsWith(helpers_1.APKS_EXTENSION)) {
|
|
178
178
|
let message = 'Signing of .apks-files is not supported. ';
|
|
179
179
|
if (this.useKeystore) {
|
|
180
180
|
message +=
|
|
@@ -186,7 +186,7 @@ async function sign(appPath) {
|
|
|
186
186
|
`Consider manual application bundle signing with the key at '${DEFAULT_PRIVATE_KEY}' ` +
|
|
187
187
|
`and the certificate at '${DEFAULT_CERTIFICATE}'. Read ${BUNDLETOOL_TUTORIAL} for more details.`;
|
|
188
188
|
}
|
|
189
|
-
|
|
189
|
+
logger_1.log.warn(message);
|
|
190
190
|
return;
|
|
191
191
|
}
|
|
192
192
|
// it is necessary to apply zipalign only before signing
|
|
@@ -211,11 +211,11 @@ async function zipAlignApk(apk) {
|
|
|
211
211
|
await this.initZipAlign();
|
|
212
212
|
try {
|
|
213
213
|
await (0, teen_process_1.exec)(this.binaries.zipalign, ['-c', '4', apk]);
|
|
214
|
-
|
|
214
|
+
logger_1.log.debug(`${apk}' is already zip-aligned. Doing nothing`);
|
|
215
215
|
return false;
|
|
216
216
|
}
|
|
217
217
|
catch {
|
|
218
|
-
|
|
218
|
+
logger_1.log.debug(`'${apk}' is not zip-aligned. Aligning`);
|
|
219
219
|
}
|
|
220
220
|
try {
|
|
221
221
|
await support_1.fs.access(apk, node_fs_1.default.constants.W_OK);
|
|
@@ -249,19 +249,19 @@ async function zipAlignApk(apk) {
|
|
|
249
249
|
* @returns True if given application is already signed.
|
|
250
250
|
*/
|
|
251
251
|
async function checkApkCert(appPath, pkg, opts = {}) {
|
|
252
|
-
|
|
252
|
+
logger_1.log.debug(`Checking app cert for ${appPath}`);
|
|
253
253
|
if (!(await support_1.fs.exists(appPath))) {
|
|
254
|
-
|
|
254
|
+
logger_1.log.debug(`'${appPath}' does not exist`);
|
|
255
255
|
return false;
|
|
256
256
|
}
|
|
257
257
|
let actualAppPath = appPath;
|
|
258
|
-
if (node_path_1.default.extname(appPath) ===
|
|
258
|
+
if (node_path_1.default.extname(appPath) === helpers_1.APKS_EXTENSION) {
|
|
259
259
|
actualAppPath = await this.extractBaseApk(appPath);
|
|
260
260
|
}
|
|
261
261
|
const hashMatches = (apksignerOutput, expectedHashes) => {
|
|
262
262
|
for (const [name, value] of lodash_1.default.toPairs(expectedHashes)) {
|
|
263
263
|
if (value && new RegExp(`digest:\\s+${value}\\b`, 'i').test(apksignerOutput)) {
|
|
264
|
-
|
|
264
|
+
logger_1.log.debug(`${name} hash did match for '${node_path_1.default.basename(actualAppPath)}'`);
|
|
265
265
|
return true;
|
|
266
266
|
}
|
|
267
267
|
}
|
|
@@ -270,7 +270,7 @@ async function checkApkCert(appPath, pkg, opts = {}) {
|
|
|
270
270
|
const { requireDefaultCert = true } = opts;
|
|
271
271
|
const appHash = await support_1.fs.hash(actualAppPath);
|
|
272
272
|
if (SIGNED_APPS_CACHE.has(appHash)) {
|
|
273
|
-
|
|
273
|
+
logger_1.log.debug(`Using the previously cached signature entry for '${node_path_1.default.basename(actualAppPath)}'`);
|
|
274
274
|
const cached = SIGNED_APPS_CACHE.get(appHash);
|
|
275
275
|
if (cached) {
|
|
276
276
|
const { keystorePath, output, expected } = cached;
|
|
@@ -285,11 +285,11 @@ async function checkApkCert(appPath, pkg, opts = {}) {
|
|
|
285
285
|
const output = await this.executeApksigner(['verify', '--print-certs', actualAppPath]);
|
|
286
286
|
const hasMatch = hashMatches(output, expected);
|
|
287
287
|
if (hasMatch) {
|
|
288
|
-
|
|
288
|
+
logger_1.log.info(`'${actualAppPath}' is signed with the ` +
|
|
289
289
|
`${this.useKeystore ? 'keystore' : 'default'} certificate`);
|
|
290
290
|
}
|
|
291
291
|
else {
|
|
292
|
-
|
|
292
|
+
logger_1.log.info(`'${actualAppPath}' is signed with a ` +
|
|
293
293
|
`non-${this.useKeystore ? 'keystore' : 'default'} certificate`);
|
|
294
294
|
}
|
|
295
295
|
const isSigned = (!this.useKeystore && !requireDefaultCert) || hasMatch;
|
|
@@ -306,7 +306,7 @@ async function checkApkCert(appPath, pkg, opts = {}) {
|
|
|
306
306
|
const error = err;
|
|
307
307
|
// check if there is no signature
|
|
308
308
|
if (lodash_1.default.includes(error.stderr, APKSIGNER_VERIFY_FAIL)) {
|
|
309
|
-
|
|
309
|
+
logger_1.log.info(`'${actualAppPath}' is not signed`);
|
|
310
310
|
return false;
|
|
311
311
|
}
|
|
312
312
|
const errMsg = error.stderr || error.stdout || error.message;
|
|
@@ -319,8 +319,8 @@ async function checkApkCert(appPath, pkg, opts = {}) {
|
|
|
319
319
|
// If these are not signed, e.g. in case of Espresso, then the next step(s)
|
|
320
320
|
// would anyway fail.
|
|
321
321
|
// See https://github.com/appium/appium/issues/14724 for more details.
|
|
322
|
-
|
|
323
|
-
|
|
322
|
+
logger_1.log.warn(errMsg);
|
|
323
|
+
logger_1.log.warn(`Assuming '${actualAppPath}' is already signed and continuing anyway`);
|
|
324
324
|
return true;
|
|
325
325
|
}
|
|
326
326
|
throw new Error(`Cannot verify the signature of '${actualAppPath}'. ` + `Original error: ${errMsg}`);
|
|
@@ -333,8 +333,8 @@ async function checkApkCert(appPath, pkg, opts = {}) {
|
|
|
333
333
|
* @throws If getting keystore hash fails.
|
|
334
334
|
*/
|
|
335
335
|
async function getKeystoreHash() {
|
|
336
|
-
|
|
337
|
-
const keytool = node_path_1.default.resolve(await (0,
|
|
336
|
+
logger_1.log.debug(`Getting hash of the '${this.keystorePath}' keystore`);
|
|
337
|
+
const keytool = node_path_1.default.resolve(await (0, helpers_1.getJavaHome)(), 'bin', `keytool${support_1.system.isWindows() ? '.exe' : ''}`);
|
|
338
338
|
if (!(await support_1.fs.exists(keytool))) {
|
|
339
339
|
throw new Error(`The keytool utility cannot be found at '${keytool}'`);
|
|
340
340
|
}
|
|
@@ -348,7 +348,7 @@ async function getKeystoreHash() {
|
|
|
348
348
|
'-storepass',
|
|
349
349
|
this.keystorePassword,
|
|
350
350
|
];
|
|
351
|
-
|
|
351
|
+
logger_1.log.info(`Running '${keytool}' with arguments: ${support_1.util.quote(args)}`);
|
|
352
352
|
try {
|
|
353
353
|
const { stdout } = await (0, teen_process_1.exec)(keytool, args);
|
|
354
354
|
const result = {};
|
|
@@ -361,10 +361,10 @@ async function getKeystoreHash() {
|
|
|
361
361
|
result[hashName] = match[1].replace(/:/g, '').toLowerCase();
|
|
362
362
|
}
|
|
363
363
|
if (lodash_1.default.isEmpty(result)) {
|
|
364
|
-
|
|
364
|
+
logger_1.log.debug(stdout);
|
|
365
365
|
throw new Error('Cannot parse the hash value from the keytool output');
|
|
366
366
|
}
|
|
367
|
-
|
|
367
|
+
logger_1.log.debug(`Keystore hash: ${JSON.stringify(result)}`);
|
|
368
368
|
return result;
|
|
369
369
|
}
|
|
370
370
|
catch (e) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apk-signing.js","sourceRoot":"","sources":["../../../lib/tools/apk-signing.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"apk-signing.js","sourceRoot":"","sources":["../../../lib/tools/apk-signing.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { ADB } from '../adb
|
|
2
|
-
import type { UninstallOptions, ShellExecOptions, CachingOptions, InstallOptions, InstallOrUpgradeOptions, InstallOrUpgradeResult, ApkStrings, AppInfo, InstallState, StringRecord } from './types
|
|
1
|
+
import type { ADB } from '../adb';
|
|
2
|
+
import type { UninstallOptions, ShellExecOptions, CachingOptions, InstallOptions, InstallOrUpgradeOptions, InstallOrUpgradeResult, ApkStrings, AppInfo, InstallState, StringRecord } from './types';
|
|
3
3
|
export declare const REMOTE_CACHE_ROOT = "/data/local/tmp/appium_cache";
|
|
4
4
|
/**
|
|
5
5
|
* Uninstall the given package from the device under test.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apk-utils.d.ts","sourceRoot":"","sources":["../../../lib/tools/apk-utils.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"apk-utils.d.ts","sourceRoot":"","sources":["../../../lib/tools/apk-utils.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,QAAQ,CAAC;AAChC,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,uBAAuB,EACvB,sBAAsB,EACtB,UAAU,EACV,OAAO,EACP,YAAY,EACZ,YAAY,EACb,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,iBAAiB,iCAAiC,CAAC;AAEhE;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,GAAG,EACT,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,OAAO,CAAC,CA4BlB;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,GAAG,EACT,eAAe,EAAE,MAAM,EACvB,IAAI,GAAE,gBAAqB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;;;;;;GAOG;AACH,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,GAAG,EACT,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,MAAM,CAAC,CA8FjB;AAED;;;;;;GAMG;AACH,wBAAsB,OAAO,CAC3B,IAAI,EAAE,GAAG,EACT,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAoDf;AAED;;;;;;;GAOG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,GAAG,EACT,OAAO,EAAE,MAAM,EACf,GAAG,GAAE,MAAM,GAAG,IAAW,GACxB,OAAO,CAAC,YAAY,CAAC,CAgFvB;AAED;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,GAAG,EACT,OAAO,EAAE,MAAM,EACf,GAAG,GAAE,MAAM,GAAG,IAAW,EACzB,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,sBAAsB,CAAC,CAwEjC;AAED;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,GAAG,EACT,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,MAAM,GAAG,IAAW,EAC9B,OAAO,GAAE,MAAM,GAAG,IAAW,GAC5B,OAAO,CAAC,UAAU,CAAC,CAyFrB;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC,CAqBlF;AAyCD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,YAAY,CAoGvF;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,YAAY,CAoEtF"}
|
|
@@ -47,9 +47,9 @@ exports.extractStringsFromApk = extractStringsFromApk;
|
|
|
47
47
|
exports.getApkInfo = getApkInfo;
|
|
48
48
|
exports.parseAapt2Strings = parseAapt2Strings;
|
|
49
49
|
exports.parseAaptStrings = parseAaptStrings;
|
|
50
|
-
const
|
|
50
|
+
const helpers_1 = require("../helpers");
|
|
51
51
|
const teen_process_1 = require("teen_process");
|
|
52
|
-
const
|
|
52
|
+
const logger_1 = require("../logger");
|
|
53
53
|
const node_path_1 = __importDefault(require("node:path"));
|
|
54
54
|
const lodash_1 = __importDefault(require("lodash"));
|
|
55
55
|
const support_1 = require("@appium/support");
|
|
@@ -66,9 +66,9 @@ exports.REMOTE_CACHE_ROOT = '/data/local/tmp/appium_cache';
|
|
|
66
66
|
* successfully uninstalled.
|
|
67
67
|
*/
|
|
68
68
|
async function uninstallApk(pkg, options = {}) {
|
|
69
|
-
|
|
69
|
+
logger_1.log.debug(`Uninstalling ${pkg}`);
|
|
70
70
|
if (!options.skipInstallCheck && !(await this.isAppInstalled(pkg))) {
|
|
71
|
-
|
|
71
|
+
logger_1.log.info(`${pkg} was not uninstalled, because it was not present on the device`);
|
|
72
72
|
return false;
|
|
73
73
|
}
|
|
74
74
|
const cmd = ['uninstall'];
|
|
@@ -85,12 +85,12 @@ async function uninstallApk(pkg, options = {}) {
|
|
|
85
85
|
const err = e;
|
|
86
86
|
throw new Error(`Unable to uninstall APK. Original error: ${err.message}`);
|
|
87
87
|
}
|
|
88
|
-
|
|
88
|
+
logger_1.log.debug(`'adb ${cmd.join(' ')}' command output: ${stdout}`);
|
|
89
89
|
if (stdout.includes('Success')) {
|
|
90
|
-
|
|
90
|
+
logger_1.log.info(`${pkg} was successfully uninstalled`);
|
|
91
91
|
return true;
|
|
92
92
|
}
|
|
93
|
-
|
|
93
|
+
logger_1.log.info(`${pkg} was not uninstalled`);
|
|
94
94
|
return false;
|
|
95
95
|
}
|
|
96
96
|
/**
|
|
@@ -129,7 +129,7 @@ async function cacheApk(apkPath, options = {}) {
|
|
|
129
129
|
if (!lodash_1.default.isString(lsOutput) ||
|
|
130
130
|
(lsOutput.includes(errorMarker) && !lsOutput.includes(exports.REMOTE_CACHE_ROOT))) {
|
|
131
131
|
if (!lodash_1.default.isBoolean(this._areExtendedLsOptionsSupported)) {
|
|
132
|
-
|
|
132
|
+
logger_1.log.debug('The current Android API does not support extended ls options. ' +
|
|
133
133
|
'Defaulting to no-options call');
|
|
134
134
|
}
|
|
135
135
|
lsOutput = await this.shell([`ls ${exports.REMOTE_CACHE_ROOT} 2>&1 || echo ${errorMarker}`]);
|
|
@@ -148,26 +148,26 @@ async function cacheApk(apkPath, options = {}) {
|
|
|
148
148
|
}
|
|
149
149
|
catch (e) {
|
|
150
150
|
const err = e;
|
|
151
|
-
|
|
151
|
+
logger_1.log.debug(`Got an error '${err.message.trim()}' while getting the list of files in the cache. ` +
|
|
152
152
|
`Assuming the cache does not exist yet`);
|
|
153
153
|
await this.shell(['mkdir', '-p', exports.REMOTE_CACHE_ROOT]);
|
|
154
154
|
}
|
|
155
|
-
|
|
155
|
+
logger_1.log.debug(`The count of applications in the cache: ${remoteCachedFiles.length}`);
|
|
156
156
|
const toHash = (remotePath) => node_path_1.default.posix.parse(remotePath).name;
|
|
157
157
|
// Push the apk to the remote cache if needed
|
|
158
158
|
if (remoteCachedFiles.some((x) => toHash(x) === appHash)) {
|
|
159
|
-
|
|
159
|
+
logger_1.log.info(`The application at '${apkPath}' is already cached to '${remotePath}'`);
|
|
160
160
|
// Update the application timestamp asynchronously in order to bump its position
|
|
161
161
|
// in the sorted ls output
|
|
162
162
|
// eslint-disable-next-line promise/prefer-await-to-then
|
|
163
163
|
this.shell(['touch', '-am', remotePath]).catch(() => { });
|
|
164
164
|
}
|
|
165
165
|
else {
|
|
166
|
-
|
|
166
|
+
logger_1.log.info(`Caching the application at '${apkPath}' to '${remotePath}'`);
|
|
167
167
|
const timer = new support_1.timing.Timer().start();
|
|
168
168
|
await this.push(apkPath, remotePath, { timeout: options.timeout });
|
|
169
169
|
const { size } = await support_1.fs.stat(apkPath);
|
|
170
|
-
|
|
170
|
+
logger_1.log.info(`The upload of '${node_path_1.default.basename(apkPath)}' (${support_1.util.toReadableSizeString(size)}) ` +
|
|
171
171
|
`took ${timer.getDuration().asMilliSeconds.toFixed(0)}ms`);
|
|
172
172
|
}
|
|
173
173
|
if (!this.remoteAppsCache) {
|
|
@@ -187,11 +187,11 @@ async function cacheApk(apkPath, options = {}) {
|
|
|
187
187
|
if (!lodash_1.default.isEmpty(entriesToCleanup)) {
|
|
188
188
|
try {
|
|
189
189
|
await this.shell(['rm', '-f', ...entriesToCleanup]);
|
|
190
|
-
|
|
190
|
+
logger_1.log.debug(`Deleted ${entriesToCleanup.length} expired application cache entries`);
|
|
191
191
|
}
|
|
192
192
|
catch (e) {
|
|
193
193
|
const err = e;
|
|
194
|
-
|
|
194
|
+
logger_1.log.warn(`Cannot delete ${entriesToCleanup.length} expired application cache entries. ` +
|
|
195
195
|
`Original error: ${err.message}`);
|
|
196
196
|
}
|
|
197
197
|
}
|
|
@@ -205,16 +205,16 @@ async function cacheApk(apkPath, options = {}) {
|
|
|
205
205
|
* @throws If an unexpected error happens during install.
|
|
206
206
|
*/
|
|
207
207
|
async function install(appPath, options = {}) {
|
|
208
|
-
if (appPath.endsWith(
|
|
208
|
+
if (appPath.endsWith(helpers_1.APKS_EXTENSION)) {
|
|
209
209
|
return await this.installApks(appPath, options);
|
|
210
210
|
}
|
|
211
211
|
options = lodash_1.default.cloneDeep(options);
|
|
212
212
|
lodash_1.default.defaults(options, {
|
|
213
213
|
replace: true,
|
|
214
|
-
timeout: this.adbExecTimeout ===
|
|
214
|
+
timeout: this.adbExecTimeout === helpers_1.DEFAULT_ADB_EXEC_TIMEOUT ? helpers_1.APK_INSTALL_TIMEOUT : this.adbExecTimeout,
|
|
215
215
|
timeoutCapName: 'androidInstallTimeout',
|
|
216
216
|
});
|
|
217
|
-
const installArgs = (0,
|
|
217
|
+
const installArgs = (0, helpers_1.buildInstallArgs)(await this.getApiLevel(), options);
|
|
218
218
|
if (options.noIncremental && (await this.isIncrementalInstallSupported())) {
|
|
219
219
|
// Adb throws an error if it does not know about an arg,
|
|
220
220
|
// which is the case here for older adb versions.
|
|
@@ -228,15 +228,15 @@ async function install(appPath, options = {}) {
|
|
|
228
228
|
try {
|
|
229
229
|
const timer = new support_1.timing.Timer().start();
|
|
230
230
|
const output = await this.adbExec(installCmd, installOpts);
|
|
231
|
-
|
|
231
|
+
logger_1.log.info(`The installation of '${node_path_1.default.basename(appPath)}' took ${timer.getDuration().asMilliSeconds.toFixed(0)}ms`);
|
|
232
232
|
const truncatedOutput = !lodash_1.default.isString(output) || output.length <= 300
|
|
233
233
|
? output
|
|
234
234
|
: `${output.substring(0, 150)}...${output.substring(output.length - 150)}`;
|
|
235
|
-
|
|
235
|
+
logger_1.log.debug(`Install command stdout: ${truncatedOutput}`);
|
|
236
236
|
if (/\[INSTALL[A-Z_]+FAILED[A-Z_]+\]/.test(output)) {
|
|
237
237
|
if (this.isTestPackageOnlyError(output)) {
|
|
238
238
|
const msg = `Set 'allowTestPackages' capability to true in order to allow test packages installation.`;
|
|
239
|
-
|
|
239
|
+
logger_1.log.warn(msg);
|
|
240
240
|
throw new Error(`${output}\n${msg}`);
|
|
241
241
|
}
|
|
242
242
|
throw new Error(output);
|
|
@@ -249,7 +249,7 @@ async function install(appPath, options = {}) {
|
|
|
249
249
|
if (!error.message.includes('INSTALL_FAILED_ALREADY_EXISTS')) {
|
|
250
250
|
throw error;
|
|
251
251
|
}
|
|
252
|
-
|
|
252
|
+
logger_1.log.debug(`Application '${appPath}' already installed. Continuing.`);
|
|
253
253
|
}
|
|
254
254
|
}
|
|
255
255
|
/**
|
|
@@ -267,12 +267,12 @@ async function getApplicationInstallState(appPath, pkg = null) {
|
|
|
267
267
|
pkg = apkInfo?.name;
|
|
268
268
|
}
|
|
269
269
|
if (!pkg) {
|
|
270
|
-
|
|
270
|
+
logger_1.log.warn(`Cannot read the package name of '${appPath}'`);
|
|
271
271
|
return this.APP_INSTALL_STATE.UNKNOWN;
|
|
272
272
|
}
|
|
273
273
|
const { versionCode: pkgVersionCode, versionName: pkgVersionNameStr, isInstalled, } = await this.getPackageInfo(pkg);
|
|
274
274
|
if (!isInstalled) {
|
|
275
|
-
|
|
275
|
+
logger_1.log.debug(`App '${appPath}' is not installed`);
|
|
276
276
|
return this.APP_INSTALL_STATE.NOT_INSTALLED;
|
|
277
277
|
}
|
|
278
278
|
const pkgVersionName = semver.valid(semver.coerce(pkgVersionNameStr));
|
|
@@ -283,15 +283,15 @@ async function getApplicationInstallState(appPath, pkg = null) {
|
|
|
283
283
|
const { versionCode: apkVersionCode, versionName: apkVersionNameStr } = apkInfo || {};
|
|
284
284
|
const apkVersionName = semver.valid(semver.coerce(apkVersionNameStr));
|
|
285
285
|
if (!lodash_1.default.isInteger(apkVersionCode) || !lodash_1.default.isInteger(pkgVersionCode)) {
|
|
286
|
-
|
|
286
|
+
logger_1.log.warn(`Cannot read version codes of '${appPath}' and/or '${pkg}'`);
|
|
287
287
|
if (!lodash_1.default.isString(apkVersionName) || !lodash_1.default.isString(pkgVersionName)) {
|
|
288
|
-
|
|
288
|
+
logger_1.log.warn(`Cannot read version names of '${appPath}' and/or '${pkg}'`);
|
|
289
289
|
return this.APP_INSTALL_STATE.UNKNOWN;
|
|
290
290
|
}
|
|
291
291
|
}
|
|
292
292
|
if (lodash_1.default.isInteger(apkVersionCode) && lodash_1.default.isInteger(pkgVersionCode)) {
|
|
293
293
|
if (pkgVersionCode > apkVersionCode) {
|
|
294
|
-
|
|
294
|
+
logger_1.log.debug(`The version code of the installed '${pkg}' is greater than the application version code (${pkgVersionCode} > ${apkVersionCode})`);
|
|
295
295
|
return this.APP_INSTALL_STATE.NEWER_VERSION_INSTALLED;
|
|
296
296
|
}
|
|
297
297
|
// Version codes might not be maintained. Check version names.
|
|
@@ -299,13 +299,13 @@ async function getApplicationInstallState(appPath, pkg = null) {
|
|
|
299
299
|
if (lodash_1.default.isString(apkVersionName) &&
|
|
300
300
|
lodash_1.default.isString(pkgVersionName) &&
|
|
301
301
|
semver.satisfies(pkgVersionName, `>=${apkVersionName}`)) {
|
|
302
|
-
|
|
302
|
+
logger_1.log.debug(`The version name of the installed '${pkg}' is greater or equal to the application version name ('${pkgVersionName}' >= '${apkVersionName}')`);
|
|
303
303
|
return semver.satisfies(pkgVersionName, `>${apkVersionName}`)
|
|
304
304
|
? this.APP_INSTALL_STATE.NEWER_VERSION_INSTALLED
|
|
305
305
|
: this.APP_INSTALL_STATE.SAME_VERSION_INSTALLED;
|
|
306
306
|
}
|
|
307
307
|
if (!lodash_1.default.isString(apkVersionName) || !lodash_1.default.isString(pkgVersionName)) {
|
|
308
|
-
|
|
308
|
+
logger_1.log.debug(`The version name of the installed '${pkg}' is equal to application version name (${pkgVersionCode} === ${apkVersionCode})`);
|
|
309
309
|
return this.APP_INSTALL_STATE.SAME_VERSION_INSTALLED;
|
|
310
310
|
}
|
|
311
311
|
}
|
|
@@ -313,12 +313,12 @@ async function getApplicationInstallState(appPath, pkg = null) {
|
|
|
313
313
|
else if (lodash_1.default.isString(apkVersionName) &&
|
|
314
314
|
lodash_1.default.isString(pkgVersionName) &&
|
|
315
315
|
semver.satisfies(pkgVersionName, `>=${apkVersionName}`)) {
|
|
316
|
-
|
|
316
|
+
logger_1.log.debug(`The version name of the installed '${pkg}' is greater or equal to the application version name ('${pkgVersionName}' >= '${apkVersionName}')`);
|
|
317
317
|
return semver.satisfies(pkgVersionName, `>${apkVersionName}`)
|
|
318
318
|
? this.APP_INSTALL_STATE.NEWER_VERSION_INSTALLED
|
|
319
319
|
: this.APP_INSTALL_STATE.SAME_VERSION_INSTALLED;
|
|
320
320
|
}
|
|
321
|
-
|
|
321
|
+
logger_1.log.debug(`The installed '${pkg}' package is older than '${appPath}' (${pkgVersionCode} < ${apkVersionCode} or '${pkgVersionName}' < '${apkVersionName}')'`);
|
|
322
322
|
return this.APP_INSTALL_STATE.OLDER_VERSION_INSTALLED;
|
|
323
323
|
}
|
|
324
324
|
/**
|
|
@@ -338,7 +338,7 @@ async function installOrUpgrade(appPath, pkg = null, options = {}) {
|
|
|
338
338
|
pkg = apkInfo.name;
|
|
339
339
|
}
|
|
340
340
|
else {
|
|
341
|
-
|
|
341
|
+
logger_1.log.warn(`Cannot determine the package name of '${appPath}'. ` +
|
|
342
342
|
`Continuing with the install anyway`);
|
|
343
343
|
}
|
|
344
344
|
}
|
|
@@ -353,7 +353,7 @@ async function installOrUpgrade(appPath, pkg = null, options = {}) {
|
|
|
353
353
|
};
|
|
354
354
|
switch (appState) {
|
|
355
355
|
case this.APP_INSTALL_STATE.NOT_INSTALLED:
|
|
356
|
-
|
|
356
|
+
logger_1.log.debug(`Installing '${appPath}'`);
|
|
357
357
|
await this.install(appPath, { ...options, replace: false });
|
|
358
358
|
return {
|
|
359
359
|
appState,
|
|
@@ -361,11 +361,11 @@ async function installOrUpgrade(appPath, pkg = null, options = {}) {
|
|
|
361
361
|
};
|
|
362
362
|
case this.APP_INSTALL_STATE.NEWER_VERSION_INSTALLED:
|
|
363
363
|
if (enforceCurrentBuild) {
|
|
364
|
-
|
|
364
|
+
logger_1.log.info(`Downgrading '${pkg}' as requested`);
|
|
365
365
|
await uninstallPackage();
|
|
366
366
|
break;
|
|
367
367
|
}
|
|
368
|
-
|
|
368
|
+
logger_1.log.debug(`There is no need to downgrade '${pkg}'`);
|
|
369
369
|
return {
|
|
370
370
|
appState,
|
|
371
371
|
wasUninstalled,
|
|
@@ -374,16 +374,16 @@ async function installOrUpgrade(appPath, pkg = null, options = {}) {
|
|
|
374
374
|
if (enforceCurrentBuild) {
|
|
375
375
|
break;
|
|
376
376
|
}
|
|
377
|
-
|
|
377
|
+
logger_1.log.debug(`There is no need to install/upgrade '${appPath}'`);
|
|
378
378
|
return {
|
|
379
379
|
appState,
|
|
380
380
|
wasUninstalled,
|
|
381
381
|
};
|
|
382
382
|
case this.APP_INSTALL_STATE.OLDER_VERSION_INSTALLED:
|
|
383
|
-
|
|
383
|
+
logger_1.log.debug(`Executing upgrade of '${appPath}'`);
|
|
384
384
|
break;
|
|
385
385
|
default:
|
|
386
|
-
|
|
386
|
+
logger_1.log.debug(`The current install state of '${appPath}' is unknown. Installing anyway`);
|
|
387
387
|
break;
|
|
388
388
|
}
|
|
389
389
|
try {
|
|
@@ -391,7 +391,7 @@ async function installOrUpgrade(appPath, pkg = null, options = {}) {
|
|
|
391
391
|
}
|
|
392
392
|
catch (err) {
|
|
393
393
|
const error = err;
|
|
394
|
-
|
|
394
|
+
logger_1.log.warn(`Cannot install/upgrade '${pkg}' because of '${error.message}'. Trying full reinstall`);
|
|
395
395
|
await uninstallPackage();
|
|
396
396
|
await this.install(appPath, { ...options, replace: false });
|
|
397
397
|
}
|
|
@@ -411,9 +411,9 @@ async function installOrUpgrade(appPath, pkg = null, options = {}) {
|
|
|
411
411
|
* will be undefined.
|
|
412
412
|
*/
|
|
413
413
|
async function extractStringsFromApk(appPath, language = null, outRoot = null) {
|
|
414
|
-
|
|
414
|
+
logger_1.log.debug(`Extracting strings from for language: ${language || 'default'}`);
|
|
415
415
|
const originalAppPath = appPath;
|
|
416
|
-
if (appPath.endsWith(
|
|
416
|
+
if (appPath.endsWith(helpers_1.APKS_EXTENSION)) {
|
|
417
417
|
appPath = await this.extractLanguageApk(appPath, language);
|
|
418
418
|
}
|
|
419
419
|
let apkStrings = {};
|
|
@@ -438,7 +438,7 @@ async function extractStringsFromApk(appPath, language = null, outRoot = null) {
|
|
|
438
438
|
}
|
|
439
439
|
catch (e) {
|
|
440
440
|
const err = e;
|
|
441
|
-
|
|
441
|
+
logger_1.log.debug('Cannot extract resources using aapt. Trying aapt2. ' +
|
|
442
442
|
`Original error: ${err.stderr || err.message}`);
|
|
443
443
|
await this.initAapt2();
|
|
444
444
|
configMarker = await formatConfigMarker(async () => {
|
|
@@ -463,11 +463,11 @@ async function extractStringsFromApk(appPath, language = null, outRoot = null) {
|
|
|
463
463
|
}
|
|
464
464
|
}
|
|
465
465
|
if (lodash_1.default.isEmpty(apkStrings)) {
|
|
466
|
-
|
|
466
|
+
logger_1.log.warn(`No strings have been found in '${originalAppPath}' resources ` +
|
|
467
467
|
`for '${configMarker || 'default'}' configuration`);
|
|
468
468
|
}
|
|
469
469
|
else {
|
|
470
|
-
|
|
470
|
+
logger_1.log.info(`Successfully extracted ${lodash_1.default.keys(apkStrings).length} strings from ` +
|
|
471
471
|
`'${originalAppPath}' resources for '${configMarker || 'default'}' configuration`);
|
|
472
472
|
}
|
|
473
473
|
if (!outRoot) {
|
|
@@ -489,11 +489,11 @@ async function getApkInfo(appPath) {
|
|
|
489
489
|
if (!(await support_1.fs.exists(appPath))) {
|
|
490
490
|
throw new Error(`The file at path ${appPath} does not exist or is not accessible`);
|
|
491
491
|
}
|
|
492
|
-
if (appPath.endsWith(
|
|
492
|
+
if (appPath.endsWith(helpers_1.APKS_EXTENSION)) {
|
|
493
493
|
appPath = await this.extractBaseApk(appPath);
|
|
494
494
|
}
|
|
495
495
|
try {
|
|
496
|
-
const { name, versionCode, versionName } = await
|
|
496
|
+
const { name, versionCode, versionName } = await helpers_1.readPackageManifest.bind(this)(appPath);
|
|
497
497
|
return {
|
|
498
498
|
name,
|
|
499
499
|
versionCode,
|
|
@@ -502,7 +502,7 @@ async function getApkInfo(appPath) {
|
|
|
502
502
|
}
|
|
503
503
|
catch (e) {
|
|
504
504
|
const err = e;
|
|
505
|
-
|
|
505
|
+
logger_1.log.warn(`Error '${err.message}' while getting badging info`);
|
|
506
506
|
}
|
|
507
507
|
return {};
|
|
508
508
|
}
|
|
@@ -523,16 +523,16 @@ async function formatConfigMarker(configsGetter, desiredMarker, defaultMarker) {
|
|
|
523
523
|
configMarker = configMarker.replace('-', '-r');
|
|
524
524
|
}
|
|
525
525
|
const configs = await configsGetter();
|
|
526
|
-
|
|
526
|
+
logger_1.log.debug(`Resource configurations: ${JSON.stringify(configs)}`);
|
|
527
527
|
// Assume the 'en' configuration is the default one
|
|
528
528
|
if (configMarker.toLowerCase().startsWith('en') &&
|
|
529
529
|
!configs.some((x) => x.trim() === configMarker)) {
|
|
530
|
-
|
|
530
|
+
logger_1.log.debug(`Resource configuration name '${configMarker}' is unknown. ` +
|
|
531
531
|
`Replacing it with '${defaultMarker}'`);
|
|
532
532
|
configMarker = defaultMarker;
|
|
533
533
|
}
|
|
534
534
|
else {
|
|
535
|
-
|
|
535
|
+
logger_1.log.debug(`Selected configuration: '${configMarker}'`);
|
|
536
536
|
}
|
|
537
537
|
return configMarker;
|
|
538
538
|
}
|