diff options
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java | 7 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeployInfoAction.java | 34 |
2 files changed, 26 insertions, 15 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java index 350317923a..ebec97f3c9 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java @@ -580,18 +580,19 @@ public abstract class AndroidBinary implements RuleConfiguredTargetFactory { filesBuilder.add(zipAlignedApk); NestedSet<Artifact> filesToBuild = filesBuilder.build(); - Iterable<Artifact> dataDeps = ImmutableList.of(); + ImmutableList<Artifact> dataDeps = ImmutableList.of(); if (ruleContext.attributes().has("data", BuildType.LABEL_LIST) && ruleContext.getAttributeMode("data") == Mode.DATA) { dataDeps = ruleContext.getPrerequisiteArtifacts("data", Mode.DATA).list(); } Artifact deployInfo = ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.DEPLOY_INFO); - AndroidDeployInfoAction.createDeployInfoAction(ruleContext, + AndroidDeployInfoAction.createDeployInfoAction( + ruleContext, deployInfo, resourceApk.getManifest(), additionalMergedManifests, - Iterables.concat(ImmutableList.of(zipAlignedApk), apksUnderTest), + ImmutableList.<Artifact>builder().add(zipAlignedApk).addAll(apksUnderTest).build(), dataDeps); RuleConfiguredTargetBuilder builder = diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeployInfoAction.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeployInfoAction.java index ba4b09dcaf..91d6fcb21c 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeployInfoAction.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDeployInfoAction.java @@ -54,17 +54,28 @@ public final class AndroidDeployInfoAction extends AbstractFileWriteAction { } private static final String GUID = "eda283ba-9000-4b80-8dc4-7939101c44ba"; - private final ByteString byteString; + + private final Artifact mergedManifest; + private final ImmutableList<Artifact> additionalMergedManifests; + private final ImmutableList<Artifact> apksToDeploy; + private final ImmutableList<Artifact> dataDeps; AndroidDeployInfoAction( ActionOwner owner, Artifact outputFile, Artifact mergedManifest, - Iterable<Artifact> additionalMergedManifests, - Iterable<Artifact> apksToDeploy, - Iterable<Artifact> dataDeps) { + ImmutableList<Artifact> additionalMergedManifests, + ImmutableList<Artifact> apksToDeploy, + ImmutableList<Artifact> dataDeps) { super(owner, makeInputs(mergedManifest, additionalMergedManifests, apksToDeploy, dataDeps), outputFile, false); + this.mergedManifest = mergedManifest; + this.additionalMergedManifests = additionalMergedManifests; + this.apksToDeploy = apksToDeploy; + this.dataDeps = dataDeps; + } + + private ByteString getByteString() { AndroidDeployInfoOuterClass.AndroidDeployInfo.Builder builder = AndroidDeployInfoOuterClass.AndroidDeployInfo.newBuilder(); builder.setMergedManifest(makeArtifactProto(mergedManifest)); @@ -77,16 +88,16 @@ public final class AndroidDeployInfoAction extends AbstractFileWriteAction { for (Artifact dataDep : dataDeps) { builder.addDataToDeploy(makeArtifactProto(dataDep)); } - this.byteString = builder.build().toByteString(); + return builder.build().toByteString(); } static void createDeployInfoAction( RuleContext ruleContext, Artifact deployInfo, Artifact mergedManifest, - Iterable<Artifact> additionalMergedManifests, - Iterable<Artifact> apksToDeploy, - Iterable<Artifact> dataDeps) { + ImmutableList<Artifact> additionalMergedManifests, + ImmutableList<Artifact> apksToDeploy, + ImmutableList<Artifact> dataDeps) { Action action = new AndroidDeployInfoAction(ruleContext.getActionOwner(), deployInfo, mergedManifest, additionalMergedManifests, apksToDeploy, dataDeps); ruleContext.registerAction(action); @@ -94,12 +105,12 @@ public final class AndroidDeployInfoAction extends AbstractFileWriteAction { @Override public DeterministicWriter newDeterministicWriter(ActionExecutionContext ctx) throws IOException { - return new ByteStringDeterministicWriter(byteString); + return new ByteStringDeterministicWriter(getByteString()); } @VisibleForTesting public AndroidDeployInfo getDeployInfo() throws InvalidProtocolBufferException { - return AndroidDeployInfo.parseFrom(byteString); + return AndroidDeployInfo.parseFrom(getByteString()); } @Override @@ -107,7 +118,7 @@ public final class AndroidDeployInfoAction extends AbstractFileWriteAction { Fingerprint f = new Fingerprint() .addString(GUID); - try (InputStream in = byteString.newInput()) { + try (InputStream in = getByteString().newInput()) { byte[] buffer = new byte[512]; int amountRead; while ((amountRead = in.read(buffer)) != -1) { @@ -116,7 +127,6 @@ public final class AndroidDeployInfoAction extends AbstractFileWriteAction { } catch (IOException e) { throw new RuntimeException(e); } - return f.hexDigestAndReset(); } |