Allow public profile compilation for primary apks

It is ok to perform a "public" compilation with
profiles comming from dex metdata files.

Test: adb install foo.apk foo.dm
Bug: 30934496
Change-Id: I1d15e3281ccc61b19a2aafe3c885285a83ff6115
This commit is contained in:
Calin Juravle
2018-02-01 17:23:13 +00:00
parent cc65194e8e
commit ff3e4a1b2f

View File

@@ -520,9 +520,13 @@ public class PackageDexOptimizer {
private int getDexFlags(ApplicationInfo info, String compilerFilter, DexoptOptions options) {
int flags = info.flags;
boolean debuggable = (flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0;
// Profile guide compiled oat files should not be public.
// Profile guide compiled oat files should not be public unles they are based
// on profiles from dex metadata archives.
// The flag isDexoptInstallWithDexMetadata applies only on installs when we know that
// the user does not have an existing profile.
boolean isProfileGuidedFilter = isProfileGuidedCompilerFilter(compilerFilter);
boolean isPublic = !info.isForwardLocked() && !isProfileGuidedFilter;
boolean isPublic = !info.isForwardLocked() &&
(!isProfileGuidedFilter || options.isDexoptInstallWithDexMetadata());
int profileFlag = isProfileGuidedFilter ? DEXOPT_PROFILE_GUIDED : 0;
// System apps are invoked with a runtime flag which exempts them from
// restrictions on hidden API usage. We dexopt with the same runtime flag