in analyzer/src/main/java/com/android/tools/sizereduction/analyzer/model/Project.java [88:120]
private static boolean isOnDemand(File manifestFile) {
try (FileInputStream inputStream = new FileInputStream(manifestFile)) {
XMLInputFactory factory = XMLInputFactory.newInstance();
XMLEventReader eventReader = factory.createXMLEventReader(inputStream);
while (eventReader.hasNext() && !eventReader.peek().isEndDocument()) {
XMLEvent event = eventReader.nextTag();
if (event.isStartElement()) {
StartElement startElement = event.asStartElement();
if (startElement.getName().getNamespaceURI().equals(DIST_URI)
&& Ascii.equalsIgnoreCase(startElement.getName().getLocalPart(), "module")) {
Attribute onDemand = startElement.getAttributeByName(new QName(DIST_URI, "onDemand"));
if (onDemand != null) {
boolean isOnDemand =
onDemand.getValue().equals(VALUE_TRUE) || onDemand.getValue().equals(VALUE_1);
eventReader.close();
return isOnDemand;
}
}
} else if (event.isEndElement()
&& Ascii.equalsIgnoreCase(((EndElement) event).getName().getLocalPart(), "manifest")) {
break;
}
}
eventReader.close();
} catch (XMLStreamException | IOException e) {
System.out.println(
"Warning: Failed to parse android manifest " + manifestFile.getAbsolutePath());
// assume that it is not an onDemand project rather than throwing an exception.
}
return false;
}