diff options
| author | 2019-01-24 10:19:23 +0000 | |
|---|---|---|
| committer | 2019-01-24 10:19:23 +0000 | |
| commit | 5b5f28b2724168c56d8864debd5163376ef0c9d5 (patch) | |
| tree | ec2f5ecab235c236da32e41419d732bdf1d44e72 | |
| parent | 6136239d9dbfdfd879e87543b0a3d7c76d29983d (diff) | |
| parent | f12af2f67d5a34f231f44fb444fe54283ff53203 (diff) | |
Merge "Skip dexopt if app has preferCodeIntegrity=true"
3 files changed, 10 insertions, 3 deletions
diff --git a/core/java/android/content/pm/ApplicationInfo.java b/core/java/android/content/pm/ApplicationInfo.java index 576466f21bcb..5d6d1444eaf3 100644 --- a/core/java/android/content/pm/ApplicationInfo.java +++ b/core/java/android/content/pm/ApplicationInfo.java @@ -1955,6 +1955,11 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { return (privateFlags & ApplicationInfo.PRIVATE_FLAG_PRODUCT_SERVICES) != 0; } + /** @hide */ + public boolean isCodeIntegrityPreferred() { + return (privateFlags & PRIVATE_FLAG_PREFER_CODE_INTEGRITY) != 0; + } + /** * Returns whether or not this application was installed as a virtual preload. */ diff --git a/services/core/java/com/android/server/am/ProcessList.java b/services/core/java/com/android/server/am/ProcessList.java index c69803965ac9..64ee30af2f39 100644 --- a/services/core/java/com/android/server/am/ProcessList.java +++ b/services/core/java/com/android/server/am/ProcessList.java @@ -1502,7 +1502,7 @@ public final class ProcessList { mService.mNativeDebuggingApp = null; } - if ((app.info.privateFlags & ApplicationInfo.PRIVATE_FLAG_PREFER_CODE_INTEGRITY) != 0 + if (app.info.isCodeIntegrityPreferred() || (app.info.isPrivilegedApp() && DexManager.isPackageSelectedToRunOob(app.pkgList.mPkgList.keySet()))) { runtimeFlags |= Zygote.ONLY_USE_SYSTEM_OAT_FILES; diff --git a/services/core/java/com/android/server/pm/PackageDexOptimizer.java b/services/core/java/com/android/server/pm/PackageDexOptimizer.java index 5412e9425adf..94b1b362f43a 100644 --- a/services/core/java/com/android/server/pm/PackageDexOptimizer.java +++ b/services/core/java/com/android/server/pm/PackageDexOptimizer.java @@ -506,8 +506,10 @@ public class PackageDexOptimizer { boolean isUsedByOtherApps) { int flags = info.flags; boolean vmSafeMode = (flags & ApplicationInfo.FLAG_VM_SAFE_MODE) != 0; - // When a priv app is configured to run out of box, only verify it. - if (info.isPrivilegedApp() && DexManager.isPackageSelectedToRunOob(info.packageName)) { + // When an app or priv app is configured to run out of box, only verify it. + if (info.isCodeIntegrityPreferred() + || (info.isPrivilegedApp() + && DexManager.isPackageSelectedToRunOob(info.packageName))) { return "verify"; } if (vmSafeMode) { |