appium-adb 14.0.6 → 14.0.7
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 +6 -0
- package/build/lib/tools/apk-signing.d.ts +34 -40
- package/build/lib/tools/apk-signing.d.ts.map +1 -1
- package/build/lib/tools/apk-signing.js +73 -71
- package/build/lib/tools/apk-signing.js.map +1 -1
- package/build/lib/tools/emulator-commands.d.ts +53 -69
- package/build/lib/tools/emulator-commands.d.ts.map +1 -1
- package/build/lib/tools/emulator-commands.js +48 -66
- package/build/lib/tools/emulator-commands.js.map +1 -1
- package/lib/tools/{apk-signing.js → apk-signing.ts} +96 -89
- package/lib/tools/{emulator-commands.js → emulator-commands.ts} +88 -92
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
## [14.0.7](https://github.com/appium/appium-adb/compare/v14.0.6...v14.0.7) (2025-12-06)
|
|
2
|
+
|
|
3
|
+
### Miscellaneous Chores
|
|
4
|
+
|
|
5
|
+
* Migrate apk-signing and emulator-commands to typescript ([#845](https://github.com/appium/appium-adb/issues/845)) ([ce45f6c](https://github.com/appium/appium-adb/commit/ce45f6c90ed5b2d3e2ac814bbfa84894e8275b24))
|
|
6
|
+
|
|
1
7
|
## [14.0.6](https://github.com/appium/appium-adb/compare/v14.0.5...v14.0.6) (2025-12-05)
|
|
2
8
|
|
|
3
9
|
### Miscellaneous Chores
|
|
@@ -1,84 +1,78 @@
|
|
|
1
|
+
import type { ADB } from '../adb.js';
|
|
2
|
+
import type { CertCheckOptions, KeystoreHash } from './types.js';
|
|
1
3
|
/**
|
|
2
4
|
* Execute apksigner utility with given arguments.
|
|
3
5
|
*
|
|
4
|
-
* @
|
|
5
|
-
* @
|
|
6
|
-
* @
|
|
7
|
-
* @throws {Error} If apksigner binary is not present on the local file system
|
|
6
|
+
* @param args - The list of tool arguments.
|
|
7
|
+
* @returns - Command stdout
|
|
8
|
+
* @throws If apksigner binary is not present on the local file system
|
|
8
9
|
* or the return code is not equal to zero.
|
|
9
10
|
*/
|
|
10
|
-
export function executeApksigner(this:
|
|
11
|
+
export declare function executeApksigner(this: ADB, args: string[]): Promise<string>;
|
|
11
12
|
/**
|
|
12
13
|
* (Re)sign the given apk file on the local file system with the default certificate.
|
|
13
14
|
*
|
|
14
|
-
* @
|
|
15
|
-
* @
|
|
16
|
-
* @throws {Error} If signing fails.
|
|
15
|
+
* @param apk - The full path to the local apk file.
|
|
16
|
+
* @throws If signing fails.
|
|
17
17
|
*/
|
|
18
|
-
export function signWithDefaultCert(this:
|
|
18
|
+
export declare function signWithDefaultCert(this: ADB, apk: string): Promise<void>;
|
|
19
19
|
/**
|
|
20
20
|
* (Re)sign the given apk file on the local file system with a custom certificate.
|
|
21
21
|
*
|
|
22
|
-
* @
|
|
23
|
-
* @
|
|
24
|
-
* @throws {Error} If signing fails.
|
|
22
|
+
* @param apk - The full path to the local apk file.
|
|
23
|
+
* @throws If signing fails.
|
|
25
24
|
*/
|
|
26
|
-
export function signWithCustomCert(this:
|
|
25
|
+
export declare function signWithCustomCert(this: ADB, apk: string): Promise<void>;
|
|
27
26
|
/**
|
|
28
27
|
* (Re)sign the given apk file on the local file system with either
|
|
29
28
|
* custom or default certificate based on _this.useKeystore_ property value
|
|
30
29
|
* and Zip-aligns it after signing.
|
|
31
30
|
*
|
|
32
|
-
* @
|
|
33
|
-
* @
|
|
34
|
-
* @throws {Error} If signing fails.
|
|
31
|
+
* @param appPath - The full path to the local .apk(s) file.
|
|
32
|
+
* @throws If signing fails.
|
|
35
33
|
*/
|
|
36
|
-
export function sign(this:
|
|
34
|
+
export declare function sign(this: ADB, appPath: string): Promise<void>;
|
|
37
35
|
/**
|
|
38
36
|
* Perform zip-aligning to the given local apk file.
|
|
39
37
|
*
|
|
40
|
-
* @
|
|
41
|
-
* @
|
|
42
|
-
* @returns {Promise<boolean>} True if the apk has been successfully aligned
|
|
38
|
+
* @param apk - The full path to the local apk file.
|
|
39
|
+
* @returns True if the apk has been successfully aligned
|
|
43
40
|
* or false if the apk has been already aligned.
|
|
44
|
-
* @throws
|
|
41
|
+
* @throws If zip-align fails.
|
|
45
42
|
*/
|
|
46
|
-
export function zipAlignApk(this:
|
|
43
|
+
export declare function zipAlignApk(this: ADB, apk: string): Promise<boolean>;
|
|
47
44
|
/**
|
|
48
45
|
* Check if the app is already signed with the default Appium certificate.
|
|
49
46
|
*
|
|
50
|
-
* @
|
|
51
|
-
* @param
|
|
52
|
-
* @param
|
|
53
|
-
* @
|
|
54
|
-
* @return {Promise<boolean>} True if given application is already signed.
|
|
47
|
+
* @param appPath - The full path to the local .apk(s) file.
|
|
48
|
+
* @param pkg - The name of application package.
|
|
49
|
+
* @param opts - Certificate checking options
|
|
50
|
+
* @returns True if given application is already signed.
|
|
55
51
|
*/
|
|
56
|
-
export function checkApkCert(this:
|
|
52
|
+
export declare function checkApkCert(this: ADB, appPath: string, pkg: string, opts?: CertCheckOptions): Promise<boolean>;
|
|
57
53
|
/**
|
|
58
54
|
* Retrieve the the hash of the given keystore.
|
|
59
55
|
*
|
|
60
|
-
* @
|
|
61
|
-
* @
|
|
62
|
-
* @throws {Error} If getting keystore hash fails.
|
|
56
|
+
* @returns
|
|
57
|
+
* @throws If getting keystore hash fails.
|
|
63
58
|
*/
|
|
64
|
-
export function getKeystoreHash(this:
|
|
59
|
+
export declare function getKeystoreHash(this: ADB): Promise<KeystoreHash>;
|
|
65
60
|
/**
|
|
66
61
|
* Get the absolute path to apksigner tool
|
|
67
62
|
*
|
|
68
|
-
* @
|
|
69
|
-
* @
|
|
70
|
-
* @throws {Error} If the tool is not present on the local file system.
|
|
63
|
+
* @returns An absolute path to apksigner tool.
|
|
64
|
+
* @throws If the tool is not present on the local file system.
|
|
71
65
|
*/
|
|
72
|
-
export function getApksignerForOs(this:
|
|
66
|
+
export declare function getApksignerForOs(this: ADB): Promise<string>;
|
|
73
67
|
/**
|
|
74
68
|
* Unsigns the given apk by removing the
|
|
75
69
|
* META-INF folder recursively from the archive.
|
|
76
70
|
* !!! The function overwrites the given apk after successful unsigning !!!
|
|
77
71
|
*
|
|
78
|
-
* @param
|
|
79
|
-
* @returns
|
|
72
|
+
* @param apkPath The path to the apk
|
|
73
|
+
* @returns `true` if the apk has been successfully
|
|
80
74
|
* unsigned and overwritten
|
|
81
|
-
* @throws
|
|
75
|
+
* @throws if there was an error during the unsign operation
|
|
82
76
|
*/
|
|
83
|
-
export function unsignApk(apkPath: string): Promise<boolean>;
|
|
77
|
+
export declare function unsignApk(apkPath: string): Promise<boolean>;
|
|
84
78
|
//# sourceMappingURL=apk-signing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apk-signing.d.ts","sourceRoot":"","sources":["../../../lib/tools/apk-signing.
|
|
1
|
+
{"version":3,"file":"apk-signing.d.ts","sourceRoot":"","sources":["../../../lib/tools/apk-signing.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,EAGV,gBAAgB,EAChB,YAAY,EACb,MAAM,YAAY,CAAC;AAkBpB;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA8BlF;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBhF;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA8C/E;AAED;;;;;;;GAOG;AACH,wBAAsB,IAAI,CAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBrE;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAgC3E;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,OAAO,CAAC,CAmF1H;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,YAAY,CAAC,CAuCvE;AAID;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAEnE;AAED;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA0BlE"}
|
|
@@ -32,17 +32,15 @@ const DEFAULT_CERT_HASH = {
|
|
|
32
32
|
[SHA256]: 'a40da80a59d170caa950cf15c18c454d47a39b26989d8b640ecd745ba71bf5dc'
|
|
33
33
|
};
|
|
34
34
|
const JAVA_PROPS_INIT_ERROR = 'java.lang.Error: Properties init';
|
|
35
|
-
/** @type {LRUCache<string, import('./types').SignedAppCacheValue>} */
|
|
36
35
|
const SIGNED_APPS_CACHE = new lru_cache_1.LRUCache({
|
|
37
36
|
max: 30,
|
|
38
37
|
});
|
|
39
38
|
/**
|
|
40
39
|
* Execute apksigner utility with given arguments.
|
|
41
40
|
*
|
|
42
|
-
* @
|
|
43
|
-
* @
|
|
44
|
-
* @
|
|
45
|
-
* @throws {Error} If apksigner binary is not present on the local file system
|
|
41
|
+
* @param args - The list of tool arguments.
|
|
42
|
+
* @returns - Command stdout
|
|
43
|
+
* @throws If apksigner binary is not present on the local file system
|
|
46
44
|
* or the return code is not equal to zero.
|
|
47
45
|
*/
|
|
48
46
|
async function executeApksigner(args) {
|
|
@@ -59,26 +57,28 @@ async function executeApksigner(args) {
|
|
|
59
57
|
// @ts-ignore This works
|
|
60
58
|
windowsVerbatimArguments: support_1.system.isWindows(),
|
|
61
59
|
});
|
|
62
|
-
for (
|
|
60
|
+
for (const [name, stream] of [['stdout', stdout], ['stderr', stderr]]) {
|
|
63
61
|
if (!lodash_1.default.trim(stream)) {
|
|
64
62
|
continue;
|
|
65
63
|
}
|
|
66
64
|
if (name === 'stdout') {
|
|
67
65
|
// Make the output less talkative
|
|
68
|
-
|
|
66
|
+
const filteredStream = stream.split('\n')
|
|
69
67
|
.filter((line) => !line.includes('WARNING:'))
|
|
70
68
|
.join('\n');
|
|
69
|
+
logger_js_1.log.debug(`apksigner ${name}: ${filteredStream}`);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
logger_js_1.log.debug(`apksigner ${name}: ${stream}`);
|
|
71
73
|
}
|
|
72
|
-
logger_js_1.log.debug(`apksigner ${name}: ${stream}`);
|
|
73
74
|
}
|
|
74
75
|
return stdout;
|
|
75
76
|
}
|
|
76
77
|
/**
|
|
77
78
|
* (Re)sign the given apk file on the local file system with the default certificate.
|
|
78
79
|
*
|
|
79
|
-
* @
|
|
80
|
-
* @
|
|
81
|
-
* @throws {Error} If signing fails.
|
|
80
|
+
* @param apk - The full path to the local apk file.
|
|
81
|
+
* @throws If signing fails.
|
|
82
82
|
*/
|
|
83
83
|
async function signWithDefaultCert(apk) {
|
|
84
84
|
logger_js_1.log.debug(`Signing '${apk}' with default cert`);
|
|
@@ -95,20 +95,20 @@ async function signWithDefaultCert(apk) {
|
|
|
95
95
|
await this.executeApksigner(args);
|
|
96
96
|
}
|
|
97
97
|
catch (e) {
|
|
98
|
+
const err = e;
|
|
98
99
|
throw new Error(`Could not sign '${apk}' with the default certificate. ` +
|
|
99
|
-
`Original error: ${
|
|
100
|
+
`Original error: ${err.stderr || err.stdout || err.message}`);
|
|
100
101
|
}
|
|
101
102
|
}
|
|
102
103
|
/**
|
|
103
104
|
* (Re)sign the given apk file on the local file system with a custom certificate.
|
|
104
105
|
*
|
|
105
|
-
* @
|
|
106
|
-
* @
|
|
107
|
-
* @throws {Error} If signing fails.
|
|
106
|
+
* @param apk - The full path to the local apk file.
|
|
107
|
+
* @throws If signing fails.
|
|
108
108
|
*/
|
|
109
109
|
async function signWithCustomCert(apk) {
|
|
110
110
|
logger_js_1.log.debug(`Signing '${apk}' with custom cert`);
|
|
111
|
-
if (!(await support_1.fs.exists(
|
|
111
|
+
if (!(await support_1.fs.exists(this.keystorePath))) {
|
|
112
112
|
throw new Error(`Keystore: ${this.keystorePath} doesn't exist.`);
|
|
113
113
|
}
|
|
114
114
|
if (!(await support_1.fs.exists(apk))) {
|
|
@@ -116,15 +116,16 @@ async function signWithCustomCert(apk) {
|
|
|
116
116
|
}
|
|
117
117
|
try {
|
|
118
118
|
await this.executeApksigner(['sign',
|
|
119
|
-
'--ks',
|
|
120
|
-
'--ks-key-alias',
|
|
119
|
+
'--ks', this.keystorePath,
|
|
120
|
+
'--ks-key-alias', this.keyAlias,
|
|
121
121
|
'--ks-pass', `pass:${this.keystorePassword}`,
|
|
122
122
|
'--key-pass', `pass:${this.keyPassword}`,
|
|
123
123
|
apk]);
|
|
124
124
|
}
|
|
125
125
|
catch (err) {
|
|
126
|
+
const error = err;
|
|
126
127
|
logger_js_1.log.warn(`Cannot use apksigner tool for signing. Defaulting to jarsigner. ` +
|
|
127
|
-
`Original error: ${
|
|
128
|
+
`Original error: ${error.stderr || error.stdout || error.message}`);
|
|
128
129
|
try {
|
|
129
130
|
if (await unsignApk(apk)) {
|
|
130
131
|
logger_js_1.log.debug(`'${apk}' has been successfully unsigned`);
|
|
@@ -133,14 +134,13 @@ async function signWithCustomCert(apk) {
|
|
|
133
134
|
logger_js_1.log.debug(`'${apk}' does not need to be unsigned`);
|
|
134
135
|
}
|
|
135
136
|
const jarsigner = path_1.default.resolve(await (0, helpers_js_1.getJavaHome)(), 'bin', `jarsigner${support_1.system.isWindows() ? '.exe' : ''}`);
|
|
136
|
-
/** @type {string[]} */
|
|
137
137
|
const fullCmd = [jarsigner,
|
|
138
138
|
'-sigalg', 'MD5withRSA',
|
|
139
139
|
'-digestalg', 'SHA1',
|
|
140
|
-
'-keystore',
|
|
141
|
-
'-storepass',
|
|
142
|
-
'-keypass',
|
|
143
|
-
apk,
|
|
140
|
+
'-keystore', this.keystorePath,
|
|
141
|
+
'-storepass', this.keystorePassword,
|
|
142
|
+
'-keypass', this.keyPassword,
|
|
143
|
+
apk, this.keyAlias];
|
|
144
144
|
logger_js_1.log.debug(`Starting jarsigner: ${support_1.util.quote(fullCmd)}`);
|
|
145
145
|
await (0, teen_process_1.exec)(fullCmd[0], fullCmd.slice(1), {
|
|
146
146
|
// @ts-ignore This works
|
|
@@ -148,8 +148,9 @@ async function signWithCustomCert(apk) {
|
|
|
148
148
|
});
|
|
149
149
|
}
|
|
150
150
|
catch (e) {
|
|
151
|
+
const execErr = e;
|
|
151
152
|
throw new Error(`Could not sign with custom certificate. ` +
|
|
152
|
-
`Original error: ${
|
|
153
|
+
`Original error: ${execErr.stderr || execErr.message}`);
|
|
153
154
|
}
|
|
154
155
|
}
|
|
155
156
|
}
|
|
@@ -158,9 +159,8 @@ async function signWithCustomCert(apk) {
|
|
|
158
159
|
* custom or default certificate based on _this.useKeystore_ property value
|
|
159
160
|
* and Zip-aligns it after signing.
|
|
160
161
|
*
|
|
161
|
-
* @
|
|
162
|
-
* @
|
|
163
|
-
* @throws {Error} If signing fails.
|
|
162
|
+
* @param appPath - The full path to the local .apk(s) file.
|
|
163
|
+
* @throws If signing fails.
|
|
164
164
|
*/
|
|
165
165
|
async function sign(appPath) {
|
|
166
166
|
if (appPath.endsWith(helpers_js_1.APKS_EXTENSION)) {
|
|
@@ -189,16 +189,15 @@ async function sign(appPath) {
|
|
|
189
189
|
/**
|
|
190
190
|
* Perform zip-aligning to the given local apk file.
|
|
191
191
|
*
|
|
192
|
-
* @
|
|
193
|
-
* @
|
|
194
|
-
* @returns {Promise<boolean>} True if the apk has been successfully aligned
|
|
192
|
+
* @param apk - The full path to the local apk file.
|
|
193
|
+
* @returns True if the apk has been successfully aligned
|
|
195
194
|
* or false if the apk has been already aligned.
|
|
196
|
-
* @throws
|
|
195
|
+
* @throws If zip-align fails.
|
|
197
196
|
*/
|
|
198
197
|
async function zipAlignApk(apk) {
|
|
199
198
|
await this.initZipAlign();
|
|
200
199
|
try {
|
|
201
|
-
await (0, teen_process_1.exec)(
|
|
200
|
+
await (0, teen_process_1.exec)(this.binaries.zipalign, ['-c', '4', apk]);
|
|
202
201
|
logger_js_1.log.debug(`${apk}' is already zip-aligned. Doing nothing`);
|
|
203
202
|
return false;
|
|
204
203
|
}
|
|
@@ -216,25 +215,25 @@ async function zipAlignApk(apk) {
|
|
|
216
215
|
const alignedApk = await support_1.tempDir.path({ prefix: 'appium', suffix: '.tmp' });
|
|
217
216
|
await (0, support_1.mkdirp)(path_1.default.dirname(alignedApk));
|
|
218
217
|
try {
|
|
219
|
-
await (0, teen_process_1.exec)(
|
|
218
|
+
await (0, teen_process_1.exec)(this.binaries.zipalign, ['-f', '4', apk, alignedApk]);
|
|
220
219
|
await support_1.fs.mv(alignedApk, apk, { mkdirp: true });
|
|
221
220
|
return true;
|
|
222
221
|
}
|
|
223
222
|
catch (e) {
|
|
223
|
+
const err = e;
|
|
224
224
|
if (await support_1.fs.exists(alignedApk)) {
|
|
225
225
|
await support_1.fs.unlink(alignedApk);
|
|
226
226
|
}
|
|
227
|
-
throw new Error(`zipAlignApk failed. Original error: ${
|
|
227
|
+
throw new Error(`zipAlignApk failed. Original error: ${err.message || err.stderr}`);
|
|
228
228
|
}
|
|
229
229
|
}
|
|
230
230
|
/**
|
|
231
231
|
* Check if the app is already signed with the default Appium certificate.
|
|
232
232
|
*
|
|
233
|
-
* @
|
|
234
|
-
* @param
|
|
235
|
-
* @param
|
|
236
|
-
* @
|
|
237
|
-
* @return {Promise<boolean>} True if given application is already signed.
|
|
233
|
+
* @param appPath - The full path to the local .apk(s) file.
|
|
234
|
+
* @param pkg - The name of application package.
|
|
235
|
+
* @param opts - Certificate checking options
|
|
236
|
+
* @returns True if given application is already signed.
|
|
238
237
|
*/
|
|
239
238
|
async function checkApkCert(appPath, pkg, opts = {}) {
|
|
240
239
|
logger_js_1.log.debug(`Checking app cert for ${appPath}`);
|
|
@@ -242,38 +241,42 @@ async function checkApkCert(appPath, pkg, opts = {}) {
|
|
|
242
241
|
logger_js_1.log.debug(`'${appPath}' does not exist`);
|
|
243
242
|
return false;
|
|
244
243
|
}
|
|
244
|
+
let actualAppPath = appPath;
|
|
245
245
|
if (path_1.default.extname(appPath) === helpers_js_1.APKS_EXTENSION) {
|
|
246
|
-
|
|
246
|
+
actualAppPath = await this.extractBaseApk(appPath);
|
|
247
247
|
}
|
|
248
248
|
const hashMatches = (apksignerOutput, expectedHashes) => {
|
|
249
249
|
for (const [name, value] of lodash_1.default.toPairs(expectedHashes)) {
|
|
250
|
-
if (new RegExp(`digest:\\s+${value}\\b`, 'i').test(apksignerOutput)) {
|
|
251
|
-
logger_js_1.log.debug(`${name} hash did match for '${path_1.default.basename(
|
|
250
|
+
if (value && new RegExp(`digest:\\s+${value}\\b`, 'i').test(apksignerOutput)) {
|
|
251
|
+
logger_js_1.log.debug(`${name} hash did match for '${path_1.default.basename(actualAppPath)}'`);
|
|
252
252
|
return true;
|
|
253
253
|
}
|
|
254
254
|
}
|
|
255
255
|
return false;
|
|
256
256
|
};
|
|
257
257
|
const { requireDefaultCert = true, } = opts;
|
|
258
|
-
const appHash = await support_1.fs.hash(
|
|
258
|
+
const appHash = await support_1.fs.hash(actualAppPath);
|
|
259
259
|
if (SIGNED_APPS_CACHE.has(appHash)) {
|
|
260
|
-
logger_js_1.log.debug(`Using the previously cached signature entry for '${path_1.default.basename(
|
|
261
|
-
const
|
|
262
|
-
if (
|
|
263
|
-
|
|
260
|
+
logger_js_1.log.debug(`Using the previously cached signature entry for '${path_1.default.basename(actualAppPath)}'`);
|
|
261
|
+
const cached = SIGNED_APPS_CACHE.get(appHash);
|
|
262
|
+
if (cached) {
|
|
263
|
+
const { keystorePath, output, expected } = cached;
|
|
264
|
+
if (this.useKeystore && this.keystorePath === keystorePath || !this.useKeystore) {
|
|
265
|
+
return (!this.useKeystore && !requireDefaultCert) || hashMatches(output, expected);
|
|
266
|
+
}
|
|
264
267
|
}
|
|
265
268
|
}
|
|
266
269
|
const expected = this.useKeystore ? await this.getKeystoreHash() : DEFAULT_CERT_HASH;
|
|
267
270
|
try {
|
|
268
271
|
await getApksignerForOs.bind(this)();
|
|
269
|
-
const output = await this.executeApksigner(['verify', '--print-certs',
|
|
272
|
+
const output = await this.executeApksigner(['verify', '--print-certs', actualAppPath]);
|
|
270
273
|
const hasMatch = hashMatches(output, expected);
|
|
271
274
|
if (hasMatch) {
|
|
272
|
-
logger_js_1.log.info(`'${
|
|
275
|
+
logger_js_1.log.info(`'${actualAppPath}' is signed with the ` +
|
|
273
276
|
`${this.useKeystore ? 'keystore' : 'default'} certificate`);
|
|
274
277
|
}
|
|
275
278
|
else {
|
|
276
|
-
logger_js_1.log.info(`'${
|
|
279
|
+
logger_js_1.log.info(`'${actualAppPath}' is signed with a ` +
|
|
277
280
|
`non-${this.useKeystore ? 'keystore' : 'default'} certificate`);
|
|
278
281
|
}
|
|
279
282
|
const isSigned = (!this.useKeystore && !requireDefaultCert) || hasMatch;
|
|
@@ -281,18 +284,19 @@ async function checkApkCert(appPath, pkg, opts = {}) {
|
|
|
281
284
|
SIGNED_APPS_CACHE.set(appHash, {
|
|
282
285
|
output,
|
|
283
286
|
expected,
|
|
284
|
-
keystorePath:
|
|
287
|
+
keystorePath: this.keystorePath,
|
|
285
288
|
});
|
|
286
289
|
}
|
|
287
290
|
return isSigned;
|
|
288
291
|
}
|
|
289
292
|
catch (err) {
|
|
293
|
+
const error = err;
|
|
290
294
|
// check if there is no signature
|
|
291
|
-
if (lodash_1.default.includes(
|
|
292
|
-
logger_js_1.log.info(`'${
|
|
295
|
+
if (lodash_1.default.includes(error.stderr, APKSIGNER_VERIFY_FAIL)) {
|
|
296
|
+
logger_js_1.log.info(`'${actualAppPath}' is not signed`);
|
|
293
297
|
return false;
|
|
294
298
|
}
|
|
295
|
-
const errMsg =
|
|
299
|
+
const errMsg = error.stderr || error.stdout || error.message;
|
|
296
300
|
if (lodash_1.default.includes(errMsg, JAVA_PROPS_INIT_ERROR)) {
|
|
297
301
|
// This error pops up randomly and we are not quite sure why.
|
|
298
302
|
// My guess - a race condition in java vm initialization.
|
|
@@ -303,19 +307,18 @@ async function checkApkCert(appPath, pkg, opts = {}) {
|
|
|
303
307
|
// would anyway fail.
|
|
304
308
|
// See https://github.com/appium/appium/issues/14724 for more details.
|
|
305
309
|
logger_js_1.log.warn(errMsg);
|
|
306
|
-
logger_js_1.log.warn(`Assuming '${
|
|
310
|
+
logger_js_1.log.warn(`Assuming '${actualAppPath}' is already signed and continuing anyway`);
|
|
307
311
|
return true;
|
|
308
312
|
}
|
|
309
|
-
throw new Error(`Cannot verify the signature of '${
|
|
313
|
+
throw new Error(`Cannot verify the signature of '${actualAppPath}'. ` +
|
|
310
314
|
`Original error: ${errMsg}`);
|
|
311
315
|
}
|
|
312
316
|
}
|
|
313
317
|
/**
|
|
314
318
|
* Retrieve the the hash of the given keystore.
|
|
315
319
|
*
|
|
316
|
-
* @
|
|
317
|
-
* @
|
|
318
|
-
* @throws {Error} If getting keystore hash fails.
|
|
320
|
+
* @returns
|
|
321
|
+
* @throws If getting keystore hash fails.
|
|
319
322
|
*/
|
|
320
323
|
async function getKeystoreHash() {
|
|
321
324
|
logger_js_1.log.debug(`Getting hash of the '${this.keystorePath}' keystore`);
|
|
@@ -323,12 +326,11 @@ async function getKeystoreHash() {
|
|
|
323
326
|
if (!await support_1.fs.exists(keytool)) {
|
|
324
327
|
throw new Error(`The keytool utility cannot be found at '${keytool}'`);
|
|
325
328
|
}
|
|
326
|
-
/** @type {string[]} */
|
|
327
329
|
const args = [
|
|
328
330
|
'-v', '-list',
|
|
329
|
-
'-alias',
|
|
330
|
-
'-keystore',
|
|
331
|
-
'-storepass',
|
|
331
|
+
'-alias', this.keyAlias,
|
|
332
|
+
'-keystore', this.keystorePath,
|
|
333
|
+
'-storepass', this.keystorePassword,
|
|
332
334
|
];
|
|
333
335
|
logger_js_1.log.info(`Running '${keytool}' with arguments: ${support_1.util.quote(args)}`);
|
|
334
336
|
try {
|
|
@@ -353,17 +355,17 @@ async function getKeystoreHash() {
|
|
|
353
355
|
return result;
|
|
354
356
|
}
|
|
355
357
|
catch (e) {
|
|
358
|
+
const err = e;
|
|
356
359
|
throw new Error(`Cannot get the hash of '${this.keystorePath}' keystore. ` +
|
|
357
|
-
`Original error: ${
|
|
360
|
+
`Original error: ${err.stderr || err.message}`);
|
|
358
361
|
}
|
|
359
362
|
}
|
|
360
363
|
// #region Private functions
|
|
361
364
|
/**
|
|
362
365
|
* Get the absolute path to apksigner tool
|
|
363
366
|
*
|
|
364
|
-
* @
|
|
365
|
-
* @
|
|
366
|
-
* @throws {Error} If the tool is not present on the local file system.
|
|
367
|
+
* @returns An absolute path to apksigner tool.
|
|
368
|
+
* @throws If the tool is not present on the local file system.
|
|
367
369
|
*/
|
|
368
370
|
async function getApksignerForOs() {
|
|
369
371
|
return await this.getBinaryFromSdkRoot('apksigner.jar');
|
|
@@ -373,10 +375,10 @@ async function getApksignerForOs() {
|
|
|
373
375
|
* META-INF folder recursively from the archive.
|
|
374
376
|
* !!! The function overwrites the given apk after successful unsigning !!!
|
|
375
377
|
*
|
|
376
|
-
* @param
|
|
377
|
-
* @returns
|
|
378
|
+
* @param apkPath The path to the apk
|
|
379
|
+
* @returns `true` if the apk has been successfully
|
|
378
380
|
* unsigned and overwritten
|
|
379
|
-
* @throws
|
|
381
|
+
* @throws if there was an error during the unsign operation
|
|
380
382
|
*/
|
|
381
383
|
async function unsignApk(apkPath) {
|
|
382
384
|
const tmpRoot = await support_1.tempDir.openDir();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apk-signing.js","sourceRoot":"","sources":["../../../lib/tools/apk-signing.js"],"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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"}
|