Socket
Socket
Sign inDemoInstall

appium-adb

Package Overview
Dependencies
233
Maintainers
7
Versions
417
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 11.1.0 to 12.0.0

12

build/lib/helpers.d.ts

@@ -239,14 +239,2 @@ export type PlatformInfo = {

/**
* Parses the output in JSON format retrieved from
* the corresponding Appium Settings broadcast calls
*
* @param {string} output The actual command output
* @param {string} entityName The name of the entity which is
* going to be parsed
* @returns {Object} The parsed JSON object
* @throws {Error} If the output cannot be parsed
* as a valid JSON
*/
export function parseJsonData(output: string, entityName: string): any;
/**
* Unsigns the given apk by removing the

@@ -253,0 +241,0 @@ * META-INF folder recursively from the archive.

36

build/lib/helpers.js

@@ -6,3 +6,3 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.getResourcePath = exports.matchComponentName = exports.parseLaunchableActivityNames = exports.escapeShellArg = exports.dirExists = exports.getAndroidPrefsRoot = exports.getSdkRootFromEnv = exports.requireSdkRoot = exports.toAvdLocaleArgs = exports.unsignApk = exports.parseJsonData = exports.formatConfigMarker = exports.parseAapt2Strings = exports.parseAaptStrings = exports.parseManifest = exports.DEFAULT_ADB_EXEC_TIMEOUT = exports.APK_EXTENSION = exports.buildInstallArgs = exports.APKS_INSTALL_TIMEOUT = exports.APK_INSTALL_TIMEOUT = exports.APKS_EXTENSION = exports.extractMatchingPermissions = exports.getOpenSslForOs = exports.getApkanalyzerForOs = exports.getBuildToolsDirs = exports.getApksignerForOs = exports.getSdkToolsVersion = exports.getJavaHome = exports.buildStartCmd = exports.isScreenOnFully = exports.getSurfaceOrientation = exports.isCurrentFocusOnKeyguard = exports.isShowingLockscreen = exports.getJavaForOs = exports.getIMEListFromOutput = exports.unzipFile = exports.getAndroidPlatformAndPath = void 0;
exports.getResourcePath = exports.matchComponentName = exports.parseLaunchableActivityNames = exports.escapeShellArg = exports.dirExists = exports.getAndroidPrefsRoot = exports.getSdkRootFromEnv = exports.requireSdkRoot = exports.toAvdLocaleArgs = exports.unsignApk = exports.formatConfigMarker = exports.parseAapt2Strings = exports.parseAaptStrings = exports.parseManifest = exports.DEFAULT_ADB_EXEC_TIMEOUT = exports.APK_EXTENSION = exports.buildInstallArgs = exports.APKS_INSTALL_TIMEOUT = exports.APK_INSTALL_TIMEOUT = exports.APKS_EXTENSION = exports.extractMatchingPermissions = exports.getOpenSslForOs = exports.getApkanalyzerForOs = exports.getBuildToolsDirs = exports.getApksignerForOs = exports.getSdkToolsVersion = exports.getJavaHome = exports.buildStartCmd = exports.isScreenOnFully = exports.getSurfaceOrientation = exports.isCurrentFocusOnKeyguard = exports.isShowingLockscreen = exports.getJavaForOs = exports.getIMEListFromOutput = exports.unzipFile = exports.getAndroidPlatformAndPath = void 0;
const path_1 = __importDefault(require("path"));

@@ -853,36 +853,2 @@ const support_1 = require("@appium/support");

/**
* Parses the output in JSON format retrieved from
* the corresponding Appium Settings broadcast calls
*
* @param {string} output The actual command output
* @param {string} entityName The name of the entity which is
* going to be parsed
* @returns {Object} The parsed JSON object
* @throws {Error} If the output cannot be parsed
* as a valid JSON
*/
function parseJsonData(output, entityName) {
if (!/\bresult=-1\b/.test(output) || !/\bdata="/.test(output)) {
logger_js_1.default.debug(output);
throw new Error(`Cannot retrieve ${entityName} from the device. ` +
'Check the server log for more details');
}
const match = /\bdata="(.+)",?/.exec(output);
if (!match) {
logger_js_1.default.debug(output);
throw new Error(`Cannot parse ${entityName} from the command output. ` +
'Check the server log for more details');
}
const jsonStr = lodash_1.default.trim(match[1]);
try {
return JSON.parse(jsonStr);
}
catch (e) {
logger_js_1.default.debug(jsonStr);
throw new Error(`Cannot parse ${entityName} from the resulting data string. ` +
'Check the server log for more details');
}
}
exports.parseJsonData = parseJsonData;
/**
* Transforms the given language and country abbreviations

@@ -889,0 +855,0 @@ * to AVD arguments array

4

build/lib/mixins.d.ts

@@ -7,8 +7,8 @@ /**

*/
import { SystemCalls, ApkUtils, ADBCommands, SettingsClientCommands, ADBEmuCommands, LockManagementCommands, ManifestMethods, KeyboardCommands, ApkSigningCommands, ApksUtils, AabUtils } from './tools';
import { SystemCalls, ApkUtils, ADBCommands, ADBEmuCommands, LockManagementCommands, ManifestMethods, KeyboardCommands, ApkSigningCommands, ApksUtils, AabUtils } from './tools';
import { ADBOptions } from './options';
declare module './adb' {
interface ADB extends ADBCommands, AabUtils, ApkUtils, ApksUtils, SystemCalls, ADBOptions, SettingsClientCommands, ADBEmuCommands, LockManagementCommands, ManifestMethods, KeyboardCommands, ApkSigningCommands {
interface ADB extends ADBCommands, AabUtils, ApkUtils, ApksUtils, SystemCalls, ADBOptions, ADBEmuCommands, LockManagementCommands, ManifestMethods, KeyboardCommands, ApkSigningCommands {
}
}
//# sourceMappingURL=mixins.d.ts.map

@@ -474,13 +474,2 @@ export default methods;

/**
* Change the state of WiFi and/or Data transfer on the device under test.
*
* @this {import('../adb.js').ADB}
* @param {{wifi?: boolean, data?: boolean}} opts - True to enable wifi and data transfer
* @param {boolean} [isEmulator] - Set it to true if the device under test is an emulator rather than a real device.
*/
function setWifiAndData(this: import("../adb.js").ADB, { wifi, data }: {
wifi?: boolean | undefined;
data?: boolean | undefined;
}, isEmulator?: boolean | undefined): Promise<void>;
/**
* Check the state of animation on the device under test.

@@ -976,4 +965,24 @@ *

function takeScreenshot(this: import("../adb.js").ADB, displayId: string | number | null): Promise<Buffer>;
/**
* Change the state of WiFi on the device under test.
* Only works for real devices since API 30
*
* @this {import('../adb.js').ADB}
* @param {boolean} on - True to enable and false to disable it.
* @param {boolean} [isEmulator=false] - Set it to true if the device under test
* is an emulator rather than a real device.
*/
function setWifiState(this: import("../adb.js").ADB, on: boolean, isEmulator?: boolean | undefined): Promise<void>;
/**
* Change the state of Data transfer on the device under test.
* Only works for real devices since API 30
*
* @this {import('../adb.js').ADB}
* @param {boolean} on - True to enable and false to disable it.
* @param {boolean} [isEmulator=false] - Set it to true if the device under test
* is an emulator rather than a real device.
*/
function setDataState(this: import("../adb.js").ADB, on: boolean, isEmulator?: boolean | undefined): Promise<void>;
}
import { SubProcess } from 'teen_process';
//# sourceMappingURL=adb-commands.d.ts.map

@@ -469,10 +469,2 @@ export default apkUtilsMethods;

/**
* Set the locale name of the device under test and the format of the locale is en-US, for example.
* This method call setDeviceLanguageCountry, so, please use setDeviceLanguageCountry as possible.
*
* @this {import('../adb.js').ADB}
* @param {string} locale - Names of the device language and the country connected with `-`. e.g. en-US.
*/
function setDeviceLocale(this: import("../adb.js").ADB, locale: string): Promise<void>;
/**
* Make sure current device locale is expected or not.

@@ -490,15 +482,2 @@ *

/**
* Set the locale name of the device under test.
*
* @this {import('../adb.js').ADB}
* @privateRemarks FIXME: language or country is required
* @param {string} [language] - Language. The language field is case insensitive, but Locale always canonicalizes to lower case.
* format: [a-zA-Z]{2,8}. e.g. en, ja : https://developer.android.com/reference/java/util/Locale.html
* @param {string} [country] - Country. The country (region) field is case insensitive, but Locale always canonicalizes to upper case.
* format: [a-zA-Z]{2} | [0-9]{3}. e.g. US, JP : https://developer.android.com/reference/java/util/Locale.html
* @param {string?} [script] - Script. The script field is case insensitive but Locale always canonicalizes to title case.
* format: [a-zA-Z]{4}. e.g. Hans in zh-Hans-CN : https://developer.android.com/reference/java/util/Locale.html
*/
function setDeviceLanguageCountry(this: import("../adb.js").ADB, language?: string | undefined, country?: string | undefined, script?: string | null | undefined): Promise<void>;
/**
* @typedef {Object} AppInfo

@@ -505,0 +484,0 @@ * @property {string} name - Package name, for example 'com.acme.app'.

@@ -918,18 +918,2 @@ "use strict";

/**
* Set the locale name of the device under test and the format of the locale is en-US, for example.
* This method call setDeviceLanguageCountry, so, please use setDeviceLanguageCountry as possible.
*
* @this {import('../adb.js').ADB}
* @param {string} locale - Names of the device language and the country connected with `-`. e.g. en-US.
*/
apkUtilsMethods.setDeviceLocale = async function setDeviceLocale(locale) {
const validateLocale = new RegExp(/[a-zA-Z]+-[a-zA-Z0-9]+/);
if (!validateLocale.test(locale)) {
logger_js_1.default.warn(`setDeviceLocale requires the following format: en-US or ja-JP`);
return;
}
let split_locale = locale.split('-');
await this.setDeviceLanguageCountry(split_locale[0], split_locale[1]);
};
/**
* Make sure current device locale is expected or not.

@@ -1001,42 +985,2 @@ *

/**
* Set the locale name of the device under test.
*
* @this {import('../adb.js').ADB}
* @privateRemarks FIXME: language or country is required
* @param {string} [language] - Language. The language field is case insensitive, but Locale always canonicalizes to lower case.
* format: [a-zA-Z]{2,8}. e.g. en, ja : https://developer.android.com/reference/java/util/Locale.html
* @param {string} [country] - Country. The country (region) field is case insensitive, but Locale always canonicalizes to upper case.
* format: [a-zA-Z]{2} | [0-9]{3}. e.g. US, JP : https://developer.android.com/reference/java/util/Locale.html
* @param {string?} [script] - Script. The script field is case insensitive but Locale always canonicalizes to title case.
* format: [a-zA-Z]{4}. e.g. Hans in zh-Hans-CN : https://developer.android.com/reference/java/util/Locale.html
*/
apkUtilsMethods.setDeviceLanguageCountry = async function setDeviceLanguageCountry(language, country, script = null) {
let hasLanguage = language && lodash_1.default.isString(language);
let hasCountry = country && lodash_1.default.isString(country);
if (!hasLanguage || !hasCountry) {
logger_js_1.default.warn(`setDeviceLanguageCountry requires language and country at least`);
logger_js_1.default.warn(`Got language: '${language}' and country: '${country}'`);
return;
}
let apiLevel = await this.getApiLevel();
language = (language || '').toLowerCase();
country = (country || '').toUpperCase();
if (apiLevel < 23) {
let curLanguage = (await this.getDeviceLanguage()).toLowerCase();
let curCountry = (await this.getDeviceCountry()).toUpperCase();
if (language !== curLanguage || country !== curCountry) {
await this.setDeviceSysLocaleViaSettingApp(language, country);
}
}
else {
let curLocale = await this.getDeviceLocale();
// zh-Hans-CN : zh-CN
const localeCode = script ? `${language}-${script}-${country}` : `${language}-${country}`;
logger_js_1.default.debug(`Current locale: '${curLocale}'; requested locale: '${localeCode}'`);
if (localeCode.toLowerCase() !== curLocale.toLowerCase()) {
await this.setDeviceSysLocaleViaSettingApp(language, country, script);
}
}
};
/**
* @typedef {Object} AppInfo

@@ -1043,0 +987,0 @@ * @property {string} name - Package name, for example 'com.acme.app'.

@@ -17,3 +17,2 @@ /**

export type * from './aab-utils';
export type * from './settings-client-commands';
export type * from './android-manifest';

@@ -20,0 +19,0 @@ export type * from './keyboard-commands';

@@ -44,7 +44,6 @@ "use strict";

const adb_emu_commands_1 = __importDefault(require("./adb-emu-commands"));
const settings_client_commands_1 = __importDefault(require("./settings-client-commands"));
const lockmgmt_1 = __importDefault(require("./lockmgmt"));
const keyboard_commands_1 = __importDefault(require("./keyboard-commands"));
Object.assign(adb_commands_1.default, android_manifest_1.default, system_calls_1.default, adb_emu_commands_1.default, apk_signing_1.default, apk_utils_1.default, apks_utils_1.default, aab_utils_1.default, settings_client_commands_1.default, lockmgmt_1.default, keyboard_commands_1.default);
Object.assign(adb_commands_1.default, android_manifest_1.default, system_calls_1.default, adb_emu_commands_1.default, apk_signing_1.default, apk_utils_1.default, apks_utils_1.default, aab_utils_1.default, lockmgmt_1.default, keyboard_commands_1.default);
exports.default = adb_commands_1.default;
//# sourceMappingURL=index.js.map

@@ -65,12 +65,2 @@ export default commands;

/**
* If the io.appium.settings package has running foreground service.
* It returns the io.appium.settings's process existence for api level 25 and lower
* since it does not have the foreground service.
*
* @this {import('../adb.js').ADB}
* @throws {Error} If the method gets an error in the adb shell execution.
* @returns {Promise<boolean>} Return true if the device has running settings app foreground service.
*/
function isSettingsAppServiceRunningInForeground(this: import("../adb.js").ADB): Promise<boolean>;
/**
* @typedef {Object} SettingsAppStartupOptions

@@ -84,8 +74,4 @@ * @property {number} [timeout=5000] The maximum number of milliseconds

* Ensures that Appium Settings helper application is running
* and starts it if necessary.
* and starts it if necessary
*
* The settings app process could keep working by 'android.service.notification.NotificationListenerService cmp=io.appium.settings/.NLService'
* while the app process was killed, or forcefully stopped, or the app was just installed.
* In the case, the io.appium.settings process exists but the foreground service hasn't been started yet.
*
* @this {import('../adb.js').ADB}

@@ -92,0 +78,0 @@ * @param {SettingsAppStartupOptions} [opts={}]

@@ -44,25 +44,4 @@ "use strict";

const GPS_COORDINATES_PATTERN = /data="(-?[\d.]+)\s+(-?[\d.]+)\s+(-?[\d.]+)"/;
const FOREGROUND_APP_KEYWORD = 'isForeground=true';
const commands = {};
/**
* If the io.appium.settings package has running foreground service.
* It returns the io.appium.settings's process existence for api level 25 and lower
* since it does not have the foreground service.
*
* @this {import('../adb.js').ADB}
* @throws {Error} If the method gets an error in the adb shell execution.
* @returns {Promise<boolean>} Return true if the device has running settings app foreground service.
*/
commands.isSettingsAppServiceRunningInForeground = async function isSettingsAppServiceRunningInForeground() {
if (await this.getApiLevel() < 26) {
return await this.processExists(SETTINGS_HELPER_ID);
}
// The foreground service is available since api level 26,
// thus this method works only for api level 26+.
// 'dumpsys activity services <package>' had slightly better performance
// than 'dumpsys activity services' and parsing the foreground apps.
const output = await this.shell(['dumpsys', 'activity', 'services', SETTINGS_HELPER_ID]);
return output.includes(FOREGROUND_APP_KEYWORD);
};
/**
* @typedef {Object} SettingsAppStartupOptions

@@ -76,8 +55,4 @@ * @property {number} [timeout=5000] The maximum number of milliseconds

* Ensures that Appium Settings helper application is running
* and starts it if necessary.
* and starts it if necessary
*
* The settings app process could keep working by 'android.service.notification.NotificationListenerService cmp=io.appium.settings/.NLService'
* while the app process was killed, or forcefully stopped, or the app was just installed.
* In the case, the io.appium.settings process exists but the foreground service hasn't been started yet.
*
* @this {import('../adb.js').ADB}

@@ -89,3 +64,3 @@ * @param {SettingsAppStartupOptions} [opts={}]

commands.requireRunningSettingsApp = async function requireRunningSettingsApp(opts = {}) {
if (await this.isSettingsAppServiceRunningInForeground()) {
if (await this.processExists(SETTINGS_HELPER_ID)) {
return this;

@@ -113,3 +88,3 @@ }

try {
await (0, asyncbox_1.waitForCondition)(async () => await this.isSettingsAppServiceRunningInForeground(), {
await (0, asyncbox_1.waitForCondition)(async () => await this.processExists(SETTINGS_HELPER_ID), {
waitMs: timeout,

@@ -116,0 +91,0 @@ intervalMs: 300,

@@ -871,41 +871,2 @@ import path from 'path';

/**
* Parses the output in JSON format retrieved from
* the corresponding Appium Settings broadcast calls
*
* @param {string} output The actual command output
* @param {string} entityName The name of the entity which is
* going to be parsed
* @returns {Object} The parsed JSON object
* @throws {Error} If the output cannot be parsed
* as a valid JSON
*/
function parseJsonData (output, entityName) {
if (!/\bresult=-1\b/.test(output) || !/\bdata="/.test(output)) {
log.debug(output);
throw new Error(
`Cannot retrieve ${entityName} from the device. ` +
'Check the server log for more details'
);
}
const match = /\bdata="(.+)",?/.exec(output);
if (!match) {
log.debug(output);
throw new Error(
`Cannot parse ${entityName} from the command output. ` +
'Check the server log for more details'
);
}
const jsonStr = _.trim(match[1]);
try {
return JSON.parse(jsonStr);
} catch (e) {
log.debug(jsonStr);
throw new Error(
`Cannot parse ${entityName} from the resulting data string. ` +
'Check the server log for more details'
);
}
}
/**
* Transforms the given language and country abbreviations

@@ -1100,5 +1061,5 @@ * to AVD arguments array

DEFAULT_ADB_EXEC_TIMEOUT, parseManifest, parseAaptStrings, parseAapt2Strings,
formatConfigMarker, parseJsonData, unsignApk, toAvdLocaleArgs, requireSdkRoot,
formatConfigMarker, unsignApk, toAvdLocaleArgs, requireSdkRoot,
getSdkRootFromEnv, getAndroidPrefsRoot, dirExists, escapeShellArg,
parseLaunchableActivityNames, matchComponentName, getResourcePath
};

@@ -12,3 +12,2 @@ /**

ADBCommands,
SettingsClientCommands,
ADBEmuCommands,

@@ -33,3 +32,2 @@ LockManagementCommands,

ADBOptions,
SettingsClientCommands,
ADBEmuCommands,

@@ -36,0 +34,0 @@ LockManagementCommands,

@@ -977,20 +977,2 @@ import {

/**
* Set the locale name of the device under test and the format of the locale is en-US, for example.
* This method call setDeviceLanguageCountry, so, please use setDeviceLanguageCountry as possible.
*
* @this {import('../adb.js').ADB}
* @param {string} locale - Names of the device language and the country connected with `-`. e.g. en-US.
*/
apkUtilsMethods.setDeviceLocale = async function setDeviceLocale (locale) {
const validateLocale = new RegExp(/[a-zA-Z]+-[a-zA-Z0-9]+/);
if (!validateLocale.test(locale)) {
log.warn(`setDeviceLocale requires the following format: en-US or ja-JP`);
return;
}
let split_locale = locale.split('-');
await this.setDeviceLanguageCountry(split_locale[0], split_locale[1]);
};
/**
* Make sure current device locale is expected or not.

@@ -1065,46 +1047,2 @@ *

/**
* Set the locale name of the device under test.
*
* @this {import('../adb.js').ADB}
* @privateRemarks FIXME: language or country is required
* @param {string} [language] - Language. The language field is case insensitive, but Locale always canonicalizes to lower case.
* format: [a-zA-Z]{2,8}. e.g. en, ja : https://developer.android.com/reference/java/util/Locale.html
* @param {string} [country] - Country. The country (region) field is case insensitive, but Locale always canonicalizes to upper case.
* format: [a-zA-Z]{2} | [0-9]{3}. e.g. US, JP : https://developer.android.com/reference/java/util/Locale.html
* @param {string?} [script] - Script. The script field is case insensitive but Locale always canonicalizes to title case.
* format: [a-zA-Z]{4}. e.g. Hans in zh-Hans-CN : https://developer.android.com/reference/java/util/Locale.html
*/
apkUtilsMethods.setDeviceLanguageCountry = async function setDeviceLanguageCountry (language, country, script = null) {
let hasLanguage = language && _.isString(language);
let hasCountry = country && _.isString(country);
if (!hasLanguage || !hasCountry) {
log.warn(`setDeviceLanguageCountry requires language and country at least`);
log.warn(`Got language: '${language}' and country: '${country}'`);
return;
}
let apiLevel = await this.getApiLevel();
language = (language || '').toLowerCase();
country = (country || '').toUpperCase();
if (apiLevel < 23) {
let curLanguage = (await this.getDeviceLanguage()).toLowerCase();
let curCountry = (await this.getDeviceCountry()).toUpperCase();
if (language !== curLanguage || country !== curCountry) {
await this.setDeviceSysLocaleViaSettingApp(language, country);
}
} else {
let curLocale = await this.getDeviceLocale();
// zh-Hans-CN : zh-CN
const localeCode = script ? `${language}-${script}-${country}` : `${language}-${country}`;
log.debug(`Current locale: '${curLocale}'; requested locale: '${localeCode}'`);
if (localeCode.toLowerCase() !== curLocale.toLowerCase()) {
await this.setDeviceSysLocaleViaSettingApp(language, country, script);
}
}
};
/**
* @typedef {Object} AppInfo

@@ -1111,0 +1049,0 @@ * @property {string} name - Package name, for example 'com.acme.app'.

@@ -15,3 +15,2 @@ /**

import emuMethods from './adb-emu-commands';
import settingsClientCommands from './settings-client-commands';
import lockManagementCommands from './lockmgmt';

@@ -29,3 +28,2 @@ import keyboardCommands from './keyboard-commands';

aabUtilsMethods,
settingsClientCommands,
lockManagementCommands,

@@ -45,5 +43,4 @@ keyboardCommands

export type * from './aab-utils';
export type * from './settings-client-commands';
export type * from './android-manifest';
export type * from './keyboard-commands';
export type * from './lockmgmt';
{
"name": "appium-adb",
"version": "11.1.0",
"version": "12.0.0",
"description": "Android Debug Bridge interface",

@@ -5,0 +5,0 @@ "main": "./build/index.js",

@@ -7,6 +7,5 @@ appium-adb

A wrapper over android-adb, implemented using ES6 and along with `async/await`. This package is mainly used by Appium to perform all adb operations on android device.
A wrapper over [Android Debugger Bridge](https://developer.android.com/tools/adb), implemented using ES6
and along with `async/await`. This package is mainly used by Appium to perform all adb operations on Android devices.
*Note*: Issue tracking for this repo has been disabled. Please use the [main Appium issue tracker](https://github.com/appium/appium/issues) instead.
## Installing

@@ -53,108 +52,1 @@

```
### List of methods:
- `createADB`
- `getAdbWithCorrectAdbPath`
- `initAapt`
- `initZipAlign`
- `getApiLevel`
- `isDeviceConnected`
- `mkdir`
- `isValidClass`
- `forceStop`
- `clear`
- `stopAndClear`
- `availableIMEs`
- `enabledIMEs`
- `enableIME`
- `disableIME`
- `setIME`
- `defaultIME`
- `keyevent`
- `lock`
- `back`
- `goToHome`
- `isScreenLocked`
- `isSoftKeyboardPresent`
- `sendTelnetCommand`
- `isAirplaneModeOn`
- `setAirplaneMode`
- `broadcastAirplaneMode`
- `isWifiOn`
- `getScreenSize`
- `getScreenDensity`
- `setWifiState`
- `isDataOn`
- `setDataState`
- `setWifiAndData`
- `rimraf`
- `push`
- `pull`
- `processExists`
- `forwardPort`
- `reversePort` (ApiLevel >=21)
- `forwardAbstractPort`
- `ping`
- `restart`
- `startLogcat`
- `stopLogcat`
- `getLogcatLogs`
- `getPIDsByName`
- `killProcessesByName`
- `killProcessByPID`
- `broadcastProcessEnd`
- `broadcast`
- `packageAndLaunchActivityFromManifest`
- `compileManifest`
- `insertManifest`
- `hasInternetPermissionFromManifest`
- `getSdkBinaryPath`
- `getBinaryFromSdkRoot`
- `getBinaryFromPath`
- `getConnectedDevices`
- `getDevicesWithRetry`
- `restartAdb`
- `adbExec`
- `shell`
- `getAdbServerPort`
- `getEmulatorPort`
- `getPortFromEmulatorString`
- `getConnectedEmulators`
- `setEmulatorPort`
- `setDeviceId`
- `getRunningAVD`
- `getRunningAVDWithRetry`
- `killAllEmulators`
- `launchAVD`
- `waitForEmulatorReady`
- `waitForDevice`
- `reboot`
- `signWithDefaultCert`
- `signWithCustomCert`
- `sign`
- `zipAlignApk`
- `checkApkCert`
- `checkCustomApkCert`
- `getKeystoreHash`
- `isAppInstalled`
- `startApp`
- `startUri`
- `getFocusedPackageAndActivity`
- `waitForActivityOrNot`
- `waitForActivity`
- `waitForNotActivity`
- `uninstallApk`
- `installFromDevicePath`
- `install`
- `fingerprint` (ApiLevel >=23 | emulator only)
- `sendSMS` (emulator only)
- `rotate` (emulator only)
- `powerAC` (emulator only)
- `powerCapacity` (emulator only)
- `powerOFF` (emulator only)
- `gsmCall` (emulator only)
- `gsmSignal` (emulator only)
- `gsmVoice` (emulator only)
- `root`
- `unroot`

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc