From 282c7f618af16c86f0055e10711547fa10ab32bb Mon Sep 17 00:00:00 2001 From: Googler Date: Thu, 31 Aug 2017 18:27:19 +0200 Subject: Changed Android manifest merger build action to also resolve relative class names in manifest files for Android libraries. RELNOTES: none PiperOrigin-RevId: 167147373 --- .../build/android/AndroidManifestProcessor.java | 11 ++++-- .../build/android/ManifestMergerAction.java | 42 ++++++++++------------ 2 files changed, 26 insertions(+), 27 deletions(-) (limited to 'src/tools/android/java/com') diff --git a/src/tools/android/java/com/google/devtools/build/android/AndroidManifestProcessor.java b/src/tools/android/java/com/google/devtools/build/android/AndroidManifestProcessor.java index cd9e6f8654..490d24587a 100644 --- a/src/tools/android/java/com/google/devtools/build/android/AndroidManifestProcessor.java +++ b/src/tools/android/java/com/google/devtools/build/android/AndroidManifestProcessor.java @@ -129,10 +129,10 @@ public class AndroidManifestProcessor { Map mergeeManifests, MergeType mergeType, Map values, + String customPackage, Path output, - Path logFile) - throws ManifestProcessingException { - if (mergeeManifests.isEmpty() && values.isEmpty()) { + Path logFile) throws ManifestProcessingException { + if (mergeeManifests.isEmpty() && values.isEmpty() && Strings.isNullOrEmpty(customPackage)) { return manifest; } @@ -172,6 +172,11 @@ public class AndroidManifestProcessor { placeholders.remove(PlaceholderHandler.PACKAGE_NAME); manifestMerger.setPlaceHolderValues(placeholders); + // Ignore custom package at the binary level. + if (!Strings.isNullOrEmpty(customPackage) && mergeType == MergeType.LIBRARY) { + manifestMerger.setOverride(SystemProperty.PACKAGE, customPackage); + } + try { MergingReport mergingReport = manifestMerger.merge(); diff --git a/src/tools/android/java/com/google/devtools/build/android/ManifestMergerAction.java b/src/tools/android/java/com/google/devtools/build/android/ManifestMergerAction.java index 43ef880af8..9a75d6510f 100644 --- a/src/tools/android/java/com/google/devtools/build/android/ManifestMergerAction.java +++ b/src/tools/android/java/com/google/devtools/build/android/ManifestMergerAction.java @@ -192,33 +192,27 @@ public class ManifestMergerAction { try { Path mergedManifest; AndroidManifestProcessor manifestProcessor = AndroidManifestProcessor.with(stdLogger); - if (options.mergeType == MergeType.APPLICATION) { - // Remove uses-permission tags from mergees before the merge. - Path tmp = Files.createTempDirectory("manifest_merge_tmp"); - tmp.toFile().deleteOnExit(); - ImmutableMap.Builder mergeeManifests = ImmutableMap.builder(); - for (Entry mergeeManifest : options.mergeeManifests.entrySet()) { - mergeeManifests.put( - removePermissions(mergeeManifest.getKey(), tmp), - mergeeManifest.getValue()); - } - // Ignore custom package at the binary level. - mergedManifest = - manifestProcessor.mergeManifest( - options.manifest, - mergeeManifests.build(), - options.mergeType, - options.manifestValues, - options.manifestOutput, - options.log); - } else { - // Only need to stamp custom package into the library level. - mergedManifest = - manifestProcessor.writeManifestPackage( - options.manifest, options.customPackage, options.manifestOutput); + // Remove uses-permission tags from mergees before the merge. + Path tmp = Files.createTempDirectory("manifest_merge_tmp"); + tmp.toFile().deleteOnExit(); + ImmutableMap.Builder mergeeManifests = ImmutableMap.builder(); + for (Entry mergeeManifest : options.mergeeManifests.entrySet()) { + mergeeManifests.put( + removePermissions(mergeeManifest.getKey(), tmp), + mergeeManifest.getValue()); } + mergedManifest = + manifestProcessor.mergeManifest( + options.manifest, + mergeeManifests.build(), + options.mergeType, + options.manifestValues, + options.customPackage, + options.manifestOutput, + options.log); + if (!mergedManifest.equals(options.manifestOutput)) { Files.copy(options.manifest, options.manifestOutput, StandardCopyOption.REPLACE_EXISTING); } -- cgit v1.2.3