diff options
author | Googler <noreply@google.com> | 2016-05-04 23:15:00 +0000 |
---|---|---|
committer | Kristina Chodorow <kchodorow@google.com> | 2016-05-05 19:10:24 +0000 |
commit | 88ccf0c9f490a5138719c3bb476b17eb1d8384e2 (patch) | |
tree | d5592d85c0f06d941b5f9dac26fccebf0190796f /src/tools/android/java/com | |
parent | 1f2cb5c56291efab2989e6a342898560ebef3fca (diff) |
[Android] Support aapt-generated main dex specs.
Add bazel support for using the "aapt -D" command to generate a proguard
specification for components which need to be in the main dex.
--
MOS_MIGRATED_REVID=121531584
Diffstat (limited to 'src/tools/android/java/com')
4 files changed, 21 insertions, 0 deletions
diff --git a/src/tools/android/java/com/google/devtools/build/android/AaptCommandBuilder.java b/src/tools/android/java/com/google/devtools/build/android/AaptCommandBuilder.java index 83591e73d5..d1f5a54dcb 100644 --- a/src/tools/android/java/com/google/devtools/build/android/AaptCommandBuilder.java +++ b/src/tools/android/java/com/google/devtools/build/android/AaptCommandBuilder.java @@ -83,6 +83,13 @@ class AaptCommandBuilder { return this; } + AaptCommandBuilder maybeAdd(String flag, @Nullable Path path, FullRevision requiredVersion) { + if (buildToolsVersion == null || buildToolsVersion.compareTo(requiredVersion) >= 0) { + add(flag, path); + } + return this; + } + AaptCommandBuilder maybeAdd(String flag, FullRevision requiredVersion) { if (buildToolsVersion == null || buildToolsVersion.compareTo(requiredVersion) >= 0) { add(flag); diff --git a/src/tools/android/java/com/google/devtools/build/android/AndroidResourceProcessingAction.java b/src/tools/android/java/com/google/devtools/build/android/AndroidResourceProcessingAction.java index ba8e557f62..29112c97ca 100644 --- a/src/tools/android/java/com/google/devtools/build/android/AndroidResourceProcessingAction.java +++ b/src/tools/android/java/com/google/devtools/build/android/AndroidResourceProcessingAction.java @@ -141,6 +141,13 @@ public class AndroidResourceProcessingAction { help = "Path for the proguard file.") public Path proguardOutput; + @Option(name = "mainDexProguardOutput", + defaultValue = "null", + converter = PathConverter.class, + category = "output", + help = "Path for the main dex proguard file.") + public Path mainDexProguardOutput; + @Option(name = "manifestOutput", defaultValue = "null", converter = PathConverter.class, @@ -285,6 +292,7 @@ public class AndroidResourceProcessingAction { generatedSources, options.packagePath, options.proguardOutput, + options.mainDexProguardOutput, options.resourcesOutput != null ? processedManifestData.getResourceDir().resolve("values").resolve("public.xml") : null); diff --git a/src/tools/android/java/com/google/devtools/build/android/AndroidResourceProcessor.java b/src/tools/android/java/com/google/devtools/build/android/AndroidResourceProcessor.java index 714970b75f..97eedb18d0 100644 --- a/src/tools/android/java/com/google/devtools/build/android/AndroidResourceProcessor.java +++ b/src/tools/android/java/com/google/devtools/build/android/AndroidResourceProcessor.java @@ -329,6 +329,7 @@ public class AndroidResourceProcessor { Path sourceOut, Path packageOut, Path proguardOut, + Path mainDexProguardOut, Path publicResourcesOut) throws IOException, InterruptedException, LoggedErrorException { List<SymbolFileProvider> libraries = new ArrayList<>(); @@ -370,6 +371,7 @@ public class AndroidResourceProcessor { .maybeAdd("--output-text-symbols", prepareOutputPath(sourceOut), sourceOut != null) .add("-F", packageOut) .add("-G", proguardOut) + .maybeAdd("-D", mainDexProguardOut, new FullRevision(24)) .add("-P", publicResourcesOut) .maybeAdd("--debug-mode", debug) .add("--custom-package", customPackageForR) @@ -398,6 +400,9 @@ public class AndroidResourceProcessor { if (proguardOut != null) { Files.setLastModifiedTime(proguardOut, FileTime.fromMillis(0L)); } + if (mainDexProguardOut != null) { + Files.setLastModifiedTime(mainDexProguardOut, FileTime.fromMillis(0L)); + } if (packageOut != null) { Files.setLastModifiedTime(packageOut, FileTime.fromMillis(0L)); } diff --git a/src/tools/android/java/com/google/devtools/build/android/ResourceShrinkerAction.java b/src/tools/android/java/com/google/devtools/build/android/ResourceShrinkerAction.java index d5b9774bf3..86ae74d81d 100644 --- a/src/tools/android/java/com/google/devtools/build/android/ResourceShrinkerAction.java +++ b/src/tools/android/java/com/google/devtools/build/android/ResourceShrinkerAction.java @@ -217,6 +217,7 @@ public class ResourceShrinkerAction { null /* sourceOutputDir */, options.shrunkApk, null /* proguardOutput */, + null /* mainDexProguardOutput */, null /* publicResourcesOut */); if (options.shrunkResources != null) { resourceProcessor.createResourcesZip(shrunkResources, resourceFiles.resolve("assets"), |