public class

AndroidDeviceUtil

extends Object
java.lang.Object
   ↳ com.pnfsoftware.jeb.core.units.code.android.adb.AndroidDeviceUtil

Class Overview

Useful routines when debugging Android devices.

Summary

Public Constructors
AndroidDeviceUtil()
Public Methods
static boolean executeCommandAsRoot(AdbWrapper adb, boolean rootVerification, String command)
Attempt to execute a single ADB command as root.
static boolean executeCommandAsRoot(AdbWrapper adb, String command)
Attempt to execute a single ADB command as root, with a prior root verification.
static boolean executeCommandsAsRoot(AdbWrapper adb, boolean rootVerification, String[] commands)
Attempt to execute a sequence of ADB commands as root.
static boolean executeCommandsAsRoot(AdbWrapper adb, String[] commands)
Attempt to execute a sequence of ADB commands as root, with a prior root verification.
static int getAndroidApiLevel(AdbWrapper adb)
Retrieve the numerical API level (eg, 29 on Android Q) of the target.
static AndroidPlatformABI getBestABIForApp(AdbWrapper adb, IApkUnit apk)
Get the best ABI to run a given Android app on a given device.
static AndroidPlatformABI getPreferredABI(AdbWrapper adb)
Get the preferred ABI supported by a device.
static List<Integer> getProcessesByName(AdbWrapper adb, String processName)
Get a list of PIDs by process name
static List<AndroidPlatformABI> getSupportedABIs(AdbWrapper adb)
Get the ABIs supported by a device.
static boolean isDebuggableApp(AdbWrapper adb, String pname)
Determine whether an installed app is debuggable.
static boolean isRootDevice(AdbWrapper adb)
Heuristic to determine if the device appears to be rooted - and has a copy of su installed.
static boolean pullFile(AdbWrapper adb, String remotePath, String localPath)
Attempt to pull a file from a device using a variety of methods.
static String uploadFileToDeviceTemp(AdbWrapper adb, String name, AndroidPlatformABI platformAbi, String version, String extension)
Upload a JEB Android asset file to an Android device.
static String uploadFileToDeviceTemp(AdbWrapper adb, String name, AndroidPlatformABI platformAbi)
Upload a JEB Android asset file to an Android device.@return
[Expand]
Inherited Methods
From class java.lang.Object

Public Constructors

public AndroidDeviceUtil ()

Public Methods

public static boolean executeCommandAsRoot (AdbWrapper adb, boolean rootVerification, String command)

Attempt to execute a single ADB command as root.

Throws
AdbException

public static boolean executeCommandAsRoot (AdbWrapper adb, String command)

Attempt to execute a single ADB command as root, with a prior root verification.

Throws
AdbException

public static boolean executeCommandsAsRoot (AdbWrapper adb, boolean rootVerification, String[] commands)

Attempt to execute a sequence of ADB commands as root.

Throws
AdbException

public static boolean executeCommandsAsRoot (AdbWrapper adb, String[] commands)

Attempt to execute a sequence of ADB commands as root, with a prior root verification.

Throws
AdbException

public static int getAndroidApiLevel (AdbWrapper adb)

Retrieve the numerical API level (eg, 29 on Android Q) of the target.

Returns
  • 0 on error

public static AndroidPlatformABI getBestABIForApp (AdbWrapper adb, IApkUnit apk)

Get the best ABI to run a given Android app on a given device. This method is a heuristic and may fail.

Returns
  • the ABI that should be selected when running the app; null on error if if no compatible ABI was found

public static AndroidPlatformABI getPreferredABI (AdbWrapper adb)

Get the preferred ABI supported by a device.

Returns
  • an ABI, null on error

public static List<Integer> getProcessesByName (AdbWrapper adb, String processName)

Get a list of PIDs by process name

public static List<AndroidPlatformABI> getSupportedABIs (AdbWrapper adb)

Get the ABIs supported by a device.

Returns
  • a list of ABIs, never null, but empty on error

public static boolean isDebuggableApp (AdbWrapper adb, String pname)

Determine whether an installed app is debuggable. An app is debuggable if its manifest has the 'debuggable' attribute explicitly set to true.

Parameters
pname application package name

public static boolean isRootDevice (AdbWrapper adb)

Heuristic to determine if the device appears to be rooted - and has a copy of su installed.

public static boolean pullFile (AdbWrapper adb, String remotePath, String localPath)

Attempt to pull a file from a device using a variety of methods. Ultimately, if the device is rooted, this method may resort to using super-user capabilities to download the file.

Parameters
remotePath file path on device
localPath local destination path
Returns
  • true on success

public static String uploadFileToDeviceTemp (AdbWrapper adb, String name, AndroidPlatformABI platformAbi, String version, String extension)

Upload a JEB Android asset file to an Android device.

Parameters
adb mandatory
name mandatory
platformAbi optional
version optional
extension optional
Returns
  • the path of the copied file on the target device, NOT containing platform/version/extension information
Throws
IOException

public static String uploadFileToDeviceTemp (AdbWrapper adb, String name, AndroidPlatformABI platformAbi)

Upload a JEB Android asset file to an Android device.@return

Throws
IOException