aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/tools/android/java/com
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2017-08-31 18:27:19 +0200
committerGravatar Vladimir Moskva <vladmos@google.com>2017-09-01 12:27:12 +0200
commit282c7f618af16c86f0055e10711547fa10ab32bb (patch)
tree2f714aa430c087f02bead5ef46c5a20a56cc9e0c /src/tools/android/java/com
parent59141a8fc0f1016f5d1676f6c53e896490343570 (diff)
Changed Android manifest merger build action to also resolve relative class names in manifest files for Android libraries.
RELNOTES: none PiperOrigin-RevId: 167147373
Diffstat (limited to 'src/tools/android/java/com')
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/AndroidManifestProcessor.java11
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/ManifestMergerAction.java42
2 files changed, 26 insertions, 27 deletions
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<Path, String> mergeeManifests,
MergeType mergeType,
Map<String, String> 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<Path, String> mergeeManifests = ImmutableMap.builder();
- for (Entry<Path, String> 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<Path, String> mergeeManifests = ImmutableMap.builder();
+ for (Entry<Path, String> 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);
}