aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/tools/android/java/com
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2016-05-04 23:15:00 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2016-05-05 19:10:24 +0000
commit88ccf0c9f490a5138719c3bb476b17eb1d8384e2 (patch)
treed5592d85c0f06d941b5f9dac26fccebf0190796f /src/tools/android/java/com
parent1f2cb5c56291efab2989e6a342898560ebef3fca (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')
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/AaptCommandBuilder.java7
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/AndroidResourceProcessingAction.java8
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/AndroidResourceProcessor.java5
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/ResourceShrinkerAction.java1
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"),