diff options
| -rw-r--r-- | core/java/com/android/internal/os/Zygote.java | 5 | ||||
| -rw-r--r-- | services/core/java/com/android/server/am/ActivityManagerService.java | 6 |
2 files changed, 11 insertions, 0 deletions
diff --git a/core/java/com/android/internal/os/Zygote.java b/core/java/com/android/internal/os/Zygote.java index 9167076474ff..d0f5ba75e8ac 100644 --- a/core/java/com/android/internal/os/Zygote.java +++ b/core/java/com/android/internal/os/Zygote.java @@ -55,6 +55,8 @@ public final class Zygote { public static final int DISABLE_VERIFIER = 1 << 9; /** Only use oat files located in /system. Otherwise use dex/jar/apk . */ public static final int ONLY_USE_SYSTEM_OAT_FILES = 1 << 10; + /** Do not enfore hidden API access restrictions. */ + public static final int DISABLE_HIDDEN_API_CHECKS = 1 << 11; /** No external storage should be mounted. */ public static final int MOUNT_EXTERNAL_NONE = 0; @@ -158,6 +160,9 @@ public final class Zygote { */ public static int forkSystemServer(int uid, int gid, int[] gids, int runtimeFlags, int[][] rlimits, long permittedCapabilities, long effectiveCapabilities) { + // SystemServer is always allowed to use hidden APIs. + runtimeFlags |= DISABLE_HIDDEN_API_CHECKS; + VM_HOOKS.preFork(); // Resets nice priority for zygote process. resetNicePriority(); diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 6cdd068f15ed..883ecb3155ee 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -3892,6 +3892,12 @@ public class ActivityManagerService extends IActivityManager.Stub runtimeFlags |= Zygote.ONLY_USE_SYSTEM_OAT_FILES; } + if (app.info.isAllowedToUseHiddenApi()) { + // This app is allowed to use undocumented and private APIs. Set + // up its runtime with the appropriate flag. + runtimeFlags |= Zygote.DISABLE_HIDDEN_API_CHECKS; + } + String invokeWith = null; if ((app.info.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0) { // Debuggable apps may include a wrapper script with their library directory. |