Replace IS_DEBUGGABLE with isDebuggable module API

Introduce a Build.isDebuggable() getter instead of the IS_DEBUGGABLE
static member.

Also make it module API as APK modules now have access to module APIs in
S, but also TestApi so it can be tested.

Test: m
Fixes: 182345786
Change-Id: I25d0848aee758792bbaba8ab73b5dd997a7250b3
This commit is contained in:
Remi NGUYEN VAN
2021-04-07 19:40:31 +09:00
parent 5d7d6554c2
commit b5f095ebf0
5 changed files with 21 additions and 2 deletions

View File

@@ -29284,7 +29284,6 @@ package android.os {
field public static final String HARDWARE;
field public static final String HOST;
field public static final String ID;
field public static final boolean IS_DEBUGGABLE;
field public static final String MANUFACTURER;
field public static final String MODEL;
field @NonNull public static final String ODM_SKU;

View File

@@ -121,6 +121,10 @@ package android.os {
method public final void markVintfStability();
}
public class Build {
method public static boolean isDebuggable();
}
public static class Build.VERSION {
field public static final int FIRST_SDK_INT;
}

View File

@@ -1022,6 +1022,7 @@ package android.os {
public class Build {
method public static boolean is64BitAbi(String);
method public static boolean isDebuggable();
field public static final boolean IS_EMULATOR;
}

View File

@@ -1309,10 +1309,25 @@ public class Build {
* Debuggable builds allow users to gain root access via local shell, attach debuggers to any
* application regardless of whether they have the "debuggable" attribute set, or downgrade
* selinux into "permissive" mode in particular.
* @hide
*/
public static final boolean IS_DEBUGGABLE =
SystemProperties.getInt("ro.debuggable", 0) == 1;
/**
* Returns true if the device is running a debuggable build such as "userdebug" or "eng".
*
* Debuggable builds allow users to gain root access via local shell, attach debuggers to any
* application regardless of whether they have the "debuggable" attribute set, or downgrade
* selinux into "permissive" mode in particular.
* @hide
*/
@TestApi
@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
public static boolean isDebuggable() {
return IS_DEBUGGABLE;
}
/** {@hide} */
public static final boolean IS_ENG = "eng".equals(TYPE);
/** {@hide} */

View File

@@ -7677,7 +7677,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
}
void addRequestReassignment(@NonNull final RequestReassignment reassignment) {
if (Build.IS_DEBUGGABLE) {
if (Build.isDebuggable()) {
// The code is never supposed to add two reassignments of the same request. Make
// sure this stays true, but without imposing this expensive check on all
// reassignments on all user devices.