Loading services/core/java/com/android/server/pm/Installer.java +2 −0 Original line number Diff line number Diff line Loading @@ -62,6 +62,8 @@ public class Installer extends SystemService { public static final int DEXOPT_IDLE_BACKGROUND_JOB = 1 << 9; /** Indicates that dexopt should restrict access to private APIs. */ public static final int DEXOPT_ENABLE_HIDDEN_API_CHECKS = 1 << 10; /** Indicates that dexopt should convert to CompactDex. */ public static final int DEXOPT_GENERATE_COMPACT_DEX = 1 << 11; // NOTE: keep in sync with installd public static final int FLAG_CLEAR_CACHE_ONLY = 1 << 8; Loading services/core/java/com/android/server/pm/PackageDexOptimizer.java +11 −0 Original line number Diff line number Diff line Loading @@ -57,6 +57,7 @@ import static com.android.server.pm.Installer.DEXOPT_STORAGE_CE; import static com.android.server.pm.Installer.DEXOPT_STORAGE_DE; import static com.android.server.pm.Installer.DEXOPT_IDLE_BACKGROUND_JOB; import static com.android.server.pm.Installer.DEXOPT_ENABLE_HIDDEN_API_CHECKS; import static com.android.server.pm.Installer.DEXOPT_GENERATE_COMPACT_DEX; import static com.android.server.pm.InstructionSets.getAppDexInstructionSets; import static com.android.server.pm.InstructionSets.getDexCodeInstructionSets; Loading Loading @@ -532,12 +533,22 @@ public class PackageDexOptimizer { // Some apps are executed with restrictions on hidden API usage. If this app is one // of them, pass a flag to dexopt to enable the same restrictions during compilation. int hiddenApiFlag = info.isAllowedToUseHiddenApi() ? 0 : DEXOPT_ENABLE_HIDDEN_API_CHECKS; // Enable CompactDex generation for modes that aren't latency critical. final int compilationReason = options.getCompilationReason(); boolean generateCompactDex = true; switch (compilationReason) { case PackageManagerService.REASON_FIRST_BOOT: case PackageManagerService.REASON_BOOT: case PackageManagerService.REASON_INSTALL: generateCompactDex = false; } int dexFlags = (isPublic ? DEXOPT_PUBLIC : 0) | (debuggable ? DEXOPT_DEBUGGABLE : 0) | profileFlag | (options.isBootComplete() ? DEXOPT_BOOTCOMPLETE : 0) | (options.isDexoptIdleBackgroundJob() ? DEXOPT_IDLE_BACKGROUND_JOB : 0) | (generateCompactDex ? DEXOPT_GENERATE_COMPACT_DEX : 0) | hiddenApiFlag; return adjustDexoptFlags(dexFlags); } Loading Loading
services/core/java/com/android/server/pm/Installer.java +2 −0 Original line number Diff line number Diff line Loading @@ -62,6 +62,8 @@ public class Installer extends SystemService { public static final int DEXOPT_IDLE_BACKGROUND_JOB = 1 << 9; /** Indicates that dexopt should restrict access to private APIs. */ public static final int DEXOPT_ENABLE_HIDDEN_API_CHECKS = 1 << 10; /** Indicates that dexopt should convert to CompactDex. */ public static final int DEXOPT_GENERATE_COMPACT_DEX = 1 << 11; // NOTE: keep in sync with installd public static final int FLAG_CLEAR_CACHE_ONLY = 1 << 8; Loading
services/core/java/com/android/server/pm/PackageDexOptimizer.java +11 −0 Original line number Diff line number Diff line Loading @@ -57,6 +57,7 @@ import static com.android.server.pm.Installer.DEXOPT_STORAGE_CE; import static com.android.server.pm.Installer.DEXOPT_STORAGE_DE; import static com.android.server.pm.Installer.DEXOPT_IDLE_BACKGROUND_JOB; import static com.android.server.pm.Installer.DEXOPT_ENABLE_HIDDEN_API_CHECKS; import static com.android.server.pm.Installer.DEXOPT_GENERATE_COMPACT_DEX; import static com.android.server.pm.InstructionSets.getAppDexInstructionSets; import static com.android.server.pm.InstructionSets.getDexCodeInstructionSets; Loading Loading @@ -532,12 +533,22 @@ public class PackageDexOptimizer { // Some apps are executed with restrictions on hidden API usage. If this app is one // of them, pass a flag to dexopt to enable the same restrictions during compilation. int hiddenApiFlag = info.isAllowedToUseHiddenApi() ? 0 : DEXOPT_ENABLE_HIDDEN_API_CHECKS; // Enable CompactDex generation for modes that aren't latency critical. final int compilationReason = options.getCompilationReason(); boolean generateCompactDex = true; switch (compilationReason) { case PackageManagerService.REASON_FIRST_BOOT: case PackageManagerService.REASON_BOOT: case PackageManagerService.REASON_INSTALL: generateCompactDex = false; } int dexFlags = (isPublic ? DEXOPT_PUBLIC : 0) | (debuggable ? DEXOPT_DEBUGGABLE : 0) | profileFlag | (options.isBootComplete() ? DEXOPT_BOOTCOMPLETE : 0) | (options.isDexoptIdleBackgroundJob() ? DEXOPT_IDLE_BACKGROUND_JOB : 0) | (generateCompactDex ? DEXOPT_GENERATE_COMPACT_DEX : 0) | hiddenApiFlag; return adjustDexoptFlags(dexFlags); } Loading