diff options
author | Nicolas Geoffray <ngeoffray@google.com> | 2019-02-12 13:12:16 +0000 |
---|---|---|
committer | Nicolas Geoffray <ngeoffray@google.com> | 2019-02-13 11:59:20 +0000 |
commit | fa6e9ec003d733006be10978599f62869ef2c6bd (patch) | |
tree | a9160e6ec00d7c73f29c18de7f744a9149d9d19a /java | |
parent | 40e26a2a995dabed6129f774d84c6363c833f192 (diff) | |
download | android_build_soong-fa6e9ec003d733006be10978599f62869ef2c6bd.tar.gz android_build_soong-fa6e9ec003d733006be10978599f62869ef2c6bd.tar.bz2 android_build_soong-fa6e9ec003d733006be10978599f62869ef2c6bd.zip |
Revert "Revert "Never strip and store dex files uncompressed when they are preopted on system.""
This reverts commit 67e8ec1973700bbdbc4cd68b3493d56d270ca377.
Test: build && atest android.text.cts.EmojiTest#testEmojiGlyphWebView on Cuttlefish
Exempt-From-Owner-Approval: Got +2 from Colin, latest PS is a rebase across conflicts.
Change-Id: I99faf0f2ec698d70c107516bd43756b9ddcb90d0
Diffstat (limited to 'java')
-rw-r--r-- | java/app.go | 17 | ||||
-rw-r--r-- | java/dexpreopt.go | 19 | ||||
-rw-r--r-- | java/java.go | 17 |
3 files changed, 38 insertions, 15 deletions
diff --git a/java/app.go b/java/app.go index 96975828..05d1927d 100644 --- a/java/app.go +++ b/java/app.go @@ -171,9 +171,18 @@ func (a *AndroidApp) shouldUncompressDex(ctx android.ModuleContext) bool { } // Uncompress dex in APKs of privileged apps, and modules used by privileged apps. - return ctx.Config().UncompressPrivAppDex() && + if ctx.Config().UncompressPrivAppDex() && (Bool(a.appProperties.Privileged) || - inList(ctx.ModuleName(), ctx.Config().ModulesLoadedByPrivilegedModules())) + inList(ctx.ModuleName(), ctx.Config().ModulesLoadedByPrivilegedModules())) { + return true + } + + // Uncompress if the dex files is preopted on /system. + if !a.dexpreopter.dexpreoptDisabled(ctx) && (ctx.Host() || !odexOnSystemOther(ctx, a.dexpreopter.installPath)) { + return true + } + + return false } func (a *AndroidApp) aaptBuildActions(ctx android.ModuleContext) { @@ -232,7 +241,6 @@ func (a *AndroidApp) proguardBuildActions(ctx android.ModuleContext) { } func (a *AndroidApp) dexBuildActions(ctx android.ModuleContext) android.Path { - a.deviceProperties.UncompressDex = a.shouldUncompressDex(ctx) var installDir string if ctx.ModuleName() == "framework-res" { @@ -244,6 +252,9 @@ func (a *AndroidApp) dexBuildActions(ctx android.ModuleContext) android.Path { installDir = filepath.Join("app", a.installApkName) } a.dexpreopter.installPath = android.PathForModuleInstall(ctx, installDir, a.installApkName+".apk") + a.dexpreopter.isInstallable = Bool(a.properties.Installable) + a.dexpreopter.uncompressedDex = a.shouldUncompressDex(ctx) + a.deviceProperties.UncompressDex = a.dexpreopter.uncompressedDex if ctx.ModuleName() != "framework-res" { a.Module.compile(ctx, a.aaptSrcJar) diff --git a/java/dexpreopt.go b/java/dexpreopt.go index cb6427b8..a89731ac 100644 --- a/java/dexpreopt.go +++ b/java/dexpreopt.go @@ -83,11 +83,7 @@ func (d *dexpreopter) dexpreoptDisabled(ctx android.ModuleContext) bool { var dexpreoptGlobalConfigKey = android.NewOnceKey("DexpreoptGlobalConfig") -func (d *dexpreopter) dexpreopt(ctx android.ModuleContext, dexJarFile android.ModuleOutPath) android.ModuleOutPath { - if d.dexpreoptDisabled(ctx) { - return dexJarFile - } - +func getGlobalConfig(ctx android.ModuleContext) dexpreopt.GlobalConfig { globalConfig := ctx.Config().Once(dexpreoptGlobalConfigKey, func() interface{} { if f := ctx.Config().DexpreoptGlobalConfig(); f != "" { ctx.AddNinjaFileDeps(f) @@ -99,6 +95,19 @@ func (d *dexpreopter) dexpreopt(ctx android.ModuleContext, dexJarFile android.Mo } return dexpreopt.GlobalConfig{} }).(dexpreopt.GlobalConfig) + return globalConfig +} + +func odexOnSystemOther(ctx android.ModuleContext, installPath android.OutputPath) bool { + return dexpreopt.OdexOnSystemOtherByName(ctx.ModuleName(), android.InstallPathToOnDevicePath(ctx, installPath), getGlobalConfig(ctx)) +} + +func (d *dexpreopter) dexpreopt(ctx android.ModuleContext, dexJarFile android.ModuleOutPath) android.ModuleOutPath { + if d.dexpreoptDisabled(ctx) { + return dexJarFile + } + + globalConfig := getGlobalConfig(ctx) var archs []android.ArchType for _, a := range ctx.MultiTargets() { diff --git a/java/java.go b/java/java.go index 2c7c1f63..76b41ca9 100644 --- a/java/java.go +++ b/java/java.go @@ -1239,8 +1239,6 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars ...android.Path j.dexJarFile = dexOutputFile // Dexpreopting - j.dexpreopter.isInstallable = Bool(j.properties.Installable) - j.dexpreopter.uncompressedDex = j.deviceProperties.UncompressDex dexOutputFile = j.dexpreopt(ctx, dexOutputFile) j.maybeStrippedDexJarFile = dexOutputFile @@ -1417,10 +1415,13 @@ type Library struct { } func (j *Library) shouldUncompressDex(ctx android.ModuleContext) bool { - // Store uncompressed (and do not strip) dex files from boot class path jars that are - // in an apex. - if inList(ctx.ModuleName(), ctx.Config().BootJars()) && - android.DirectlyInAnyApex(ctx, ctx.ModuleName()) { + // Store uncompressed (and do not strip) dex files from boot class path jars. + if inList(ctx.ModuleName(), ctx.Config().BootJars()) { + return true + } + + // Store uncompressed dex files that are preopted on /system. + if !j.dexpreopter.dexpreoptDisabled(ctx) && (ctx.Host() || !odexOnSystemOther(ctx, j.dexpreopter.installPath)) { return true } if ctx.Config().UncompressPrivAppDex() && @@ -1434,7 +1435,9 @@ func (j *Library) shouldUncompressDex(ctx android.ModuleContext) bool { func (j *Library) GenerateAndroidBuildActions(ctx android.ModuleContext) { j.dexpreopter.installPath = android.PathForModuleInstall(ctx, "framework", ctx.ModuleName()+".jar") j.dexpreopter.isSDKLibrary = j.deviceProperties.IsSDKLibrary - j.deviceProperties.UncompressDex = j.shouldUncompressDex(ctx) + j.dexpreopter.isInstallable = Bool(j.properties.Installable) + j.dexpreopter.uncompressedDex = j.shouldUncompressDex(ctx) + j.deviceProperties.UncompressDex = j.dexpreopter.uncompressedDex j.compile(ctx) if (Bool(j.properties.Installable) || ctx.Host()) && !android.DirectlyInAnyApex(ctx, ctx.ModuleName()) { |