Merge "Do not fully compiled debuggable apps"
am: b2f9798688
Change-Id: I3e2f62f6ff06379be9a399fb02ba7b2b50b41084
This commit is contained in:
@@ -508,13 +508,25 @@ public class PackageDexOptimizer {
|
|||||||
*/
|
*/
|
||||||
private String getRealCompilerFilter(ApplicationInfo info, String targetCompilerFilter,
|
private String getRealCompilerFilter(ApplicationInfo info, String targetCompilerFilter,
|
||||||
boolean isUsedByOtherApps) {
|
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.
|
// When a priv app is configured to run out of box, only verify it.
|
||||||
if (info.isPrivilegedApp() && DexManager.isPackageSelectedToRunOob(info.packageName)) {
|
if (info.isPrivilegedApp() && DexManager.isPackageSelectedToRunOob(info.packageName)) {
|
||||||
return "verify";
|
return "verify";
|
||||||
}
|
}
|
||||||
if (vmSafeMode) {
|
|
||||||
|
// We force vmSafeMode on debuggable apps as well:
|
||||||
|
// - the runtime ignores their compiled code
|
||||||
|
// - they generally have lots of methods that could make the compiler used run
|
||||||
|
// out of memory (b/130828957)
|
||||||
|
// Note that forcing the compiler filter here applies to all compilations (even if they
|
||||||
|
// are done via adb shell commands). That's ok because right now the runtime will ignore
|
||||||
|
// the compiled code anyway. The alternative would have been to update either
|
||||||
|
// PackageDexOptimizer#canOptimizePackage or PackageManagerService#getOptimizablePackages
|
||||||
|
// but that would have the downside of possibly producing a big odex files which would
|
||||||
|
// be ignored anyway.
|
||||||
|
boolean vmSafeModeOrDebuggable = ((info.flags & ApplicationInfo.FLAG_VM_SAFE_MODE) != 0)
|
||||||
|
|| ((info.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0);
|
||||||
|
|
||||||
|
if (vmSafeModeOrDebuggable) {
|
||||||
return getSafeModeCompilerFilter(targetCompilerFilter);
|
return getSafeModeCompilerFilter(targetCompilerFilter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user