Emit information about unreachable resources
Fixed: b/446112156
Change-Id: I34fa671d75aef2df5bc841fb4eb64f780c2e2555
diff --git a/src/resourceshrinker/java/com/android/build/shrinker/r8integration/R8ResourceShrinkerState.java b/src/resourceshrinker/java/com/android/build/shrinker/r8integration/R8ResourceShrinkerState.java
index 2b1762c..caf9406 100644
--- a/src/resourceshrinker/java/com/android/build/shrinker/r8integration/R8ResourceShrinkerState.java
+++ b/src/resourceshrinker/java/com/android/build/shrinker/r8integration/R8ResourceShrinkerState.java
@@ -259,7 +259,9 @@
ResourceStore resourceStore = r8ResourceShrinkerModel.getResourceStore();
resourceStore.processToolsAttributes();
ImmutableSet<String> resEntriesToKeep = getResEntriesToKeep(resourceStore);
- List<Integer> resourceIdsToRemove = getResourcesToRemove();
+ List<Resource> resourcesToRemove = getResourcesToRemove();
+ List<Integer> resourceIdsToRemove =
+ resourcesToRemove.stream().map(r -> r.value).collect(Collectors.toList());
Map<FeatureSplit, ResourceTable> shrunkenTables = new IdentityHashMap<>();
resourceTables.forEach(
@@ -275,6 +277,9 @@
+ " reachable from "
+ resourceStringEntry.getValue());
}
+ for (Resource resource : resourcesToRemove) {
+ shrinkerDebugReporter.debug(() -> resource.toString() + " is not reachable.");
+ }
return new ShrinkerResult(resEntriesToKeep, shrunkenTables, changedXmlFiles);
}
@@ -481,11 +486,10 @@
return resourceIdToXmlFiles;
}
- private List<Integer> getResourcesToRemove() {
+ private List<Resource> getResourcesToRemove() {
return r8ResourceShrinkerModel.getResourceStore().getResources().stream()
.filter(r -> !r.isReachable() && !r.isPublic())
.filter(r -> r.type != ResourceType.ID)
- .map(r -> r.value)
.collect(Collectors.toList());
}
diff --git a/src/test/testbase/java/com/android/tools/r8/androidresources/DebugConsumerUtils.java b/src/test/testbase/java/com/android/tools/r8/androidresources/DebugConsumerUtils.java
index fcb0070..9bd81b4 100644
--- a/src/test/testbase/java/com/android/tools/r8/androidresources/DebugConsumerUtils.java
+++ b/src/test/testbase/java/com/android/tools/r8/androidresources/DebugConsumerUtils.java
@@ -16,8 +16,12 @@
private static void ensureReachableOptimized(
List<String> logStrings, String type, String name, boolean reachable) {
- assertEquals(
- reachable, logStrings.stream().anyMatch(s -> s.startsWith(type + ":" + name + ":")));
+ assertTrue(
+ logStrings.stream()
+ .anyMatch(
+ s ->
+ s.contains(type + ":" + name + ":")
+ && s.contains(reachable ? "reachable from" : "is not reachable.")));
}
private static void ensureDexReachableResourcesState(