From 40139d6422114672770fc9051c346f8f1aba79d9 Mon Sep 17 00:00:00 2001 From: Vladimir Marko Date: Thu, 6 Feb 2020 15:14:29 +0000 Subject: [PATCH] Support dexpreopt against the primary boot image. Framework and other dex files are used without image. Test: taimen-userdebug boots when built with DEXPREOPT_USE_ART_IMAGE=true Test: Check logcat for checksum verification failures. (Build ART with extra logging in OatFileAssistant.) Test: Check that bootclasspath-checksums from some prebuilt oat files (say input.odex) contain only one image checksum followed by dex file checksums with grep -az -A1 -E '^bootclasspath-checksums$' | \ xargs -0 echo | gawk '{print $2}' Bug: 119800099 Change-Id: I65c2f247656e41f2c37df1ecb9e06af7dabab76e --- dexpreopt/config.go | 2 ++ java/dexpreopt.go | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/dexpreopt/config.go b/dexpreopt/config.go index 2a929c536..720f79e28 100644 --- a/dexpreopt/config.go +++ b/dexpreopt/config.go @@ -30,6 +30,8 @@ type GlobalConfig struct { OnlyPreoptBootImageAndSystemServer bool // only preopt jars in the boot image or system server + UseArtImage bool // use the art image (use other boot class path dex files without image) + GenerateApexImage bool // generate an extra boot image only containing jars from the runtime apex UseApexImage bool // use the apex image by default diff --git a/java/dexpreopt.go b/java/dexpreopt.go index da6866031..5faec0817 100644 --- a/java/dexpreopt.go +++ b/java/dexpreopt.go @@ -106,8 +106,18 @@ func (d *dexpreopter) dexpreopt(ctx android.ModuleContext, dexJarFile android.Mo global := dexpreoptGlobalConfig(ctx) bootImage := defaultBootImageConfig(ctx) + dexFiles := bootImage.dexPathsDeps.Paths() + dexLocations := bootImage.dexLocationsDeps + if global.UseArtImage { + bootImage = artBootImageConfig(ctx) + } if global.UseApexImage { bootImage = frameworkJZBootImageConfig(ctx) + dexFiles = bootImage.dexPathsDeps.Paths() + dexLocations = bootImage.dexLocationsDeps + if global.UseArtImage { + bootImage = artJZBootImageConfig(ctx) + } } var archs []android.ArchType @@ -178,8 +188,8 @@ func (d *dexpreopter) dexpreopt(ctx android.ModuleContext, dexJarFile android.Mo DexPreoptImagesDeps: imagesDeps, DexPreoptImageLocations: bootImage.imageLocations, - PreoptBootClassPathDexFiles: bootImage.dexPathsDeps.Paths(), - PreoptBootClassPathDexLocations: bootImage.dexLocationsDeps, + PreoptBootClassPathDexFiles: dexFiles, + PreoptBootClassPathDexLocations: dexLocations, PreoptExtractedApk: false,