Merge "Revert "Consistently use either "boot" or "apex" boot image as the default.""
diff --git a/java/dexpreopt.go b/java/dexpreopt.go
index 1192d92..479dec6 100644
--- a/java/dexpreopt.go
+++ b/java/dexpreopt.go
@@ -101,6 +101,10 @@
global := dexpreoptGlobalConfig(ctx)
bootImage := defaultBootImageConfig(ctx)
+ defaultBootImage := bootImage
+ if global.UseApexImage {
+ bootImage = apexBootImageConfig(ctx)
+ }
var archs []android.ArchType
for _, a := range ctx.MultiTargets() {
@@ -170,8 +174,11 @@
DexPreoptImagesDeps: imagesDeps,
DexPreoptImageLocations: bootImage.imageLocations,
- PreoptBootClassPathDexFiles: bootImage.dexPathsDeps.Paths(),
- PreoptBootClassPathDexLocations: bootImage.dexLocationsDeps,
+ // We use the dex paths and dex locations of the default boot image, as it
+ // contains the full dexpreopt boot classpath. Other images may just contain a subset of
+ // the dexpreopt boot classpath.
+ PreoptBootClassPathDexFiles: defaultBootImage.dexPathsDeps.Paths(),
+ PreoptBootClassPathDexLocations: defaultBootImage.dexLocationsDeps,
PreoptExtractedApk: false,
diff --git a/java/dexpreopt_bootjars.go b/java/dexpreopt_bootjars.go
index 5714531..1d363c9 100644
--- a/java/dexpreopt_bootjars.go
+++ b/java/dexpreopt_bootjars.go
@@ -220,19 +220,16 @@
return
}
- // Default boot image is either the framework one, or the JIT-zygote one.
- // The boot image that is created first is used to get a unique profile rule for all images.
- if global.GenerateApexImage {
- d.defaultBootImage = buildBootImage(ctx, apexBootImageConfig(ctx))
- d.otherImages = append(d.otherImages, buildBootImage(ctx, frameworkBootImageConfig(ctx)))
- } else {
- d.defaultBootImage = buildBootImage(ctx, frameworkBootImageConfig(ctx))
- }
-
- // Create the ART boot image.
+ // Always create the default boot image first, to get a unique profile rule for all images.
+ d.defaultBootImage = buildBootImage(ctx, defaultBootImageConfig(ctx))
if !skipDexpreoptArtBootJars(ctx) {
+ // Create boot image for the ART apex (build artifacts are accessed via the global boot image config).
d.otherImages = append(d.otherImages, buildBootImage(ctx, artBootImageConfig(ctx)))
}
+ if global.GenerateApexImage {
+ // Create boot images for the JIT-zygote experiment.
+ d.otherImages = append(d.otherImages, buildBootImage(ctx, apexBootImageConfig(ctx)))
+ }
dumpOatRules(ctx, d.defaultBootImage)
}
diff --git a/java/dexpreopt_config.go b/java/dexpreopt_config.go
index d578b67..91e0dfb 100644
--- a/java/dexpreopt_config.go
+++ b/java/dexpreopt_config.go
@@ -234,7 +234,7 @@
return *genBootImageConfigs(ctx)[artBootImageName]
}
-func frameworkBootImageConfig(ctx android.PathContext) bootImageConfig {
+func defaultBootImageConfig(ctx android.PathContext) bootImageConfig {
return *genBootImageConfigs(ctx)[frameworkBootImageName]
}
@@ -242,14 +242,6 @@
return *genBootImageConfigs(ctx)[apexBootImageName]
}
-func defaultBootImageConfig(ctx android.PathContext) bootImageConfig {
- if dexpreoptGlobalConfig(ctx).UseApexImage {
- return apexBootImageConfig(ctx)
- } else {
- return frameworkBootImageConfig(ctx)
- }
-}
-
func defaultBootclasspath(ctx android.PathContext) []string {
return ctx.Config().OnceStringSlice(defaultBootclasspathKey, func() []string {
global := dexpreoptGlobalConfig(ctx)