summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorDavid Brazdil <dbrazdil@google.com>2018-01-24 21:36:44 +0000
committerandroid-build-merger <android-build-merger@google.com>2018-01-24 21:36:44 +0000
commit6dea42ae0fde52b97fbe13acc70ff9df1a60c0dd (patch)
tree5388f197dd0103f01425a907b711b9da837a767e /core/java
parentf343e33dd50bd03d4c537339988ba99ca1076a47 (diff)
parent2a8c24be18dfc3d7cb3f405bee898613b23a212e (diff)
Merge "Set DEXOPT_DISABLE_HIDDEN_API_CHECKS for system apps"
am: 2a8c24be18 Change-Id: I51ce5aa51ca72200639244caa018323911cc54ae
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/content/pm/ApplicationInfo.java7
-rw-r--r--core/java/com/android/internal/os/ZygoteInit.java9
2 files changed, 15 insertions, 1 deletions
diff --git a/core/java/android/content/pm/ApplicationInfo.java b/core/java/android/content/pm/ApplicationInfo.java
index 664bcbca6aba..80fc8e3c2f16 100644
--- a/core/java/android/content/pm/ApplicationInfo.java
+++ b/core/java/android/content/pm/ApplicationInfo.java
@@ -1458,6 +1458,13 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
/**
* @hide
*/
+ public boolean isAllowedToUseHiddenApi() {
+ return isSystemApp();
+ }
+
+ /**
+ * @hide
+ */
public boolean isForwardLocked() {
return (privateFlags & ApplicationInfo.PRIVATE_FLAG_FORWARD_LOCK) != 0;
}
diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/android/internal/os/ZygoteInit.java
index 21f1fb652794..89a70fc0c9a2 100644
--- a/core/java/com/android/internal/os/ZygoteInit.java
+++ b/core/java/com/android/internal/os/ZygoteInit.java
@@ -98,6 +98,10 @@ public class ZygoteInit {
private static final String SOCKET_NAME_ARG = "--socket-name=";
+ /* Dexopt flag to disable hidden API access checks when dexopting SystemServer.
+ * Must be kept in sync with com.android.server.pm.Installer. */
+ private static final int DEXOPT_DISABLE_HIDDEN_API_CHECKS = 1 << 10;
+
/**
* Used to pre-load resources.
*/
@@ -565,7 +569,10 @@ public class ZygoteInit {
if (dexoptNeeded != DexFile.NO_DEXOPT_NEEDED) {
final String packageName = "*";
final String outputPath = null;
- final int dexFlags = 0;
+ // Dexopt with a flag which lifts restrictions on hidden API usage.
+ // Offending methods would otherwise be re-verified at runtime and
+ // we want to avoid the performance overhead of that.
+ final int dexFlags = DEXOPT_DISABLE_HIDDEN_API_CHECKS;
final String compilerFilter = systemServerFilter;
final String uuid = StorageManager.UUID_PRIVATE_INTERNAL;
final String seInfo = null;