diff options
author | 2017-12-28 12:23:20 -0800 | |
---|---|---|
committer | 2018-01-03 14:15:57 -0800 | |
commit | 66dbc0bc32100d9696dd248018683128a1274016 (patch) | |
tree | 2e0886a1a8a90b7f3c5604d309e64c1e91c186ae /java/java.go | |
parent | 10d9930c065d8d12f300eed5b1ca58219a1910f4 (diff) |
Add R8 support
Add support for R8 to optimize apps and java libraries.
Test: m checkbuild
Change-Id: I2afd5d7a84912d3ab613c32c599bd1ebe60562e0
Diffstat (limited to 'java/java.go')
-rw-r--r-- | java/java.go | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/java/java.go b/java/java.go index f06d81d7a..106284e0c 100644 --- a/java/java.go +++ b/java/java.go @@ -191,6 +191,32 @@ type CompilerDeviceProperties struct { Profile *string } + Optimize struct { + // If false, disable all optimization. Defaults to true for apps, false for + // libraries and tests. + Enabled *bool + + // If true, optimize for size by removing unused code. Defaults to true for apps, + // false for libraries and tests. + Shrink *bool + + // If true, optimize bytecode. Defaults to false. + Optimize *bool + + // If true, obfuscate bytecode. Defaults to false. + Obfuscate *bool + + // If true, do not use the flag files generated by aapt that automatically keep + // classes referenced by the app manifest. Defaults to false. + No_aapt_flags *bool + + // Flags to pass to proguard. + Proguard_flags []string + + // Specifies the locations of files containing proguard flags. + Proguard_flags_files []string + } + // When targeting 1.9, override the modules to use with --system System_modules *string } @@ -216,6 +242,9 @@ type Module struct { // output file containing uninstrumented classes that will be instrumented by jacoco jacocoReportClassesFile android.Path + // output file containing mapping of obfuscated names + proguardDictionary android.Path + // output file suitable for installing or running outputFile android.Path @@ -229,6 +258,9 @@ type Module struct { // list of .java files and srcjars that was passed to javac compiledJavaSrcs android.Paths compiledSrcJars android.Paths + + // list of extra progurad flag files + extraProguardFlagFiles android.Paths } func (j *Module) Srcs() android.Paths { @@ -260,6 +292,7 @@ var ( systemModulesTag = dependencyTag{name: "system modules"} frameworkResTag = dependencyTag{name: "framework-res"} kotlinStdlibTag = dependencyTag{name: "kotlin-stdlib"} + proguardRaiseTag = dependencyTag{name: "proguard-raise"} ) type sdkDep struct { @@ -377,6 +410,10 @@ func (j *Module) deps(ctx android.BottomUpMutatorContext) { ctx.AddDependency(ctx.Module(), systemModulesTag, sdkDep.systemModules) } ctx.AddDependency(ctx.Module(), bootClasspathTag, sdkDep.module) + if Bool(j.deviceProperties.Optimize.Enabled) { + ctx.AddDependency(ctx.Module(), proguardRaiseTag, config.DefaultBootclasspathLibraries...) + ctx.AddDependency(ctx.Module(), proguardRaiseTag, config.DefaultLibraries...) + } } } else if j.deviceProperties.System_modules == nil { ctx.PropertyErrorf("no_standard_libs", |